From 0db694e3e34a3a23efa424d552480b71101335dd Mon Sep 17 00:00:00 2001 From: Mikhail S Date: Fri, 3 Nov 2023 23:39:28 +0300 Subject: [PATCH] fix archetype --- contracts/nova/Nova.sol | 13 +- out/AllowList.t.sol/AllowListT.json | 2474 ++--- out/AutID.sol/AutID.json | 232 +- out/BatchAdminAdd.t.sol/MembershipSets.json | 1844 ++-- out/DAOExpander.sol/DAOExpander.json | 2236 ++-- .../DAOExpanderFactory.json | 414 +- out/DeployAll.s.sol/DeployScript.json | 3733 ++++--- out/DeploysInit.t.sol/DeploysInit.json | 2848 ++--- .../INovaMembershipSet.json | 76 +- out/MultiPluginLR.t.sol/MultiPluginLR.json | 4542 ++++---- out/Nova.sol/Nova.json | 2295 ++-- out/NovaMembers.sol/NovaMembers.json | 1564 +-- out/NovaRegistry.sol/NovaRegistry.json | 2372 +++-- .../TestQuestPlugin.json | 1488 +-- .../TestSampleInteractionPlugin.json | 9440 +++++++++-------- out/SocialBot.t.sol/TestSocialBotPlugin.json | 3398 +++--- out/TestLRFormula.t.sol/TestLRFuzz.json | 1118 +- out/TestModuleLess.t.sol/ModuleSkipTemp.json | 1812 ++-- out/TestnetPopulate.s.sol/Populate.json | 3040 +++--- 19 files changed, 23198 insertions(+), 21741 deletions(-) diff --git a/contracts/nova/Nova.sol b/contracts/nova/Nova.sol index f64bbe8d..3f9390b6 100644 --- a/contracts/nova/Nova.sol +++ b/contracts/nova/Nova.sol @@ -6,6 +6,7 @@ import "../components/abstracts/NovaMarket.sol"; import "../components/abstracts/NovaMembers.sol"; import "../components/abstracts/NovaModules.sol"; import "../components/abstracts/NovaMetadata.sol"; +import "../components/abstracts/NovaArchetype.sol"; import "../components/abstracts/AutIDAddress.sol"; import "../components/abstracts/NovaCommitment.sol"; import "./NovaUpgradeable.sol"; @@ -16,7 +17,7 @@ import "./interfaces/INova.sol"; /// @title Nova /// @notice /// @dev -contract Nova is NovaUpgradeable, NovaMembers, NovaMetadata, NovaUrls, NovaMarket, NovaModules, NovaCommitment { +contract Nova is NovaUpgradeable, NovaMembers, NovaMetadata, NovaUrls, NovaMarket, NovaModules, NovaCommitment, NovaArchetype { uint256[50] private __basesGap; address public deployer; @@ -84,6 +85,16 @@ contract Nova is NovaUpgradeable, NovaMembers, NovaMetadata, NovaUrls, NovaMarke _setCommitment(commitment); } + /// @dev set an archetype (for example, Growth or Performance) + function setArchetype(uint8 parameter) external onlyAdmin { + _setArchetype(parameter); + } + + /// @dev set weight for the parameter (for example, Growth or Size) + function setWeightFor(uint8 parameter, uint256 value) external onlyAdmin { + _setWeightFor(parameter, value); + } + function canJoin(address member, uint256 role) external view returns (bool) { if (onboardingAddr == address(0)) return true; if (onboardingAddr != address(0) && !OnboardingModule(onboardingAddr).isActive()) return false; diff --git a/out/AllowList.t.sol/AllowListT.json b/out/AllowList.t.sol/AllowListT.json index 134ce32d..5e523b40 100644 --- a/out/AllowList.t.sol/AllowListT.json +++ b/out/AllowList.t.sol/AllowListT.json @@ -566,13 +566,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b5062013a8480620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806366d9a9a0146200017057806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c5780635702210c146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b62000121620008cd565b6040516200013091906200352d565b60405180910390f35b6200014362000931565b604051620001309190620035d0565b6200012162000a7f565b6200012162000ae1565b6200010b62000b43565b6200017a6200224e565b60405162000130919062003696565b6200019362002338565b6040516200013091906200374d565b6200017a62002412565b62000193620024fc565b620001c0620025d6565b604051901515815260200162000130565b6200012162002703565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062002765565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062002765565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062002765565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062002765565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062002765565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620037b3565b6001600160a01b03161460405180606001604052806028815260200162013a276028913962002765565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b9190620037e5565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002765565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620037b3565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002765565b565b62000587620027b3565b60235460255460405163974b152160e01b81526001600160a01b0391821660048201526200063392919091169063974b152190602401602060405180830381865afa158015620005db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006019190620037e5565b6040518060400160405280601381526020017230b9b9bab6b2b21020981034b99037bbb732b960691b81525062002765565b602c80546001600160a01b0319166ff42d60276dc5999a71cc727b1580ee20908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152673737ba27bbb732b960c11b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b158015620006c057600080fd5b505af1158015620006d5573d6000803e3d6000fd5b5050602d80546001600160a01b0319166f04db850b5e486a6000c620e3762b688b908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152683737ba27bbb732b91960b91b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200076757600080fd5b505af11580156200077c573d6000803e3d6000fd5b5050602e80546001600160a01b031916714a35bbee1b6250dc55a0438a2656f13fa463908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152686e6f744f776e65723360b81b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200081057600080fd5b505af115801562000825573d6000803e3d6000fd5b5050602f80546001600160a01b0319166a0a993c58dadd49644e6e5a908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152681b9bdd13dddb995c8d60ba1b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b158015620008b257600080fd5b505af1158015620008c7573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200092757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000908575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000a7657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000a5e578382906000526020600020018054620009ca9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620009f89062003809565b801562000a495780601f1062000a1d5761010080835404028352916020019162000a49565b820191906000526020600020905b81548152906001019060200180831162000a2b57829003601f168201915b505050505081526020019060010190620009a8565b50505050815250508152602001906001019062000955565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b602354602c5460405163974b152160e01b81526001600160a01b03918216600482015262000bea92919091169063974b152190602401602060405180830381865afa15801562000b97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bbd9190620037e5565b6040518060400160405280600e81526020016d3930b732379034b99037bbb732b960911b8152506200332c565b602354602d5460405163745d6bff60e01b81526001600160a01b03918216600482015262000c9292919091169063745d6bff90602401602060405180830381865afa15801562000c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c649190620037e5565b6040518060400160405280600f81526020016e72616e646f2063616e20616c6c6f7760881b8152506200332c565b604051630618f58760e51b815263e087598d60e01b6004820152600080516020620139e78339815191529063c31eb0e090602401600060405180830381600087803b15801562000ce157600080fd5b505af115801562000cf6573d6000803e3d6000fd5b5050602c5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000d4f57600080fd5b505af115801562000d64573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000db257600080fd5b505af115801562000dc7573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e1957600080fd5b505af115801562000e2e573d6000803e3d6000fd5b5050602d5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e8757600080fd5b505af115801562000e9c573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f5857600080fd5b505af115801562000f6d573d6000803e3d6000fd5b5050602354602c54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000fbb57600080fd5b505af115801562000fd0573d6000803e3d6000fd5b5050602c546023546040516317aa5fb760e11b81526001600160a01b039283166004820181905294506200107d9350911690632f54bf6e90602401602060405180830381865afa15801562001029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104f9190620037e5565b6040518060400160405280600f81526020016e3930b73237903737bb9037bbb732b960891b81525062002765565b60235460405163974b152160e01b81526001600160a01b0383811660048301526200112092169063974b152190602401602060405180830381865afa158015620010cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010f19190620037e5565b6040518060400160405280601081526020016f1c985b991bc81a5cc8185b1b1bddd95960821b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b038381166004830152620011c492169063745d6bff90602401602060405180830381865afa1580156200116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011949190620037e5565b60405180604001604052806011815260200170657870656374656420706c7573206f6e6560781b81525062002765565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b1580156200121557600080fd5b505af11580156200122a573d6000803e3d6000fd5b5050602354602d54604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200127857600080fd5b505af11580156200128d573d6000803e3d6000fd5b5050602354602d546040516317aa5fb760e11b81526001600160a01b0391821660048201526200133b945091169150632f54bf6e90602401602060405180830381865afa158015620012e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013099190620037e5565b604051806040016040528060138152602001723ab732bc3832b1ba32b21030b99037bbb2b73960691b8152506200332c565b602354602d5460405163f31264bb60e01b81526001600160a01b039182166004820152620013f492600092169063f31264bb90602401602060405180830381865afa1580156200138f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b59190620037b3565b6001600160a01b0316146040518060400160405280601681526020017532bc3832b1ba32b2103737ba1030b63637bbb2b2101960511b81525062002765565b602354602d5460405163745d6bff60e01b81526001600160a01b0391821660048201526200149b92919091169063745d6bff90602401602060405180830381865afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e9190620037e5565b6040518060400160405280600e81526020016d6973206e6f7420706c75736f6e6560901b81525062002765565b6040805160028082526060820183526000926020830190803683375050602e5482519293506001600160a01b031691839150600090620014df57620014df62003845565b6001600160a01b039283166020918202929092010152602f5482519116908290600190811062001513576200151362003845565b6001600160a01b039283166020918202929092010152602354602e546040516317aa5fb760e11b81529083166004820152620015c5929190911690632f54bf6e90602401602060405180830381865afa15801562001575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159b9190620037e5565b6040518060400160405280600b81526020016a6e6f74206f776e6572203360a81b8152506200332c565b602354602f5460405163974b152160e01b81526001600160a01b0391821660048201526200166b92919091169063974b152190602401602060405180830381865afa15801562001619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200163f9190620037e5565b6040518060400160405280600d81526020016c1b9bdd08185b1b1bddd959080d609a1b8152506200332c565b60008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620016b957600080fd5b505af1158015620016ce573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017049084906004016200352d565b600060405180830381600087803b1580156200171f57600080fd5b505af115801562001734573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200178d57600080fd5b505af1158015620017a2573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017d89084906004016200352d565b600060405180830381600087803b158015620017f357600080fd5b505af115801562001808573d6000803e3d6000fd5b5050602354602e5460405163974b152160e01b81526001600160a01b039182166004820152620018b094509116915063974b152190602401602060405180830381865afa1580156200185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018849190620037e5565b6040518060400160405280600d81526020016c6e6f7420616c6c6f776564203360981b8152506200332c565b602354602f5460405163babcc53960e01b81526001600160a01b0391821660048201526200196092919091169063babcc539906024015b602060405180830381865afa15801562001905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192b9190620037e5565b604051806040016040528060168152602001751a185cc81899595b8818985d18da08185b1b1bddd95960521b81525062002765565b602354602e5460405163babcc53960e01b81526001600160a01b0391821660048201526200199c92919091169063babcc53990602401620018e7565b602354602f5460405163f31264bb60e01b81526001600160a01b03918216600482015262001a4e92600092169063f31264bb90602401602060405180830381865afa158015620019f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a169190620037b3565b6001600160a01b0316146040518060400160405280600f81526020016e616c726561647920706c75736f6e6560881b81525062002765565b602354602f5460405163386ec69760e11b81526001600160a01b03918216600482015262001af69291909116906370dd8d2e90602401602060405180830381865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ac89190620037e5565b6040518060400160405280600f81526020016e1b9bdd08185b1b1bdddb1a5cdd1959608a1b81525062002765565b602354602f5460405163745d6bff60e01b81526001600160a01b03918216600482015262001b9d92919091169063745d6bff90602401602060405180830381865afa15801562001b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b709190620037e5565b6040518060400160405280600e81526020016d18d85b9b9bdd08185b1b1bddc80d60921b81525062002765565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526848c948741fafad092a90600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b15801562001bfd57600080fd5b505af115801562001c12573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001c5e57600080fd5b505af115801562001c73573d6000803e3d6000fd5b505060235460405163386ec69760e11b81526001600160a01b03858116600483015262001d21945090911691506370dd8d2e90602401602060405180830381865afa15801562001cc7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ced9190620037e5565b604051806040016040528060158152602001746e6f7420616c6c6f776c697374656420777574203160581b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b03838116600483015262001dc492169063745d6bff90602401602060405180830381865afa15801562001d6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d959190620037e5565b6040518060400160405280601081526020016f31b0b73737ba1038363ab9b7b732901960811b81525062002765565b6023546040516317aa5fb760e11b81526001600160a01b03838116600483015262001e61921690632f54bf6e90602401602060405180830381865afa15801562001e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e389190620037e5565b6040518060400160405280600a8152602001696e6f74206f766572203360b01b8152506200332c565b60235460405163babcc53960e01b815265156f4ba4a5c9600482018190529162001f0c916001600160a01b039091169063babcc53990602401602060405180830381865afa15801562001eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ede9190620037e5565b6040518060400160405280600f81526020016e185b1c9958591e48185b1b1bddd959608a1b8152506200332c565b60405163ca669fa760e01b81526001600160a01b0383166004820152600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b15801562001f5d57600080fd5b505af115801562001f72573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001fbe57600080fd5b505af115801562001fd3573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200202857600080fd5b505af11580156200203d573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200208f57600080fd5b505af1158015620020a4573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b158015620020f057600080fd5b505af115801562002105573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200215a57600080fd5b505af11580156200216f573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021c157600080fd5b505af1158015620021d6573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526e42c9f77e5548e94e0a5cc7f3ae728060048201526001600160a01b03909116925063f8e86ece9150602401600060405180830381600087803b1580156200222f57600080fd5b505af115801562002244573d6000803e3d6000fd5b5050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200231f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e05790505b5050505050815250508152602001906001019062002272565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000a765783829060005260206000200180546200237e9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620023ac9062003809565b8015620023fd5780601f10620023d157610100808354040283529160200191620023fd565b820191906000526020600020905b815481529060010190602001808311620023df57829003601f168201915b5050505050815260200190600101906200235c565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024e357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024a45790505b5050505050815250508152602001906001019062002436565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000a76578382906000526020600020018054620025429062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620025709062003809565b8015620025c15780601f106200259557610100808354040283529160200191620025c1565b820191906000526020600020905b815481529060010190602001808311620025a357829003601f168201915b50505050508152602001906001019062002520565b600754600090610100900460ff1615620025f95750600754610100900460ff1690565b6000600080516020620139e78339815191523b15620026fe5760408051600080516020620139e7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002680917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200385b565b60408051601f19818403018152908290526200269c916200388e565b6000604051808303816000865af19150503d8060008114620026db576040519150601f19603f3d011682016040523d82523d6000602084013e620026e0565b606091505b5091505080806020019051810190620026fa9190620037e5565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b81620027af577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200279c9190620038ac565b60405180910390a1620027af8262003339565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b1580156200284457600080fd5b505af115801562002859573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b158015620028ee57600080fd5b505af115801562002903573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200299857600080fd5b505af1158015620029ad573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002a4e57600080fd5b505af115801562002a63573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620139e783398151915292506306447d569150602401600060405180830381600087803b15801562002abc57600080fd5b505af115801562002ad1573d6000803e3d6000fd5b5050505060405162002ae390620034bd565b604051809103906000f08015801562002b00573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002b8a57600080fd5b505af115801562002b9f573d6000803e3d6000fd5b5050505060405162002bb190620034cb565b604051809103906000f08015801562002bce573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002c5757600080fd5b505af115801562002c6c573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002cba57600080fd5b505af115801562002ccf573d6000803e3d6000fd5b5050505060405162002ce190620034d9565b604051809103906000f08015801562002cfe573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002d8457600080fd5b505af115801562002d99573d6000803e3d6000fd5b5050505060405162002dab90620034e7565b604051809103906000f08015801562002dc8573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002e5257600080fd5b505af115801562002e67573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002e889150620034f5565b6001600160a01b039091168152602001604051809103906000f08015801562002eb5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002f4457600080fd5b505af115801562002f59573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002f7a915062003503565b6001600160a01b039091168152602001604051809103906000f08015801562002fa7573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b1580156200303657600080fd5b505af11580156200304b573d6000803e3d6000fd5b505050506040516200305d9062003511565b604051809103906000f0801580156200307a573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620030da57600080fd5b505af1158015620030ef573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062003120906200351f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003165573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b158015620031f257600080fd5b505af115801562003207573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562003283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a99190620037b3565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620139e7833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200331057600080fd5b505af115801562003325573d6000803e3d6000fd5b5050505050565b620027af82158262002765565b80620033b1577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200339f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620033b1620033b4565b50565b600080516020620139e78339815191523b15620034ac5760408051600080516020620139e7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200344792916020016200385b565b60408051601f198184030181529082905262003463916200388e565b6000604051808303816000865af19150503d8060008114620034a2576040519150601f19603f3d011682016040523d82523d6000602084013e620034a7565b606091505b505050505b6007805461ff001916610100179055565b61012080620038de83390190565b610c7280620039fe83390190565b613723806200467083390190565b6123c28062007d9383390190565b6110db806200a15583390190565b613043806200b23083390190565b6137d5806200e27383390190565b611f9f8062011a4883390190565b6020808252825182820181905260009190848201906040850190845b81811015620035705783516001600160a01b03168352928401929184019160010162003549565b50909695505050505050565b60005b83811015620035995781810151838201526020016200357f565b50506000910152565b60008151808452620035bc8160208601602086016200357c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200368657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200366f57605f198985030183526200365c848651620035a2565b948e01949350918d01916001016200363d565b505050978a019794505091880191600101620035f7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200373e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620037285783516001600160e01b0319168252928b019260019290920191908b0190620036fc565b50978a01979550505091870191600101620036be565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620037a657603f1988860301845262003793858351620035a2565b9450928501929085019060010162003774565b5092979650505050505050565b600060208284031215620037c657600080fd5b81516001600160a01b0381168114620037de57600080fd5b9392505050565b600060208284031215620037f857600080fd5b81518015158114620037de57600080fd5b600181811c908216806200381e57607f821691505b6020821081036200383f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319831681528151600090620038808160048501602087016200357c565b919091016004019392505050565b60008251620038a28184602087016200357c565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620037de6080830184620035a256fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220441626b5903130a88b981b2ab114654ff538b1385f047ec3a7adfc5c0853d88364736f6c63430008130033", - "sourceMap": "257:3511:112:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;257:3511:112;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b5062013c6580620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806366d9a9a0146200017057806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c5780635702210c146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b62000121620008cd565b6040516200013091906200352d565b60405180910390f35b6200014362000931565b604051620001309190620035d0565b6200012162000a7f565b6200012162000ae1565b6200010b62000b43565b6200017a6200224e565b60405162000130919062003696565b6200019362002338565b6040516200013091906200374d565b6200017a62002412565b62000193620024fc565b620001c0620025d6565b604051901515815260200162000130565b6200012162002703565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062002765565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062002765565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062002765565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062002765565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062002765565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620037b3565b6001600160a01b03161460405180606001604052806028815260200162013c086028913962002765565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b9190620037e5565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002765565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620037b3565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002765565b565b62000587620027b3565b60235460255460405163974b152160e01b81526001600160a01b0391821660048201526200063392919091169063974b152190602401602060405180830381865afa158015620005db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006019190620037e5565b6040518060400160405280601381526020017230b9b9bab6b2b21020981034b99037bbb732b960691b81525062002765565b602c80546001600160a01b0319166ff42d60276dc5999a71cc727b1580ee20908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152673737ba27bbb732b960c11b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b158015620006c057600080fd5b505af1158015620006d5573d6000803e3d6000fd5b5050602d80546001600160a01b0319166f04db850b5e486a6000c620e3762b688b908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152683737ba27bbb732b91960b91b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200076757600080fd5b505af11580156200077c573d6000803e3d6000fd5b5050602e80546001600160a01b031916714a35bbee1b6250dc55a0438a2656f13fa463908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152686e6f744f776e65723360b81b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200081057600080fd5b505af115801562000825573d6000803e3d6000fd5b5050602f80546001600160a01b0319166a0a993c58dadd49644e6e5a908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152681b9bdd13dddb995c8d60ba1b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b158015620008b257600080fd5b505af1158015620008c7573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200092757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000908575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000a7657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000a5e578382906000526020600020018054620009ca9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620009f89062003809565b801562000a495780601f1062000a1d5761010080835404028352916020019162000a49565b820191906000526020600020905b81548152906001019060200180831162000a2b57829003601f168201915b505050505081526020019060010190620009a8565b50505050815250508152602001906001019062000955565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b602354602c5460405163974b152160e01b81526001600160a01b03918216600482015262000bea92919091169063974b152190602401602060405180830381865afa15801562000b97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bbd9190620037e5565b6040518060400160405280600e81526020016d3930b732379034b99037bbb732b960911b8152506200332c565b602354602d5460405163745d6bff60e01b81526001600160a01b03918216600482015262000c9292919091169063745d6bff90602401602060405180830381865afa15801562000c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c649190620037e5565b6040518060400160405280600f81526020016e72616e646f2063616e20616c6c6f7760881b8152506200332c565b604051630618f58760e51b815263e087598d60e01b600482015260008051602062013bc88339815191529063c31eb0e090602401600060405180830381600087803b15801562000ce157600080fd5b505af115801562000cf6573d6000803e3d6000fd5b5050602c5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000d4f57600080fd5b505af115801562000d64573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000db257600080fd5b505af115801562000dc7573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e1957600080fd5b505af115801562000e2e573d6000803e3d6000fd5b5050602d5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e8757600080fd5b505af115801562000e9c573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f5857600080fd5b505af115801562000f6d573d6000803e3d6000fd5b5050602354602c54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000fbb57600080fd5b505af115801562000fd0573d6000803e3d6000fd5b5050602c546023546040516317aa5fb760e11b81526001600160a01b039283166004820181905294506200107d9350911690632f54bf6e90602401602060405180830381865afa15801562001029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104f9190620037e5565b6040518060400160405280600f81526020016e3930b73237903737bb9037bbb732b960891b81525062002765565b60235460405163974b152160e01b81526001600160a01b0383811660048301526200112092169063974b152190602401602060405180830381865afa158015620010cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010f19190620037e5565b6040518060400160405280601081526020016f1c985b991bc81a5cc8185b1b1bddd95960821b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b038381166004830152620011c492169063745d6bff90602401602060405180830381865afa1580156200116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011949190620037e5565b60405180604001604052806011815260200170657870656374656420706c7573206f6e6560781b81525062002765565b60405163ca669fa760e01b81526001600160a01b038216600482015260008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b1580156200121557600080fd5b505af11580156200122a573d6000803e3d6000fd5b5050602354602d54604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200127857600080fd5b505af11580156200128d573d6000803e3d6000fd5b5050602354602d546040516317aa5fb760e11b81526001600160a01b0391821660048201526200133b945091169150632f54bf6e90602401602060405180830381865afa158015620012e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013099190620037e5565b604051806040016040528060138152602001723ab732bc3832b1ba32b21030b99037bbb2b73960691b8152506200332c565b602354602d5460405163f31264bb60e01b81526001600160a01b039182166004820152620013f492600092169063f31264bb90602401602060405180830381865afa1580156200138f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b59190620037b3565b6001600160a01b0316146040518060400160405280601681526020017532bc3832b1ba32b2103737ba1030b63637bbb2b2101960511b81525062002765565b602354602d5460405163745d6bff60e01b81526001600160a01b0391821660048201526200149b92919091169063745d6bff90602401602060405180830381865afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e9190620037e5565b6040518060400160405280600e81526020016d6973206e6f7420706c75736f6e6560901b81525062002765565b6040805160028082526060820183526000926020830190803683375050602e5482519293506001600160a01b031691839150600090620014df57620014df62003845565b6001600160a01b039283166020918202929092010152602f5482519116908290600190811062001513576200151362003845565b6001600160a01b039283166020918202929092010152602354602e546040516317aa5fb760e11b81529083166004820152620015c5929190911690632f54bf6e90602401602060405180830381865afa15801562001575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159b9190620037e5565b6040518060400160405280600b81526020016a6e6f74206f776e6572203360a81b8152506200332c565b602354602f5460405163974b152160e01b81526001600160a01b0391821660048201526200166b92919091169063974b152190602401602060405180830381865afa15801562001619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200163f9190620037e5565b6040518060400160405280600d81526020016c1b9bdd08185b1b1bddd959080d609a1b8152506200332c565b60008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620016b957600080fd5b505af1158015620016ce573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017049084906004016200352d565b600060405180830381600087803b1580156200171f57600080fd5b505af115801562001734573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200178d57600080fd5b505af1158015620017a2573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017d89084906004016200352d565b600060405180830381600087803b158015620017f357600080fd5b505af115801562001808573d6000803e3d6000fd5b5050602354602e5460405163974b152160e01b81526001600160a01b039182166004820152620018b094509116915063974b152190602401602060405180830381865afa1580156200185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018849190620037e5565b6040518060400160405280600d81526020016c6e6f7420616c6c6f776564203360981b8152506200332c565b602354602f5460405163babcc53960e01b81526001600160a01b0391821660048201526200196092919091169063babcc539906024015b602060405180830381865afa15801562001905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192b9190620037e5565b604051806040016040528060168152602001751a185cc81899595b8818985d18da08185b1b1bddd95960521b81525062002765565b602354602e5460405163babcc53960e01b81526001600160a01b0391821660048201526200199c92919091169063babcc53990602401620018e7565b602354602f5460405163f31264bb60e01b81526001600160a01b03918216600482015262001a4e92600092169063f31264bb90602401602060405180830381865afa158015620019f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a169190620037b3565b6001600160a01b0316146040518060400160405280600f81526020016e616c726561647920706c75736f6e6560881b81525062002765565b602354602f5460405163386ec69760e11b81526001600160a01b03918216600482015262001af69291909116906370dd8d2e90602401602060405180830381865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ac89190620037e5565b6040518060400160405280600f81526020016e1b9bdd08185b1b1bdddb1a5cdd1959608a1b81525062002765565b602354602f5460405163745d6bff60e01b81526001600160a01b03918216600482015262001b9d92919091169063745d6bff90602401602060405180830381865afa15801562001b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b709190620037e5565b6040518060400160405280600e81526020016d18d85b9b9bdd08185b1b1bddc80d60921b81525062002765565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526848c948741fafad092a9060008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b15801562001bfd57600080fd5b505af115801562001c12573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001c5e57600080fd5b505af115801562001c73573d6000803e3d6000fd5b505060235460405163386ec69760e11b81526001600160a01b03858116600483015262001d21945090911691506370dd8d2e90602401602060405180830381865afa15801562001cc7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ced9190620037e5565b604051806040016040528060158152602001746e6f7420616c6c6f776c697374656420777574203160581b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b03838116600483015262001dc492169063745d6bff90602401602060405180830381865afa15801562001d6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d959190620037e5565b6040518060400160405280601081526020016f31b0b73737ba1038363ab9b7b732901960811b81525062002765565b6023546040516317aa5fb760e11b81526001600160a01b03838116600483015262001e61921690632f54bf6e90602401602060405180830381865afa15801562001e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e389190620037e5565b6040518060400160405280600a8152602001696e6f74206f766572203360b01b8152506200332c565b60235460405163babcc53960e01b815265156f4ba4a5c9600482018190529162001f0c916001600160a01b039091169063babcc53990602401602060405180830381865afa15801562001eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ede9190620037e5565b6040518060400160405280600f81526020016e185b1c9958591e48185b1b1bddd959608a1b8152506200332c565b60405163ca669fa760e01b81526001600160a01b038316600482015260008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b15801562001f5d57600080fd5b505af115801562001f72573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001fbe57600080fd5b505af115801562001fd3573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038516600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200202857600080fd5b505af11580156200203d573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200208f57600080fd5b505af1158015620020a4573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b158015620020f057600080fd5b505af115801562002105573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038516600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200215a57600080fd5b505af11580156200216f573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021c157600080fd5b505af1158015620021d6573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526e42c9f77e5548e94e0a5cc7f3ae728060048201526001600160a01b03909116925063f8e86ece9150602401600060405180830381600087803b1580156200222f57600080fd5b505af115801562002244573d6000803e3d6000fd5b5050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200231f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e05790505b5050505050815250508152602001906001019062002272565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000a765783829060005260206000200180546200237e9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620023ac9062003809565b8015620023fd5780601f10620023d157610100808354040283529160200191620023fd565b820191906000526020600020905b815481529060010190602001808311620023df57829003601f168201915b5050505050815260200190600101906200235c565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024e357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024a45790505b5050505050815250508152602001906001019062002436565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000a76578382906000526020600020018054620025429062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620025709062003809565b8015620025c15780601f106200259557610100808354040283529160200191620025c1565b820191906000526020600020905b815481529060010190602001808311620025a357829003601f168201915b50505050508152602001906001019062002520565b600754600090610100900460ff1615620025f95750600754610100900460ff1690565b600060008051602062013bc88339815191523b15620026fe576040805160008051602062013bc8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002680917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200385b565b60408051601f19818403018152908290526200269c916200388e565b6000604051808303816000865af19150503d8060008114620026db576040519150601f19603f3d011682016040523d82523d6000602084013e620026e0565b606091505b5091505080806020019051810190620026fa9190620037e5565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b81620027af577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200279c9190620038ac565b60405180910390a1620027af8262003339565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b1580156200284457600080fd5b505af115801562002859573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b158015620028ee57600080fd5b505af115801562002903573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200299857600080fd5b505af1158015620029ad573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002a4e57600080fd5b505af115801562002a63573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062013bc883398151915292506306447d569150602401600060405180830381600087803b15801562002abc57600080fd5b505af115801562002ad1573d6000803e3d6000fd5b5050505060405162002ae390620034bd565b604051809103906000f08015801562002b00573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002b8a57600080fd5b505af115801562002b9f573d6000803e3d6000fd5b5050505060405162002bb190620034cb565b604051809103906000f08015801562002bce573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002c5757600080fd5b505af115801562002c6c573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002cba57600080fd5b505af115801562002ccf573d6000803e3d6000fd5b5050505060405162002ce190620034d9565b604051809103906000f08015801562002cfe573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002d8457600080fd5b505af115801562002d99573d6000803e3d6000fd5b5050505060405162002dab90620034e7565b604051809103906000f08015801562002dc8573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002e5257600080fd5b505af115801562002e67573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002e889150620034f5565b6001600160a01b039091168152602001604051809103906000f08015801562002eb5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002f4457600080fd5b505af115801562002f59573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002f7a915062003503565b6001600160a01b039091168152602001604051809103906000f08015801562002fa7573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b1580156200303657600080fd5b505af11580156200304b573d6000803e3d6000fd5b505050506040516200305d9062003511565b604051809103906000f0801580156200307a573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620030da57600080fd5b505af1158015620030ef573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062003120906200351f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003165573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b158015620031f257600080fd5b505af115801562003207573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562003283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a99190620037b3565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013bc8833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200331057600080fd5b505af115801562003325573d6000803e3d6000fd5b5050505050565b620027af82158262002765565b80620033b1577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200339f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620033b1620033b4565b50565b60008051602062013bc88339815191523b15620034ac576040805160008051602062013bc8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200344792916020016200385b565b60408051601f198184030181529082905262003463916200388e565b6000604051808303816000865af19150503d8060008114620034a2576040519150601f19603f3d011682016040523d82523d6000602084013e620034a7565b606091505b505050505b6007805461ff001916610100179055565b61012080620038de83390190565b610c7280620039fe83390190565b613723806200467083390190565b6125a38062007d9383390190565b6110db806200a33683390190565b613043806200b41183390190565b6137d5806200e45483390190565b611f9f8062011c2983390190565b6020808252825182820181905260009190848201906040850190845b81811015620035705783516001600160a01b03168352928401929184019160010162003549565b50909695505050505050565b60005b83811015620035995781810151838201526020016200357f565b50506000910152565b60008151808452620035bc8160208601602086016200357c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200368657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200366f57605f198985030183526200365c848651620035a2565b948e01949350918d01916001016200363d565b505050978a019794505091880191600101620035f7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200373e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620037285783516001600160e01b0319168252928b019260019290920191908b0190620036fc565b50978a01979550505091870191600101620036be565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620037a657603f1988860301845262003793858351620035a2565b9450928501929085019060010162003774565b5092979650505050505050565b600060208284031215620037c657600080fd5b81516001600160a01b0381168114620037de57600080fd5b9392505050565b600060208284031215620037f857600080fd5b81518015158114620037de57600080fd5b600181811c908216806200381e57607f821691505b6020821081036200383f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319831681528151600090620038808160048501602087016200357c565b919091016004019392505050565b60008251620038a28184602087016200357c565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620037de6080830184620035a256fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e18cc709bd7059497c3f6574a4e3560ec375d2e29c175bedcf1191c84d62cd8b64736f6c63430008130033", + "sourceMap": "257:3511:125:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;257:3511:125;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806366d9a9a0146200017057806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c5780635702210c146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b62000121620008cd565b6040516200013091906200352d565b60405180910390f35b6200014362000931565b604051620001309190620035d0565b6200012162000a7f565b6200012162000ae1565b6200010b62000b43565b6200017a6200224e565b60405162000130919062003696565b6200019362002338565b6040516200013091906200374d565b6200017a62002412565b62000193620024fc565b620001c0620025d6565b604051901515815260200162000130565b6200012162002703565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062002765565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062002765565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062002765565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062002765565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062002765565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620037b3565b6001600160a01b03161460405180606001604052806028815260200162013a276028913962002765565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b9190620037e5565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002765565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620037b3565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002765565b565b62000587620027b3565b60235460255460405163974b152160e01b81526001600160a01b0391821660048201526200063392919091169063974b152190602401602060405180830381865afa158015620005db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006019190620037e5565b6040518060400160405280601381526020017230b9b9bab6b2b21020981034b99037bbb732b960691b81525062002765565b602c80546001600160a01b0319166ff42d60276dc5999a71cc727b1580ee20908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152673737ba27bbb732b960c11b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b158015620006c057600080fd5b505af1158015620006d5573d6000803e3d6000fd5b5050602d80546001600160a01b0319166f04db850b5e486a6000c620e3762b688b908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152683737ba27bbb732b91960b91b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200076757600080fd5b505af11580156200077c573d6000803e3d6000fd5b5050602e80546001600160a01b031916714a35bbee1b6250dc55a0438a2656f13fa463908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152686e6f744f776e65723360b81b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200081057600080fd5b505af115801562000825573d6000803e3d6000fd5b5050602f80546001600160a01b0319166a0a993c58dadd49644e6e5a908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152681b9bdd13dddb995c8d60ba1b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b158015620008b257600080fd5b505af1158015620008c7573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200092757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000908575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000a7657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000a5e578382906000526020600020018054620009ca9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620009f89062003809565b801562000a495780601f1062000a1d5761010080835404028352916020019162000a49565b820191906000526020600020905b81548152906001019060200180831162000a2b57829003601f168201915b505050505081526020019060010190620009a8565b50505050815250508152602001906001019062000955565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b602354602c5460405163974b152160e01b81526001600160a01b03918216600482015262000bea92919091169063974b152190602401602060405180830381865afa15801562000b97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bbd9190620037e5565b6040518060400160405280600e81526020016d3930b732379034b99037bbb732b960911b8152506200332c565b602354602d5460405163745d6bff60e01b81526001600160a01b03918216600482015262000c9292919091169063745d6bff90602401602060405180830381865afa15801562000c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c649190620037e5565b6040518060400160405280600f81526020016e72616e646f2063616e20616c6c6f7760881b8152506200332c565b604051630618f58760e51b815263e087598d60e01b6004820152600080516020620139e78339815191529063c31eb0e090602401600060405180830381600087803b15801562000ce157600080fd5b505af115801562000cf6573d6000803e3d6000fd5b5050602c5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000d4f57600080fd5b505af115801562000d64573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000db257600080fd5b505af115801562000dc7573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e1957600080fd5b505af115801562000e2e573d6000803e3d6000fd5b5050602d5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e8757600080fd5b505af115801562000e9c573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f5857600080fd5b505af115801562000f6d573d6000803e3d6000fd5b5050602354602c54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000fbb57600080fd5b505af115801562000fd0573d6000803e3d6000fd5b5050602c546023546040516317aa5fb760e11b81526001600160a01b039283166004820181905294506200107d9350911690632f54bf6e90602401602060405180830381865afa15801562001029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104f9190620037e5565b6040518060400160405280600f81526020016e3930b73237903737bb9037bbb732b960891b81525062002765565b60235460405163974b152160e01b81526001600160a01b0383811660048301526200112092169063974b152190602401602060405180830381865afa158015620010cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010f19190620037e5565b6040518060400160405280601081526020016f1c985b991bc81a5cc8185b1b1bddd95960821b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b038381166004830152620011c492169063745d6bff90602401602060405180830381865afa1580156200116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011949190620037e5565b60405180604001604052806011815260200170657870656374656420706c7573206f6e6560781b81525062002765565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b1580156200121557600080fd5b505af11580156200122a573d6000803e3d6000fd5b5050602354602d54604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200127857600080fd5b505af11580156200128d573d6000803e3d6000fd5b5050602354602d546040516317aa5fb760e11b81526001600160a01b0391821660048201526200133b945091169150632f54bf6e90602401602060405180830381865afa158015620012e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013099190620037e5565b604051806040016040528060138152602001723ab732bc3832b1ba32b21030b99037bbb2b73960691b8152506200332c565b602354602d5460405163f31264bb60e01b81526001600160a01b039182166004820152620013f492600092169063f31264bb90602401602060405180830381865afa1580156200138f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b59190620037b3565b6001600160a01b0316146040518060400160405280601681526020017532bc3832b1ba32b2103737ba1030b63637bbb2b2101960511b81525062002765565b602354602d5460405163745d6bff60e01b81526001600160a01b0391821660048201526200149b92919091169063745d6bff90602401602060405180830381865afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e9190620037e5565b6040518060400160405280600e81526020016d6973206e6f7420706c75736f6e6560901b81525062002765565b6040805160028082526060820183526000926020830190803683375050602e5482519293506001600160a01b031691839150600090620014df57620014df62003845565b6001600160a01b039283166020918202929092010152602f5482519116908290600190811062001513576200151362003845565b6001600160a01b039283166020918202929092010152602354602e546040516317aa5fb760e11b81529083166004820152620015c5929190911690632f54bf6e90602401602060405180830381865afa15801562001575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159b9190620037e5565b6040518060400160405280600b81526020016a6e6f74206f776e6572203360a81b8152506200332c565b602354602f5460405163974b152160e01b81526001600160a01b0391821660048201526200166b92919091169063974b152190602401602060405180830381865afa15801562001619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200163f9190620037e5565b6040518060400160405280600d81526020016c1b9bdd08185b1b1bddd959080d609a1b8152506200332c565b60008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620016b957600080fd5b505af1158015620016ce573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017049084906004016200352d565b600060405180830381600087803b1580156200171f57600080fd5b505af115801562001734573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200178d57600080fd5b505af1158015620017a2573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017d89084906004016200352d565b600060405180830381600087803b158015620017f357600080fd5b505af115801562001808573d6000803e3d6000fd5b5050602354602e5460405163974b152160e01b81526001600160a01b039182166004820152620018b094509116915063974b152190602401602060405180830381865afa1580156200185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018849190620037e5565b6040518060400160405280600d81526020016c6e6f7420616c6c6f776564203360981b8152506200332c565b602354602f5460405163babcc53960e01b81526001600160a01b0391821660048201526200196092919091169063babcc539906024015b602060405180830381865afa15801562001905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192b9190620037e5565b604051806040016040528060168152602001751a185cc81899595b8818985d18da08185b1b1bddd95960521b81525062002765565b602354602e5460405163babcc53960e01b81526001600160a01b0391821660048201526200199c92919091169063babcc53990602401620018e7565b602354602f5460405163f31264bb60e01b81526001600160a01b03918216600482015262001a4e92600092169063f31264bb90602401602060405180830381865afa158015620019f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a169190620037b3565b6001600160a01b0316146040518060400160405280600f81526020016e616c726561647920706c75736f6e6560881b81525062002765565b602354602f5460405163386ec69760e11b81526001600160a01b03918216600482015262001af69291909116906370dd8d2e90602401602060405180830381865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ac89190620037e5565b6040518060400160405280600f81526020016e1b9bdd08185b1b1bdddb1a5cdd1959608a1b81525062002765565b602354602f5460405163745d6bff60e01b81526001600160a01b03918216600482015262001b9d92919091169063745d6bff90602401602060405180830381865afa15801562001b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b709190620037e5565b6040518060400160405280600e81526020016d18d85b9b9bdd08185b1b1bddc80d60921b81525062002765565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526848c948741fafad092a90600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b15801562001bfd57600080fd5b505af115801562001c12573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001c5e57600080fd5b505af115801562001c73573d6000803e3d6000fd5b505060235460405163386ec69760e11b81526001600160a01b03858116600483015262001d21945090911691506370dd8d2e90602401602060405180830381865afa15801562001cc7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ced9190620037e5565b604051806040016040528060158152602001746e6f7420616c6c6f776c697374656420777574203160581b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b03838116600483015262001dc492169063745d6bff90602401602060405180830381865afa15801562001d6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d959190620037e5565b6040518060400160405280601081526020016f31b0b73737ba1038363ab9b7b732901960811b81525062002765565b6023546040516317aa5fb760e11b81526001600160a01b03838116600483015262001e61921690632f54bf6e90602401602060405180830381865afa15801562001e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e389190620037e5565b6040518060400160405280600a8152602001696e6f74206f766572203360b01b8152506200332c565b60235460405163babcc53960e01b815265156f4ba4a5c9600482018190529162001f0c916001600160a01b039091169063babcc53990602401602060405180830381865afa15801562001eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ede9190620037e5565b6040518060400160405280600f81526020016e185b1c9958591e48185b1b1bddd959608a1b8152506200332c565b60405163ca669fa760e01b81526001600160a01b0383166004820152600080516020620139e78339815191529063ca669fa790602401600060405180830381600087803b15801562001f5d57600080fd5b505af115801562001f72573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001fbe57600080fd5b505af115801562001fd3573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200202857600080fd5b505af11580156200203d573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200208f57600080fd5b505af1158015620020a4573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b158015620020f057600080fd5b505af115801562002105573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620139e7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200215a57600080fd5b505af11580156200216f573d6000803e3d6000fd5b5050505060008051602062013a0783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021c157600080fd5b505af1158015620021d6573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526e42c9f77e5548e94e0a5cc7f3ae728060048201526001600160a01b03909116925063f8e86ece9150602401600060405180830381600087803b1580156200222f57600080fd5b505af115801562002244573d6000803e3d6000fd5b5050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200231f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e05790505b5050505050815250508152602001906001019062002272565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000a765783829060005260206000200180546200237e9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620023ac9062003809565b8015620023fd5780601f10620023d157610100808354040283529160200191620023fd565b820191906000526020600020905b815481529060010190602001808311620023df57829003601f168201915b5050505050815260200190600101906200235c565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024e357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024a45790505b5050505050815250508152602001906001019062002436565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000a76578382906000526020600020018054620025429062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620025709062003809565b8015620025c15780601f106200259557610100808354040283529160200191620025c1565b820191906000526020600020905b815481529060010190602001808311620025a357829003601f168201915b50505050508152602001906001019062002520565b600754600090610100900460ff1615620025f95750600754610100900460ff1690565b6000600080516020620139e78339815191523b15620026fe5760408051600080516020620139e7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002680917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200385b565b60408051601f19818403018152908290526200269c916200388e565b6000604051808303816000865af19150503d8060008114620026db576040519150601f19603f3d011682016040523d82523d6000602084013e620026e0565b606091505b5091505080806020019051810190620026fa9190620037e5565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b81620027af577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200279c9190620038ac565b60405180910390a1620027af8262003339565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b1580156200284457600080fd5b505af115801562002859573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b158015620028ee57600080fd5b505af115801562002903573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620139e7833981519152925063c657c7189150608401600060405180830381600087803b1580156200299857600080fd5b505af1158015620029ad573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002a4e57600080fd5b505af115801562002a63573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620139e783398151915292506306447d569150602401600060405180830381600087803b15801562002abc57600080fd5b505af115801562002ad1573d6000803e3d6000fd5b5050505060405162002ae390620034bd565b604051809103906000f08015801562002b00573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002b8a57600080fd5b505af115801562002b9f573d6000803e3d6000fd5b5050505060405162002bb190620034cb565b604051809103906000f08015801562002bce573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002c5757600080fd5b505af115801562002c6c573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002cba57600080fd5b505af115801562002ccf573d6000803e3d6000fd5b5050505060405162002ce190620034d9565b604051809103906000f08015801562002cfe573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002d8457600080fd5b505af115801562002d99573d6000803e3d6000fd5b5050505060405162002dab90620034e7565b604051809103906000f08015801562002dc8573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002e5257600080fd5b505af115801562002e67573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002e889150620034f5565b6001600160a01b039091168152602001604051809103906000f08015801562002eb5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b15801562002f4457600080fd5b505af115801562002f59573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002f7a915062003503565b6001600160a01b039091168152602001604051809103906000f08015801562002fa7573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b1580156200303657600080fd5b505af11580156200304b573d6000803e3d6000fd5b505050506040516200305d9062003511565b604051809103906000f0801580156200307a573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620030da57600080fd5b505af1158015620030ef573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062003120906200351f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003165573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620139e78339815191529063c657c71890608401600060405180830381600087803b158015620031f257600080fd5b505af115801562003207573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562003283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a99190620037b3565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620139e7833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200331057600080fd5b505af115801562003325573d6000803e3d6000fd5b5050505050565b620027af82158262002765565b80620033b1577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200339f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620033b1620033b4565b50565b600080516020620139e78339815191523b15620034ac5760408051600080516020620139e7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200344792916020016200385b565b60408051601f198184030181529082905262003463916200388e565b6000604051808303816000865af19150503d8060008114620034a2576040519150601f19603f3d011682016040523d82523d6000602084013e620034a7565b606091505b505050505b6007805461ff001916610100179055565b61012080620038de83390190565b610c7280620039fe83390190565b613723806200467083390190565b6123c28062007d9383390190565b6110db806200a15583390190565b613043806200b23083390190565b6137d5806200e27383390190565b611f9f8062011a4883390190565b6020808252825182820181905260009190848201906040850190845b81811015620035705783516001600160a01b03168352928401929184019160010162003549565b50909695505050505050565b60005b83811015620035995781810151838201526020016200357f565b50506000910152565b60008151808452620035bc8160208601602086016200357c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200368657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200366f57605f198985030183526200365c848651620035a2565b948e01949350918d01916001016200363d565b505050978a019794505091880191600101620035f7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200373e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620037285783516001600160e01b0319168252928b019260019290920191908b0190620036fc565b50978a01979550505091870191600101620036be565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620037a657603f1988860301845262003793858351620035a2565b9450928501929085019060010162003774565b5092979650505050505050565b600060208284031215620037c657600080fd5b81516001600160a01b0381168114620037de57600080fd5b9392505050565b600060208284031215620037f857600080fd5b81518015158114620037de57600080fd5b600181811c908216806200381e57607f821691505b6020821081036200383f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319831681528151600090620038808160048501602087016200357c565b919091016004019392505050565b60008251620038a28184602087016200357c565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620037de6080830184620035a256fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220441626b5903130a88b981b2ab114654ff538b1385f047ec3a7adfc5c0853d88364736f6c63430008130033", - "sourceMap": "257:3511:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;390:570:112;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;966:2800:112:-;;;:::i;2738:178:59:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5504:14:121;;5497:22;5479:41;;5467:2;5452:18;1819:584:52;5339:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;5972:51:121;3476:66:114;;3487:3;;;;;:23;;5945:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;390:570:112:-;433:13;:11;:13::i;:::-;468:5;;489:2;;468:24;;-1:-1:-1;;;468:24:112;;-1:-1:-1;;;;;489:2:112;;;468:24;;;5972:51:121;457:59:112;;468:5;;;;;:20;;5945:18:121;;468:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;457:59;;;;;;;;;;;;;-1:-1:-1;;;457:59:112;;;:10;:59::i;:::-;527:8;:59;;-1:-1:-1;;;;;;527:59:112;546:39;527:59;;;;;;596:30;;;-1:-1:-1;;;596:30:112;;;;;6528:51:121;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:121;;;6665:38;-1:-1:-1;;;;;;;;;;;596:8:112;;;6720:19:121;;596:30:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:9:112;:58;;-1:-1:-1;;;;;;636:58:112;656:37;636:58;;;;;;704:32;;;-1:-1:-1;;;704:32:112;;;;;6962:51:121;;;;7029:18;;;7022:30;7088:1;7068:18;;;7061:29;-1:-1:-1;;;7106:18:121;;;7099:39;-1:-1:-1;;;;;;;;;;;704:8:112;-1:-1:-1;704:8:112;;-1:-1:-1;7155:19:121;;704:32:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;747:9:112;:64;;-1:-1:-1;;;;;;747:64:112;767:43;747:64;;;;;;821:32;;;-1:-1:-1;;;821:32:112;;;;;7397:51:121;;;;7464:18;;;7457:30;7523:1;7503:18;;;7496:29;-1:-1:-1;;;7541:18:121;;;7534:39;-1:-1:-1;;;;;;;;;;;821:8:112;-1:-1:-1;821:8:112;;-1:-1:-1;7590:19:121;;821:32:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;864:9:112;:47;;-1:-1:-1;;;;;;864:47:112;884:26;864:47;;;;;;921:32;;;-1:-1:-1;;;921:32:112;;;;;7832:51:121;;;;7899:18;;;7892:30;7958:1;7938:18;;;7931:29;-1:-1:-1;;;7976:18:121;;;7969:39;-1:-1:-1;;;;;;;;;;;921:8:112;-1:-1:-1;921:8:112;;-1:-1:-1;8025:19:121;;921:32:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;390:570::o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;966:2800:112:-;1028:5;;1049:8;;1028:30;;-1:-1:-1;;;1028:30:112;;-1:-1:-1;;;;;1049:8:112;;;1028:30;;;5972:51:121;1016:61:112;;1028:5;;;;;:20;;5945:18:121;;1028:30:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1016:61;;;;;;;;;;;;;-1:-1:-1;;;1016:61:112;;;:11;:61::i;:::-;1099:5;;1118:9;;1099:29;;-1:-1:-1;;;1099:29:112;;-1:-1:-1;;;;;1118:9:112;;;1099:29;;;5972:51:121;1087:61:112;;1099:5;;;;;:18;;5945::121;;1099:29:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1087:61;;;;;;;;;;;;;-1:-1:-1;;;1087:61:112;;;:11;:61::i;:::-;1159:46;;-1:-1:-1;;;1159:46:112;;-1:-1:-1;;;1159:46:112;;;8584:52:121;-1:-1:-1;;;;;;;;;;;1159:15:112;;;8557:18:121;;1159:46:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1224:8:112;;1215:18;;-1:-1:-1;;;1215:18:112;;-1:-1:-1;;;;;1224:8:112;;;1215:18;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1215:8:112;-1:-1:-1;1215:8:112;;-1:-1:-1;5945:18:121;;1215::112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1243:5:112;;1258:9;;1243:25;;-1:-1:-1;;;1243:25:112;;-1:-1:-1;;;;;1258:9:112;;;1243:25;;;5972:51:121;1243:5:112;;;-1:-1:-1;1243:14:112;;-1:-1:-1;5945:18:121;;1243:25:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;1279:15:112;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1315:9:112;;1306:19;;-1:-1:-1;;;1306:19:112;;-1:-1:-1;;;;;1315:9:112;;;1306:19;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1306:8:112;-1:-1:-1;1306:8:112;;-1:-1:-1;5945:18:121;;1306:19:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1335:5:112;;1350:9;;1335:25;;-1:-1:-1;;;1335:25:112;;-1:-1:-1;;;;;1350:9:112;;;1335:25;;;5972:51:121;1335:5:112;;;-1:-1:-1;1335:14:112;;-1:-1:-1;5945:18:121;;1335:25:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1380:2:112;;1371:12;;-1:-1:-1;;;1371:12:112;;-1:-1:-1;;;;;1380:2:112;;;1371:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1371:8:112;-1:-1:-1;1371:8:112;;-1:-1:-1;5945:18:121;;1371:12:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1393:5:112;;1408:8;;1393:24;;-1:-1:-1;;;1393:24:112;;-1:-1:-1;;;;;1408:8:112;;;1393:24;;;5972:51:121;1393:5:112;;;-1:-1:-1;1393:14:112;;-1:-1:-1;5945:18:121;;1393:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1446:8:112;;1475:5;;:23;;-1:-1:-1;;;1475:23:112;;-1:-1:-1;;;;;1446:8:112;;;1475:23;;;5972:51:121;;;1446:8:112;-1:-1:-1;1464:54:112;;-1:-1:-1;1475:5:112;;;:13;;5945:18:121;;1475:23:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1464:54;;;;;;;;;;;;;-1:-1:-1;;;1464:54:112;;;:10;:54::i;:::-;1539:5;;:30;;-1:-1:-1;;;1539:30:112;;-1:-1:-1;;;;;5990:32:121;;;1539:30:112;;;5972:51:121;1528:62:112;;1539:5;;:20;;5945:18:121;;1539:30:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1528:62;;;;;;;;;;;;;-1:-1:-1;;;1528:62:112;;;:10;:62::i;:::-;1611:5;;:28;;-1:-1:-1;;;1611:28:112;;-1:-1:-1;;;;;5990:32:121;;;1611:28:112;;;5972:51:121;1600:61:112;;1611:5;;:18;;5945::121;;1611:28:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1600:61;;;;;;;;;;;;;-1:-1:-1;;;1600:61:112;;;:10;:61::i;:::-;1672:18;;-1:-1:-1;;;1672:18:112;;-1:-1:-1;;;;;5990:32:121;;1672:18:112;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1672:8:112;;;5945:18:121;;1672::112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1700:5:112;;1721:9;;1700:31;;-1:-1:-1;;;1700:31:112;;-1:-1:-1;;;;;1721:9:112;;;1700:31;;;5972:51:121;1700:5:112;;;-1:-1:-1;1700:20:112;;-1:-1:-1;5945:18:121;;1700:31:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1753:5:112;;1767:9;;1753:24;;-1:-1:-1;;;1753:24:112;;-1:-1:-1;;;;;1767:9:112;;;1753:24;;;5972:51:121;1741:60:112;;-1:-1:-1;1753:5:112;;;-1:-1:-1;1753:13:112;;5945:18:121;;1753:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1741:60;;;;;;;;;;;;;-1:-1:-1;;;1741:60:112;;;:11;:60::i;:::-;1822:5;;1836:9;;1822:24;;-1:-1:-1;;;1822:24:112;;-1:-1:-1;;;;;1836:9:112;;;1822:24;;;5972:51:121;1811:76:112;;1858:1;;1822:5;;:13;;5945:18:121;;1822:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1822:38:112;;1811:76;;;;;;;;;;;;;-1:-1:-1;;;1811:76:112;;;:10;:76::i;:::-;1909:5;;1928:9;;1909:29;;-1:-1:-1;;;1909:29:112;;-1:-1:-1;;;;;1928:9:112;;;1909:29;;;5972:51:121;1898:59:112;;1909:5;;;;;:18;;5945::121;;1909:29:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1898:59;;;;;;;;;;;;;-1:-1:-1;;;1898:59:112;;;:10;:59::i;:::-;2046:16;;;2060:1;2046:16;;;;;;;;2010:33;;2046:16;;;;;;;;-1:-1:-1;;2094:9:112;;2072:19;;;;-1:-1:-1;;;;;;2094:9:112;;2072:19;;-1:-1:-1;2094:9:112;;2072:19;;;;:::i;:::-;-1:-1:-1;;;;;2072:31:112;;;:19;;;;;;;;;:31;2135:9;;2113:19;;2135:9;;;2113:16;;2135:9;;2113:19;;;;;;:::i;:::-;-1:-1:-1;;;;;2113:31:112;;;:19;;;;;;;;;:31;2166:5;;2180:9;;2166:24;;-1:-1:-1;;;2166:24:112;;2180:9;;;2166:24;;;5972:51:121;2154:52:112;;2166:5;;;;;:13;;5945:18:121;;2166:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2154:52;;;;;;;;;;;;;-1:-1:-1;;;2154:52:112;;;:11;:52::i;:::-;2228:5;;2249:9;;2228:31;;-1:-1:-1;;;2228:31:112;;-1:-1:-1;;;;;2249:9:112;;;2228:31;;;5972:51:121;2216:61:112;;2228:5;;;;;:20;;5945:18:121;;2228:31:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:61;;;;;;;;;;;;;-1:-1:-1;;;2216:61:112;;;:11;:61::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;2361:15:112;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:5:112;;:43;;-1:-1:-1;;;2388:43:112;;-1:-1:-1;;;;;2388:5:112;;;;-1:-1:-1;2388:25:112;;-1:-1:-1;2388:43:112;;2414:16;;2388:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2451:2:112;;2442:12;;-1:-1:-1;;;2442:12:112;;-1:-1:-1;;;;;2451:2:112;;;2442:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;2442:8:112;-1:-1:-1;2442:8:112;;-1:-1:-1;5945:18:121;;2442:12:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2464:5:112;;:43;;-1:-1:-1;;;2464:43:112;;-1:-1:-1;;;;;2464:5:112;;;;-1:-1:-1;2464:25:112;;-1:-1:-1;2464:43:112;;2490:16;;2464:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2530:5:112;;2551:9;;2530:31;;-1:-1:-1;;;2530:31:112;;-1:-1:-1;;;;;2551:9:112;;;2530:31;;;5972:51:121;2518:61:112;;-1:-1:-1;2530:5:112;;;-1:-1:-1;2530:20:112;;5945:18:121;;2530:31:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2518:61;;;;;;;;;;;;;-1:-1:-1;;;2518:61:112;;;:11;:61::i;:::-;2600:5;;2616:9;;2600:26;;-1:-1:-1;;;2600:26:112;;-1:-1:-1;;;;;2616:9:112;;;2600:26;;;5972:51:121;2589:64:112;;2600:5;;;;;:15;;5945:18:121;;2600:26:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2589:64;;;;;;;;;;;;;-1:-1:-1;;;2589:64:112;;;:10;:64::i;:::-;2674:5;;2690:9;;2674:26;;-1:-1:-1;;;2674:26:112;;-1:-1:-1;;;;;2690:9:112;;;2674:26;;;5972:51:121;2663:64:112;;2674:5;;;;;:15;;5945:18:121;;2674:26:112;5826:203:121;2663:64:112;2749:5;;2763:9;;2749:24;;-1:-1:-1;;;2749:24:112;;-1:-1:-1;;;;;2763:9:112;;;2749:24;;;5972:51:121;2738:69:112;;2785:1;;2749:5;;:13;;5945:18:121;;2749:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2749:38:112;;2738:69;;;;;;;;;;;;;-1:-1:-1;;;2738:69:112;;;:10;:69::i;:::-;2828:5;;2848:9;;2828:30;;-1:-1:-1;;;2828:30:112;;-1:-1:-1;;;;;2848:9:112;;;2828:30;;;5972:51:121;2817:61:112;;2828:5;;;;;:19;;5945:18:121;;2828:30:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2817:61;;;;;;;;;;;;;-1:-1:-1;;;2817:61:112;;;:10;:61::i;:::-;2899:5;;2918:9;;2899:29;;-1:-1:-1;;;2899:29:112;;-1:-1:-1;;;;;2918:9:112;;;2899:29;;;5972:51:121;2888:59:112;;2899:5;;;;;:18;;5945::121;;2899:29:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2888:59;;;;;;;;;;;;;-1:-1:-1;;;2888:59:112;;;:10;:59::i;:::-;3033:2;;3024:12;;-1:-1:-1;;;3024:12:112;;-1:-1:-1;;;;;3033:2:112;;;3024:12;;;5972:51:121;2991:22:112;;-1:-1:-1;;;;;;;;;;;3024:8:112;;;5945:18:121;;3024:12:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3046:5:112;;:36;;-1:-1:-1;;;3046:36:112;;-1:-1:-1;;;;;5990:32:121;;;3046:36:112;;;5972:51:121;3046:5:112;;;;-1:-1:-1;3046:20:112;;-1:-1:-1;5945:18:121;;3046:36:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3104:5:112;;:35;;-1:-1:-1;;;3104:35:112;;-1:-1:-1;;;;;5990:32:121;;;3104:35:112;;;5972:51:121;3093:72:112;;-1:-1:-1;3104:5:112;;;;-1:-1:-1;3104:19:112;;5945:18:121;;3104:35:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3093:72;;;;;;;;;;;;;-1:-1:-1;;;3093:72:112;;;:10;:72::i;:::-;3186:5;;:34;;-1:-1:-1;;;3186:34:112;;-1:-1:-1;;;;;5990:32:121;;;3186:34:112;;;5972:51:121;3175:66:112;;3186:5;;:18;;5945::121;;3186:34:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3175:66;;;;;;;;;;;;;-1:-1:-1;;;3175:66:112;;;:10;:66::i;:::-;3263:5;;:29;;-1:-1:-1;;;3263:29:112;;-1:-1:-1;;;;;5990:32:121;;;3263:29:112;;;5972:51:121;3251:56:112;;3263:5;;:13;;5945:18:121;;3263:29:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3251:56;;;;;;;;;;;;;-1:-1:-1;;;3251:56:112;;;:11;:56::i;:::-;3386:5;;:29;;-1:-1:-1;;;3386:29:112;;3349:14;3386:29;;;5972:51:121;;;3349:14:112;3374:61;;-1:-1:-1;;;;;3386:5:112;;;;:15;;5945:18:121;;3386:29:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3374:61;;;;;;;;;;;;;-1:-1:-1;;;3374:61:112;;;:11;:61::i;:::-;3446:24;;-1:-1:-1;;;3446:24:112;;-1:-1:-1;;;;;5990:32:121;;3446:24:112;;;5972:51:121;-1:-1:-1;;;;;;;;;;;3446:8:112;;;5945:18:121;;3446:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3480:5:112;;:34;;-1:-1:-1;;;3480:34:112;;-1:-1:-1;;;;;5990:32:121;;;3480:34:112;;;5972:51:121;3480:5:112;;;;-1:-1:-1;3480:20:112;;-1:-1:-1;5945:18:121;;3480:34:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3525:24:112;;-1:-1:-1;;;3525:24:112;;-1:-1:-1;;;;;5990:32:121;;3525:24:112;;;5972:51:121;-1:-1:-1;;;;;;;;;;;3525:8:112;-1:-1:-1;3525:8:112;;-1:-1:-1;5945:18:121;;3525:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3559:15:112;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3586:5:112;;:34;;-1:-1:-1;;;3586:34:112;;-1:-1:-1;;;;;5990:32:121;;;3586:34:112;;;5972:51:121;3586:5:112;;;;-1:-1:-1;3586:20:112;;-1:-1:-1;5945:18:121;;3586:34:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3631:24:112;;-1:-1:-1;;;3631:24:112;;-1:-1:-1;;;;;5990:32:121;;3631:24:112;;;5972:51:121;-1:-1:-1;;;;;;;;;;;3631:8:112;-1:-1:-1;3631:8:112;;-1:-1:-1;5945:18:121;;3631:24:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3665:15:112;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3692:5:112;;:67;;-1:-1:-1;;;3692:67:112;;3721:36;3692:67;;;5972:51:121;-1:-1:-1;;;;;3692:5:112;;;;-1:-1:-1;3692:20:112;;-1:-1:-1;5945:18:121;;3692:67:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1006:2760;;;;966:2800::o;2738:178:59:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;9085:51:121;;;-1:-1:-1;;;9152:18:121;;;9145:34;2196:43:52;;;;;;;;;9058:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;10534:51:121;;;;10601:18;;;10594:30;10660:1;10640:18;;;10633:29;-1:-1:-1;;;10678:18:121;;;10671:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;10726:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;10968:51:121;;;;11035:18;;;11028:30;11094:1;11074:18;;;11067:29;-1:-1:-1;;;11112:18:121;;;11105:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;11160:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;11402:51:121;;;;11469:18;;;11462:30;11528:1;11508:18;;;11501:29;-1:-1:-1;;;11546:18:121;;;11539:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;11594:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;11836:51:121;11903:18;;;11896:30;11962:2;11942:18;;;11935:30;-1:-1:-1;;;11981:18:121;;;11974:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;12033:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;5945:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;12275:51:121;;;;12342:18;;;12335:30;12401:2;12381:18;;;12374:30;-1:-1:-1;;;12420:18:121;;;12413:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;12470:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;12712:51:121;;;;12779:18;;;12772:30;12838:1;12818:18;;;12811:29;-1:-1:-1;;;12856:18:121;;;12849:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;12905:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;5972:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;5945:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;13147:51:121;;;;13214:18;;;13207:30;13273:1;13253:18;;;13246:29;-1:-1:-1;;;13291:18:121;;;13284:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;13337:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;13579:51:121;;;;13646:18;;;13639:30;13705:2;13685:18;;;13678:30;-1:-1:-1;;;13724:18:121;;;13717:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;13774:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;14016:51:121;;;;14083:18;;;14076:30;14142:2;14122:18;;;14115:30;-1:-1:-1;;;14161:18:121;;;14154:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;14216:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;14458:51:121;;;;14525:18;;;14518:30;14584:2;14564:18;;;14557:30;-1:-1:-1;;;14603:18:121;;;14596:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;14658:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;5972:51:121;;;;2573:3:114;;;;:22;;5945:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;14975:15:121;;;14957:34;;15027:15;;;15022:2;15007:18;;15000:43;15079:15;;;15074:2;15059:18;;15052:43;15131:15;;;15126:2;15111:18;;15104:43;14906:3;14891:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;15370:51:121;;;;15437:18;;;15430:30;15496:2;15476:18;;;15469:30;-1:-1:-1;;;15515:18:121;;;15508:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;15568:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;15854:25:121;;;15915:2;15895:18;;;15888:30;15954:2;15934:18;;;15927:30;-1:-1:-1;;;15973:19:121;;;15966:42;16060:18;;;16053:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;16025:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:55:-;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;16300:2:121;16282:21;;;16339:2;16319:18;;;16312:30;16378:25;16373:2;16358:18;;16351:53;16436:2;16421:18;;16098:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;16652:51:121;;;-1:-1:-1;;;16719:18:121;;;16712:34;;;;2712:4:52;16762:18:121;;;16755:34;2489:11:52;;1671:64;2586:43;;16625:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:121;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:121:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;8055:380;8134:1;8130:12;;;;8177;;;8198:61;;8252:4;8244:6;8240:17;8230:27;;8198:61;8305:2;8297:6;8294:14;8274:18;8271:38;8268:161;;8351:10;8346:3;8342:20;8339:1;8332:31;8386:4;8383:1;8376:15;8414:4;8411:1;8404:15;8268:161;;8055:380;;;:::o;8779:127::-;8840:10;8835:3;8831:20;8828:1;8821:31;8871:4;8868:1;8861:15;8895:4;8892:1;8885:15;9190:384;-1:-1:-1;;;;;;9375:33:121;;9363:46;;9432:13;;9345:3;;9454:74;9432:13;9517:1;9508:11;;9501:4;9489:17;;9454:74;:::i;:::-;9548:16;;;;9566:1;9544:24;;9190:384;-1:-1:-1;;;9190:384:121:o;9579:287::-;9708:3;9746:6;9740:13;9762:66;9821:6;9816:3;9809:4;9801:6;9797:17;9762:66;:::i;:::-;9844:16;;;;;9579:287;-1:-1:-1;;9579:287:121:o;9871:446::-;10121:2;10110:9;10103:21;10160:1;10155:2;10144:9;10140:18;10133:29;-1:-1:-1;;;10193:2:121;10182:9;10178:18;10171:35;10244:3;10237:4;10226:9;10222:20;10215:33;10084:4;10265:46;10306:3;10295:9;10291:19;10283:6;10265:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806366d9a9a0146200017057806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c5780635702210c146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b62000121620008cd565b6040516200013091906200352d565b60405180910390f35b6200014362000931565b604051620001309190620035d0565b6200012162000a7f565b6200012162000ae1565b6200010b62000b43565b6200017a6200224e565b60405162000130919062003696565b6200019362002338565b6040516200013091906200374d565b6200017a62002412565b62000193620024fc565b620001c0620025d6565b604051901515815260200162000130565b6200012162002703565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062002765565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062002765565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062002765565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062002765565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062002765565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620037b3565b6001600160a01b03161460405180606001604052806028815260200162013c086028913962002765565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b9190620037e5565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002765565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620037b3565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002765565b565b62000587620027b3565b60235460255460405163974b152160e01b81526001600160a01b0391821660048201526200063392919091169063974b152190602401602060405180830381865afa158015620005db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006019190620037e5565b6040518060400160405280601381526020017230b9b9bab6b2b21020981034b99037bbb732b960691b81525062002765565b602c80546001600160a01b0319166ff42d60276dc5999a71cc727b1580ee20908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152673737ba27bbb732b960c11b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b158015620006c057600080fd5b505af1158015620006d5573d6000803e3d6000fd5b5050602d80546001600160a01b0319166f04db850b5e486a6000c620e3762b688b908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152683737ba27bbb732b91960b91b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200076757600080fd5b505af11580156200077c573d6000803e3d6000fd5b5050602e80546001600160a01b031916714a35bbee1b6250dc55a0438a2656f13fa463908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152686e6f744f776e65723360b81b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200081057600080fd5b505af115801562000825573d6000803e3d6000fd5b5050602f80546001600160a01b0319166a0a993c58dadd49644e6e5a908117909155604080516318caf8e360e31b81526004810192909252602482015260096044820152681b9bdd13dddb995c8d60ba1b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b158015620008b257600080fd5b505af1158015620008c7573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200092757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000908575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000a7657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000a5e578382906000526020600020018054620009ca9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620009f89062003809565b801562000a495780601f1062000a1d5761010080835404028352916020019162000a49565b820191906000526020600020905b81548152906001019060200180831162000a2b57829003601f168201915b505050505081526020019060010190620009a8565b50505050815250508152602001906001019062000955565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b602354602c5460405163974b152160e01b81526001600160a01b03918216600482015262000bea92919091169063974b152190602401602060405180830381865afa15801562000b97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bbd9190620037e5565b6040518060400160405280600e81526020016d3930b732379034b99037bbb732b960911b8152506200332c565b602354602d5460405163745d6bff60e01b81526001600160a01b03918216600482015262000c9292919091169063745d6bff90602401602060405180830381865afa15801562000c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c649190620037e5565b6040518060400160405280600f81526020016e72616e646f2063616e20616c6c6f7760881b8152506200332c565b604051630618f58760e51b815263e087598d60e01b600482015260008051602062013bc88339815191529063c31eb0e090602401600060405180830381600087803b15801562000ce157600080fd5b505af115801562000cf6573d6000803e3d6000fd5b5050602c5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000d4f57600080fd5b505af115801562000d64573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000db257600080fd5b505af115801562000dc7573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e1957600080fd5b505af115801562000e2e573d6000803e3d6000fd5b5050602d5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e8757600080fd5b505af115801562000e9c573d6000803e3d6000fd5b5050602354602d54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f5857600080fd5b505af115801562000f6d573d6000803e3d6000fd5b5050602354602c54604051630e0cb96960e31b81526001600160a01b03918216600482015291169250637065cb489150602401600060405180830381600087803b15801562000fbb57600080fd5b505af115801562000fd0573d6000803e3d6000fd5b5050602c546023546040516317aa5fb760e11b81526001600160a01b039283166004820181905294506200107d9350911690632f54bf6e90602401602060405180830381865afa15801562001029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104f9190620037e5565b6040518060400160405280600f81526020016e3930b73237903737bb9037bbb732b960891b81525062002765565b60235460405163974b152160e01b81526001600160a01b0383811660048301526200112092169063974b152190602401602060405180830381865afa158015620010cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010f19190620037e5565b6040518060400160405280601081526020016f1c985b991bc81a5cc8185b1b1bddd95960821b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b038381166004830152620011c492169063745d6bff90602401602060405180830381865afa1580156200116e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011949190620037e5565b60405180604001604052806011815260200170657870656374656420706c7573206f6e6560781b81525062002765565b60405163ca669fa760e01b81526001600160a01b038216600482015260008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b1580156200121557600080fd5b505af11580156200122a573d6000803e3d6000fd5b5050602354602d54604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200127857600080fd5b505af11580156200128d573d6000803e3d6000fd5b5050602354602d546040516317aa5fb760e11b81526001600160a01b0391821660048201526200133b945091169150632f54bf6e90602401602060405180830381865afa158015620012e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013099190620037e5565b604051806040016040528060138152602001723ab732bc3832b1ba32b21030b99037bbb2b73960691b8152506200332c565b602354602d5460405163f31264bb60e01b81526001600160a01b039182166004820152620013f492600092169063f31264bb90602401602060405180830381865afa1580156200138f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013b59190620037b3565b6001600160a01b0316146040518060400160405280601681526020017532bc3832b1ba32b2103737ba1030b63637bbb2b2101960511b81525062002765565b602354602d5460405163745d6bff60e01b81526001600160a01b0391821660048201526200149b92919091169063745d6bff90602401602060405180830381865afa15801562001448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200146e9190620037e5565b6040518060400160405280600e81526020016d6973206e6f7420706c75736f6e6560901b81525062002765565b6040805160028082526060820183526000926020830190803683375050602e5482519293506001600160a01b031691839150600090620014df57620014df62003845565b6001600160a01b039283166020918202929092010152602f5482519116908290600190811062001513576200151362003845565b6001600160a01b039283166020918202929092010152602354602e546040516317aa5fb760e11b81529083166004820152620015c5929190911690632f54bf6e90602401602060405180830381865afa15801562001575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200159b9190620037e5565b6040518060400160405280600b81526020016a6e6f74206f776e6572203360a81b8152506200332c565b602354602f5460405163974b152160e01b81526001600160a01b0391821660048201526200166b92919091169063974b152190602401602060405180830381865afa15801562001619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200163f9190620037e5565b6040518060400160405280600d81526020016c1b9bdd08185b1b1bddd959080d609a1b8152506200332c565b60008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620016b957600080fd5b505af1158015620016ce573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017049084906004016200352d565b600060405180830381600087803b1580156200171f57600080fd5b505af115801562001734573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200178d57600080fd5b505af1158015620017a2573d6000803e3d6000fd5b50506023546040516328ce766760e11b81526001600160a01b03909116925063519cecce9150620017d89084906004016200352d565b600060405180830381600087803b158015620017f357600080fd5b505af115801562001808573d6000803e3d6000fd5b5050602354602e5460405163974b152160e01b81526001600160a01b039182166004820152620018b094509116915063974b152190602401602060405180830381865afa1580156200185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018849190620037e5565b6040518060400160405280600d81526020016c6e6f7420616c6c6f776564203360981b8152506200332c565b602354602f5460405163babcc53960e01b81526001600160a01b0391821660048201526200196092919091169063babcc539906024015b602060405180830381865afa15801562001905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192b9190620037e5565b604051806040016040528060168152602001751a185cc81899595b8818985d18da08185b1b1bddd95960521b81525062002765565b602354602e5460405163babcc53960e01b81526001600160a01b0391821660048201526200199c92919091169063babcc53990602401620018e7565b602354602f5460405163f31264bb60e01b81526001600160a01b03918216600482015262001a4e92600092169063f31264bb90602401602060405180830381865afa158015620019f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a169190620037b3565b6001600160a01b0316146040518060400160405280600f81526020016e616c726561647920706c75736f6e6560881b81525062002765565b602354602f5460405163386ec69760e11b81526001600160a01b03918216600482015262001af69291909116906370dd8d2e90602401602060405180830381865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ac89190620037e5565b6040518060400160405280600f81526020016e1b9bdd08185b1b1bdddb1a5cdd1959608a1b81525062002765565b602354602f5460405163745d6bff60e01b81526001600160a01b03918216600482015262001b9d92919091169063745d6bff90602401602060405180830381865afa15801562001b4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b709190620037e5565b6040518060400160405280600e81526020016d18d85b9b9bdd08185b1b1bddc80d60921b81525062002765565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526848c948741fafad092a9060008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b15801562001bfd57600080fd5b505af115801562001c12573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001c5e57600080fd5b505af115801562001c73573d6000803e3d6000fd5b505060235460405163386ec69760e11b81526001600160a01b03858116600483015262001d21945090911691506370dd8d2e90602401602060405180830381865afa15801562001cc7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ced9190620037e5565b604051806040016040528060158152602001746e6f7420616c6c6f776c697374656420777574203160581b81525062002765565b60235460405163745d6bff60e01b81526001600160a01b03838116600483015262001dc492169063745d6bff90602401602060405180830381865afa15801562001d6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d959190620037e5565b6040518060400160405280601081526020016f31b0b73737ba1038363ab9b7b732901960811b81525062002765565b6023546040516317aa5fb760e11b81526001600160a01b03838116600483015262001e61921690632f54bf6e90602401602060405180830381865afa15801562001e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e389190620037e5565b6040518060400160405280600a8152602001696e6f74206f766572203360b01b8152506200332c565b60235460405163babcc53960e01b815265156f4ba4a5c9600482018190529162001f0c916001600160a01b039091169063babcc53990602401602060405180830381865afa15801562001eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ede9190620037e5565b6040518060400160405280600f81526020016e185b1c9958591e48185b1b1bddd959608a1b8152506200332c565b60405163ca669fa760e01b81526001600160a01b038316600482015260008051602062013bc88339815191529063ca669fa790602401600060405180830381600087803b15801562001f5d57600080fd5b505af115801562001f72573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b15801562001fbe57600080fd5b505af115801562001fd3573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038516600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200202857600080fd5b505af11580156200203d573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200208f57600080fd5b505af1158015620020a4573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526001600160a01b038581166004830152909116925063f8e86ece9150602401600060405180830381600087803b158015620020f057600080fd5b505af115801562002105573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038516600482015260008051602062013bc8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200215a57600080fd5b505af11580156200216f573d6000803e3d6000fd5b5050505060008051602062013be883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021c157600080fd5b505af1158015620021d6573d6000803e3d6000fd5b5050602354604051637c74376760e11b81526e42c9f77e5548e94e0a5cc7f3ae728060048201526001600160a01b03909116925063f8e86ece9150602401600060405180830381600087803b1580156200222f57600080fd5b505af115801562002244573d6000803e3d6000fd5b5050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200231f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e05790505b5050505050815250508152602001906001019062002272565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000a765783829060005260206000200180546200237e9062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620023ac9062003809565b8015620023fd5780601f10620023d157610100808354040283529160200191620023fd565b820191906000526020600020905b815481529060010190602001808311620023df57829003601f168201915b5050505050815260200190600101906200235c565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000a765760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620024e357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620024a45790505b5050505050815250508152602001906001019062002436565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000a76578382906000526020600020018054620025429062003809565b80601f0160208091040260200160405190810160405280929190818152602001828054620025709062003809565b8015620025c15780601f106200259557610100808354040283529160200191620025c1565b820191906000526020600020905b815481529060010190602001808311620025a357829003601f168201915b50505050508152602001906001019062002520565b600754600090610100900460ff1615620025f95750600754610100900460ff1690565b600060008051602062013bc88339815191523b15620026fe576040805160008051602062013bc8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002680917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200385b565b60408051601f19818403018152908290526200269c916200388e565b6000604051808303816000865af19150503d8060008114620026db576040519150601f19603f3d011682016040523d82523d6000602084013e620026e0565b606091505b5091505080806020019051810190620026fa9190620037e5565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000927576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000908575050505050905090565b81620027af577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200279c9190620038ac565b60405180910390a1620027af8262003339565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b1580156200284457600080fd5b505af115801562002859573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b158015620028ee57600080fd5b505af115801562002903573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013bc8833981519152925063c657c7189150608401600060405180830381600087803b1580156200299857600080fd5b505af1158015620029ad573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002a4e57600080fd5b505af115801562002a63573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062013bc883398151915292506306447d569150602401600060405180830381600087803b15801562002abc57600080fd5b505af115801562002ad1573d6000803e3d6000fd5b5050505060405162002ae390620034bd565b604051809103906000f08015801562002b00573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002b8a57600080fd5b505af115801562002b9f573d6000803e3d6000fd5b5050505060405162002bb190620034cb565b604051809103906000f08015801562002bce573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002c5757600080fd5b505af115801562002c6c573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002cba57600080fd5b505af115801562002ccf573d6000803e3d6000fd5b5050505060405162002ce190620034d9565b604051809103906000f08015801562002cfe573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002d8457600080fd5b505af115801562002d99573d6000803e3d6000fd5b5050505060405162002dab90620034e7565b604051809103906000f08015801562002dc8573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002e5257600080fd5b505af115801562002e67573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002e889150620034f5565b6001600160a01b039091168152602001604051809103906000f08015801562002eb5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b15801562002f4457600080fd5b505af115801562002f59573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002f7a915062003503565b6001600160a01b039091168152602001604051809103906000f08015801562002fa7573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b1580156200303657600080fd5b505af11580156200304b573d6000803e3d6000fd5b505050506040516200305d9062003511565b604051809103906000f0801580156200307a573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620030da57600080fd5b505af1158015620030ef573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062003120906200351f565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003165573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062013bc88339815191529063c657c71890608401600060405180830381600087803b158015620031f257600080fd5b505af115801562003207573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562003283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a99190620037b3565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013bc8833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200331057600080fd5b505af115801562003325573d6000803e3d6000fd5b5050505050565b620027af82158262002765565b80620033b1577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200339f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620033b1620033b4565b50565b60008051602062013bc88339815191523b15620034ac576040805160008051602062013bc8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200344792916020016200385b565b60408051601f198184030181529082905262003463916200388e565b6000604051808303816000865af19150503d8060008114620034a2576040519150601f19603f3d011682016040523d82523d6000602084013e620034a7565b606091505b505050505b6007805461ff001916610100179055565b61012080620038de83390190565b610c7280620039fe83390190565b613723806200467083390190565b6125a38062007d9383390190565b6110db806200a33683390190565b613043806200b41183390190565b6137d5806200e45483390190565b611f9f8062011c2983390190565b6020808252825182820181905260009190848201906040850190845b81811015620035705783516001600160a01b03168352928401929184019160010162003549565b50909695505050505050565b60005b83811015620035995781810151838201526020016200357f565b50506000910152565b60008151808452620035bc8160208601602086016200357c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200368657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200366f57605f198985030183526200365c848651620035a2565b948e01949350918d01916001016200363d565b505050978a019794505091880191600101620035f7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200373e57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620037285783516001600160e01b0319168252928b019260019290920191908b0190620036fc565b50978a01979550505091870191600101620036be565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620037a657603f1988860301845262003793858351620035a2565b9450928501929085019060010162003774565b5092979650505050505050565b600060208284031215620037c657600080fd5b81516001600160a01b0381168114620037de57600080fd5b9392505050565b600060208284031215620037f857600080fd5b81518015158114620037de57600080fd5b600181811c908216806200381e57607f821691505b6020821081036200383f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319831681528151600090620038808160048501602087016200357c565b919091016004019392505050565b60008251620038a28184602087016200357c565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620037de6080830184620035a256fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e18cc709bd7059497c3f6574a4e3560ec375d2e29c175bedcf1191c84d62cd8b64736f6c63430008130033", + "sourceMap": "257:3511:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;390:570:125;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;966:2800:125:-;;;:::i;2738:178:72:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5504:14:134;;5497:22;5479:41;;5467:2;5452:18;1819:584:65;5339:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;5972:51:134;3476:66:127;;3487:3;;;;;:23;;5945:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;390:570:125:-;433:13;:11;:13::i;:::-;468:5;;489:2;;468:24;;-1:-1:-1;;;468:24:125;;-1:-1:-1;;;;;489:2:125;;;468:24;;;5972:51:134;457:59:125;;468:5;;;;;:20;;5945:18:134;;468:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;457:59;;;;;;;;;;;;;-1:-1:-1;;;457:59:125;;;:10;:59::i;:::-;527:8;:59;;-1:-1:-1;;;;;;527:59:125;546:39;527:59;;;;;;596:30;;;-1:-1:-1;;;596:30:125;;;;;6528:51:134;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:134;;;6665:38;-1:-1:-1;;;;;;;;;;;596:8:125;;;6720:19:134;;596:30:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:9:125;:58;;-1:-1:-1;;;;;;636:58:125;656:37;636:58;;;;;;704:32;;;-1:-1:-1;;;704:32:125;;;;;6962:51:134;;;;7029:18;;;7022:30;7088:1;7068:18;;;7061:29;-1:-1:-1;;;7106:18:134;;;7099:39;-1:-1:-1;;;;;;;;;;;704:8:125;-1:-1:-1;704:8:125;;-1:-1:-1;7155:19:134;;704:32:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;747:9:125;:64;;-1:-1:-1;;;;;;747:64:125;767:43;747:64;;;;;;821:32;;;-1:-1:-1;;;821:32:125;;;;;7397:51:134;;;;7464:18;;;7457:30;7523:1;7503:18;;;7496:29;-1:-1:-1;;;7541:18:134;;;7534:39;-1:-1:-1;;;;;;;;;;;821:8:125;-1:-1:-1;821:8:125;;-1:-1:-1;7590:19:134;;821:32:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;864:9:125;:47;;-1:-1:-1;;;;;;864:47:125;884:26;864:47;;;;;;921:32;;;-1:-1:-1;;;921:32:125;;;;;7832:51:134;;;;7899:18;;;7892:30;7958:1;7938:18;;;7931:29;-1:-1:-1;;;7976:18:134;;;7969:39;-1:-1:-1;;;;;;;;;;;921:8:125;-1:-1:-1;921:8:125;;-1:-1:-1;8025:19:134;;921:32:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;390:570::o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;966:2800:125:-;1028:5;;1049:8;;1028:30;;-1:-1:-1;;;1028:30:125;;-1:-1:-1;;;;;1049:8:125;;;1028:30;;;5972:51:134;1016:61:125;;1028:5;;;;;:20;;5945:18:134;;1028:30:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1016:61;;;;;;;;;;;;;-1:-1:-1;;;1016:61:125;;;:11;:61::i;:::-;1099:5;;1118:9;;1099:29;;-1:-1:-1;;;1099:29:125;;-1:-1:-1;;;;;1118:9:125;;;1099:29;;;5972:51:134;1087:61:125;;1099:5;;;;;:18;;5945::134;;1099:29:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1087:61;;;;;;;;;;;;;-1:-1:-1;;;1087:61:125;;;:11;:61::i;:::-;1159:46;;-1:-1:-1;;;1159:46:125;;-1:-1:-1;;;1159:46:125;;;8584:52:134;-1:-1:-1;;;;;;;;;;;1159:15:125;;;8557:18:134;;1159:46:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1224:8:125;;1215:18;;-1:-1:-1;;;1215:18:125;;-1:-1:-1;;;;;1224:8:125;;;1215:18;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1215:8:125;-1:-1:-1;1215:8:125;;-1:-1:-1;5945:18:134;;1215::125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1243:5:125;;1258:9;;1243:25;;-1:-1:-1;;;1243:25:125;;-1:-1:-1;;;;;1258:9:125;;;1243:25;;;5972:51:134;1243:5:125;;;-1:-1:-1;1243:14:125;;-1:-1:-1;5945:18:134;;1243:25:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;1279:15:125;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1315:9:125;;1306:19;;-1:-1:-1;;;1306:19:125;;-1:-1:-1;;;;;1315:9:125;;;1306:19;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1306:8:125;-1:-1:-1;1306:8:125;;-1:-1:-1;5945:18:134;;1306:19:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1335:5:125;;1350:9;;1335:25;;-1:-1:-1;;;1335:25:125;;-1:-1:-1;;;;;1350:9:125;;;1335:25;;;5972:51:134;1335:5:125;;;-1:-1:-1;1335:14:125;;-1:-1:-1;5945:18:134;;1335:25:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1380:2:125;;1371:12;;-1:-1:-1;;;1371:12:125;;-1:-1:-1;;;;;1380:2:125;;;1371:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1371:8:125;-1:-1:-1;1371:8:125;;-1:-1:-1;5945:18:134;;1371:12:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1393:5:125;;1408:8;;1393:24;;-1:-1:-1;;;1393:24:125;;-1:-1:-1;;;;;1408:8:125;;;1393:24;;;5972:51:134;1393:5:125;;;-1:-1:-1;1393:14:125;;-1:-1:-1;5945:18:134;;1393:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1446:8:125;;1475:5;;:23;;-1:-1:-1;;;1475:23:125;;-1:-1:-1;;;;;1446:8:125;;;1475:23;;;5972:51:134;;;1446:8:125;-1:-1:-1;1464:54:125;;-1:-1:-1;1475:5:125;;;:13;;5945:18:134;;1475:23:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1464:54;;;;;;;;;;;;;-1:-1:-1;;;1464:54:125;;;:10;:54::i;:::-;1539:5;;:30;;-1:-1:-1;;;1539:30:125;;-1:-1:-1;;;;;5990:32:134;;;1539:30:125;;;5972:51:134;1528:62:125;;1539:5;;:20;;5945:18:134;;1539:30:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1528:62;;;;;;;;;;;;;-1:-1:-1;;;1528:62:125;;;:10;:62::i;:::-;1611:5;;:28;;-1:-1:-1;;;1611:28:125;;-1:-1:-1;;;;;5990:32:134;;;1611:28:125;;;5972:51:134;1600:61:125;;1611:5;;:18;;5945::134;;1611:28:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1600:61;;;;;;;;;;;;;-1:-1:-1;;;1600:61:125;;;:10;:61::i;:::-;1672:18;;-1:-1:-1;;;1672:18:125;;-1:-1:-1;;;;;5990:32:134;;1672:18:125;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1672:8:125;;;5945:18:134;;1672::125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1700:5:125;;1721:9;;1700:31;;-1:-1:-1;;;1700:31:125;;-1:-1:-1;;;;;1721:9:125;;;1700:31;;;5972:51:134;1700:5:125;;;-1:-1:-1;1700:20:125;;-1:-1:-1;5945:18:134;;1700:31:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1753:5:125;;1767:9;;1753:24;;-1:-1:-1;;;1753:24:125;;-1:-1:-1;;;;;1767:9:125;;;1753:24;;;5972:51:134;1741:60:125;;-1:-1:-1;1753:5:125;;;-1:-1:-1;1753:13:125;;5945:18:134;;1753:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1741:60;;;;;;;;;;;;;-1:-1:-1;;;1741:60:125;;;:11;:60::i;:::-;1822:5;;1836:9;;1822:24;;-1:-1:-1;;;1822:24:125;;-1:-1:-1;;;;;1836:9:125;;;1822:24;;;5972:51:134;1811:76:125;;1858:1;;1822:5;;:13;;5945:18:134;;1822:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1822:38:125;;1811:76;;;;;;;;;;;;;-1:-1:-1;;;1811:76:125;;;:10;:76::i;:::-;1909:5;;1928:9;;1909:29;;-1:-1:-1;;;1909:29:125;;-1:-1:-1;;;;;1928:9:125;;;1909:29;;;5972:51:134;1898:59:125;;1909:5;;;;;:18;;5945::134;;1909:29:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1898:59;;;;;;;;;;;;;-1:-1:-1;;;1898:59:125;;;:10;:59::i;:::-;2046:16;;;2060:1;2046:16;;;;;;;;2010:33;;2046:16;;;;;;;;-1:-1:-1;;2094:9:125;;2072:19;;;;-1:-1:-1;;;;;;2094:9:125;;2072:19;;-1:-1:-1;2094:9:125;;2072:19;;;;:::i;:::-;-1:-1:-1;;;;;2072:31:125;;;:19;;;;;;;;;:31;2135:9;;2113:19;;2135:9;;;2113:16;;2135:9;;2113:19;;;;;;:::i;:::-;-1:-1:-1;;;;;2113:31:125;;;:19;;;;;;;;;:31;2166:5;;2180:9;;2166:24;;-1:-1:-1;;;2166:24:125;;2180:9;;;2166:24;;;5972:51:134;2154:52:125;;2166:5;;;;;:13;;5945:18:134;;2166:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2154:52;;;;;;;;;;;;;-1:-1:-1;;;2154:52:125;;;:11;:52::i;:::-;2228:5;;2249:9;;2228:31;;-1:-1:-1;;;2228:31:125;;-1:-1:-1;;;;;2249:9:125;;;2228:31;;;5972:51:134;2216:61:125;;2228:5;;;;;:20;;5945:18:134;;2228:31:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2216:61;;;;;;;;;;;;;-1:-1:-1;;;2216:61:125;;;:11;:61::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;2361:15:125;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:5:125;;:43;;-1:-1:-1;;;2388:43:125;;-1:-1:-1;;;;;2388:5:125;;;;-1:-1:-1;2388:25:125;;-1:-1:-1;2388:43:125;;2414:16;;2388:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2451:2:125;;2442:12;;-1:-1:-1;;;2442:12:125;;-1:-1:-1;;;;;2451:2:125;;;2442:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;2442:8:125;-1:-1:-1;2442:8:125;;-1:-1:-1;5945:18:134;;2442:12:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2464:5:125;;:43;;-1:-1:-1;;;2464:43:125;;-1:-1:-1;;;;;2464:5:125;;;;-1:-1:-1;2464:25:125;;-1:-1:-1;2464:43:125;;2490:16;;2464:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2530:5:125;;2551:9;;2530:31;;-1:-1:-1;;;2530:31:125;;-1:-1:-1;;;;;2551:9:125;;;2530:31;;;5972:51:134;2518:61:125;;-1:-1:-1;2530:5:125;;;-1:-1:-1;2530:20:125;;5945:18:134;;2530:31:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2518:61;;;;;;;;;;;;;-1:-1:-1;;;2518:61:125;;;:11;:61::i;:::-;2600:5;;2616:9;;2600:26;;-1:-1:-1;;;2600:26:125;;-1:-1:-1;;;;;2616:9:125;;;2600:26;;;5972:51:134;2589:64:125;;2600:5;;;;;:15;;5945:18:134;;2600:26:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2589:64;;;;;;;;;;;;;-1:-1:-1;;;2589:64:125;;;:10;:64::i;:::-;2674:5;;2690:9;;2674:26;;-1:-1:-1;;;2674:26:125;;-1:-1:-1;;;;;2690:9:125;;;2674:26;;;5972:51:134;2663:64:125;;2674:5;;;;;:15;;5945:18:134;;2674:26:125;5826:203:134;2663:64:125;2749:5;;2763:9;;2749:24;;-1:-1:-1;;;2749:24:125;;-1:-1:-1;;;;;2763:9:125;;;2749:24;;;5972:51:134;2738:69:125;;2785:1;;2749:5;;:13;;5945:18:134;;2749:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2749:38:125;;2738:69;;;;;;;;;;;;;-1:-1:-1;;;2738:69:125;;;:10;:69::i;:::-;2828:5;;2848:9;;2828:30;;-1:-1:-1;;;2828:30:125;;-1:-1:-1;;;;;2848:9:125;;;2828:30;;;5972:51:134;2817:61:125;;2828:5;;;;;:19;;5945:18:134;;2828:30:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2817:61;;;;;;;;;;;;;-1:-1:-1;;;2817:61:125;;;:10;:61::i;:::-;2899:5;;2918:9;;2899:29;;-1:-1:-1;;;2899:29:125;;-1:-1:-1;;;;;2918:9:125;;;2899:29;;;5972:51:134;2888:59:125;;2899:5;;;;;:18;;5945::134;;2899:29:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2888:59;;;;;;;;;;;;;-1:-1:-1;;;2888:59:125;;;:10;:59::i;:::-;3033:2;;3024:12;;-1:-1:-1;;;3024:12:125;;-1:-1:-1;;;;;3033:2:125;;;3024:12;;;5972:51:134;2991:22:125;;-1:-1:-1;;;;;;;;;;;3024:8:125;;;5945:18:134;;3024:12:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3046:5:125;;:36;;-1:-1:-1;;;3046:36:125;;-1:-1:-1;;;;;5990:32:134;;;3046:36:125;;;5972:51:134;3046:5:125;;;;-1:-1:-1;3046:20:125;;-1:-1:-1;5945:18:134;;3046:36:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3104:5:125;;:35;;-1:-1:-1;;;3104:35:125;;-1:-1:-1;;;;;5990:32:134;;;3104:35:125;;;5972:51:134;3093:72:125;;-1:-1:-1;3104:5:125;;;;-1:-1:-1;3104:19:125;;5945:18:134;;3104:35:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3093:72;;;;;;;;;;;;;-1:-1:-1;;;3093:72:125;;;:10;:72::i;:::-;3186:5;;:34;;-1:-1:-1;;;3186:34:125;;-1:-1:-1;;;;;5990:32:134;;;3186:34:125;;;5972:51:134;3175:66:125;;3186:5;;:18;;5945::134;;3186:34:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3175:66;;;;;;;;;;;;;-1:-1:-1;;;3175:66:125;;;:10;:66::i;:::-;3263:5;;:29;;-1:-1:-1;;;3263:29:125;;-1:-1:-1;;;;;5990:32:134;;;3263:29:125;;;5972:51:134;3251:56:125;;3263:5;;:13;;5945:18:134;;3263:29:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3251:56;;;;;;;;;;;;;-1:-1:-1;;;3251:56:125;;;:11;:56::i;:::-;3386:5;;:29;;-1:-1:-1;;;3386:29:125;;3349:14;3386:29;;;5972:51:134;;;3349:14:125;3374:61;;-1:-1:-1;;;;;3386:5:125;;;;:15;;5945:18:134;;3386:29:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3374:61;;;;;;;;;;;;;-1:-1:-1;;;3374:61:125;;;:11;:61::i;:::-;3446:24;;-1:-1:-1;;;3446:24:125;;-1:-1:-1;;;;;5990:32:134;;3446:24:125;;;5972:51:134;-1:-1:-1;;;;;;;;;;;3446:8:125;;;5945:18:134;;3446:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3480:5:125;;:34;;-1:-1:-1;;;3480:34:125;;-1:-1:-1;;;;;5990:32:134;;;3480:34:125;;;5972:51:134;3480:5:125;;;;-1:-1:-1;3480:20:125;;-1:-1:-1;5945:18:134;;3480:34:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3525:24:125;;-1:-1:-1;;;3525:24:125;;-1:-1:-1;;;;;5990:32:134;;3525:24:125;;;5972:51:134;-1:-1:-1;;;;;;;;;;;3525:8:125;-1:-1:-1;3525:8:125;;-1:-1:-1;5945:18:134;;3525:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3559:15:125;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3586:5:125;;:34;;-1:-1:-1;;;3586:34:125;;-1:-1:-1;;;;;5990:32:134;;;3586:34:125;;;5972:51:134;3586:5:125;;;;-1:-1:-1;3586:20:125;;-1:-1:-1;5945:18:134;;3586:34:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3631:24:125;;-1:-1:-1;;;3631:24:125;;-1:-1:-1;;;;;5990:32:134;;3631:24:125;;;5972:51:134;-1:-1:-1;;;;;;;;;;;3631:8:125;-1:-1:-1;3631:8:125;;-1:-1:-1;5945:18:134;;3631:24:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3665:15:125;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3692:5:125;;:67;;-1:-1:-1;;;3692:67:125;;3721:36;3692:67;;;5972:51:134;-1:-1:-1;;;;;3692:5:125;;;;-1:-1:-1;3692:20:125;;-1:-1:-1;5945:18:134;;3692:67:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1006:2760;;;;966:2800::o;2738:178:72:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;9085:51:134;;;-1:-1:-1;;;9152:18:134;;;9145:34;2196:43:65;;;;;;;;;9058:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;10534:51:134;;;;10601:18;;;10594:30;10660:1;10640:18;;;10633:29;-1:-1:-1;;;10678:18:134;;;10671:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;10726:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;10968:51:134;;;;11035:18;;;11028:30;11094:1;11074:18;;;11067:29;-1:-1:-1;;;11112:18:134;;;11105:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;11160:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;11402:51:134;;;;11469:18;;;11462:30;11528:1;11508:18;;;11501:29;-1:-1:-1;;;11546:18:134;;;11539:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;11594:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;11836:51:134;11903:18;;;11896:30;11962:2;11942:18;;;11935:30;-1:-1:-1;;;11981:18:134;;;11974:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;12033:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;5945:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;12275:51:134;;;;12342:18;;;12335:30;12401:2;12381:18;;;12374:30;-1:-1:-1;;;12420:18:134;;;12413:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;12470:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;12712:51:134;;;;12779:18;;;12772:30;12838:1;12818:18;;;12811:29;-1:-1:-1;;;12856:18:134;;;12849:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;12905:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;5972:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;5945:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;13147:51:134;;;;13214:18;;;13207:30;13273:1;13253:18;;;13246:29;-1:-1:-1;;;13291:18:134;;;13284:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;13337:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;13579:51:134;;;;13646:18;;;13639:30;13705:2;13685:18;;;13678:30;-1:-1:-1;;;13724:18:134;;;13717:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;13774:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;14016:51:134;;;;14083:18;;;14076:30;14142:2;14122:18;;;14115:30;-1:-1:-1;;;14161:18:134;;;14154:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;14216:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;14458:51:134;;;;14525:18;;;14518:30;14584:2;14564:18;;;14557:30;-1:-1:-1;;;14603:18:134;;;14596:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;14658:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;5972:51:134;;;;2573:3:127;;;;:22;;5945:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;14975:15:134;;;14957:34;;15027:15;;;15022:2;15007:18;;15000:43;15079:15;;;15074:2;15059:18;;15052:43;15131:15;;;15126:2;15111:18;;15104:43;14906:3;14891:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;15370:51:134;;;;15437:18;;;15430:30;15496:2;15476:18;;;15469:30;-1:-1:-1;;;15515:18:134;;;15508:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;15568:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;15854:25:134;;;15915:2;15895:18;;;15888:30;15954:2;15934:18;;;15927:30;-1:-1:-1;;;15973:19:134;;;15966:42;16060:18;;;16053:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;16025:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:68:-;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;16300:2:134;16282:21;;;16339:2;16319:18;;;16312:30;16378:25;16373:2;16358:18;;16351:53;16436:2;16421:18;;16098:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;16652:51:134;;;-1:-1:-1;;;16719:18:134;;;16712:34;;;;2712:4:65;16762:18:134;;;16755:34;2489:11:65;;1671:64;2586:43;;16625:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:134;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:134:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;8055:380;8134:1;8130:12;;;;8177;;;8198:61;;8252:4;8244:6;8240:17;8230:27;;8198:61;8305:2;8297:6;8294:14;8274:18;8271:38;8268:161;;8351:10;8346:3;8342:20;8339:1;8332:31;8386:4;8383:1;8376:15;8414:4;8411:1;8404:15;8268:161;;8055:380;;;:::o;8779:127::-;8840:10;8835:3;8831:20;8828:1;8821:31;8871:4;8868:1;8861:15;8895:4;8892:1;8885:15;9190:384;-1:-1:-1;;;;;;9375:33:134;;9363:46;;9432:13;;9345:3;;9454:74;9432:13;9517:1;9508:11;;9501:4;9489:17;;9454:74;:::i;:::-;9548:16;;;;9566:1;9544:24;;9190:384;-1:-1:-1;;;9190:384:134:o;9579:287::-;9708:3;9746:6;9740:13;9762:66;9821:6;9816:3;9809:4;9801:6;9797:17;9762:66;:::i;:::-;9844:16;;;;;9579:287;-1:-1:-1;;9579:287:134:o;9871:446::-;10121:2;10110:9;10103:21;10160:1;10155:2;10144:9;10140:18;10133:29;-1:-1:-1;;;10193:2:134;10182:9;10178:18;10171:35;10244:3;10237:4;10226:9;10222:20;10215:33;10084:4;10265:46;10306:3;10295:9;10291:19;10283:6;10265:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -591,7 +591,7 @@ "testAllowListSequence()": "5702210c", "testAreDeployedContracts()": "00036032" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAllowListSequence\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/AllowList.t.sol\":\"AllowListT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/AllowList.t.sol\":{\"keccak256\":\"0xacc15ee4456d3ba65c07dc614a9c9e0cceb66c9fb0fd39c46dc2abc933b6496e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ee12e479ffcc7035e0ba8f94e33823f4e3489c345d02071160da2277897f8c9f\",\"dweb:/ipfs/QmcgcaFP1pzSGK17EM7oCYM2tphkbXHFb2UkPuFnDGcHRr\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAllowListSequence\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/AllowList.t.sol\":\"AllowListT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/AllowList.t.sol\":{\"keccak256\":\"0xacc15ee4456d3ba65c07dc614a9c9e0cceb66c9fb0fd39c46dc2abc933b6496e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ee12e479ffcc7035e0ba8f94e33823f4e3489c345d02071160da2277897f8c9f\",\"dweb:/ipfs/QmcgcaFP1pzSGK17EM7oCYM2tphkbXHFb2UkPuFnDGcHRr\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1234,6 +1234,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1298,6 +1306,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1411,10 +1427,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1927,28 +1943,28 @@ }, "ast": { "absolutePath": "test/AllowList.t.sol", - "id": 69390, + "id": 70176, "exportedSymbols": { "AllowListT": [ - 69389 + 70175 ], "DeploysInit": [ - 70240 + 71026 ], "IAllowlist": [ - 10439 + 11190 ], "console": [ - 32435 + 33186 ] }, "nodeType": "SourceUnit", - "src": "39:3730:112", + "src": "39:3730:125", "nodes": [ { - "id": 68939, + "id": 69725, "nodeType": "PragmaDirective", - "src": "39:23:112", + "src": "39:23:125", "nodes": [], "literals": [ "solidity", @@ -1957,24 +1973,24 @@ ] }, { - "id": 68941, + "id": 69727, "nodeType": "ImportDirective", - "src": "64:48:112", + "src": "64:48:125", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 69390, - "sourceUnit": 70241, + "scope": 70176, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 68940, + "id": 69726, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:112", + "referencedDeclaration": 71026, + "src": "72:11:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1983,24 +1999,24 @@ "unitAlias": "" }, { - "id": 68943, + "id": 69729, "nodeType": "ImportDirective", - "src": "114:61:112", + "src": "114:61:125", "nodes": [], "absolutePath": "contracts/utils/IAllowlist.sol", "file": "../contracts/utils/IAllowlist.sol", "nameLocation": "-1:-1:-1", - "scope": 69390, - "sourceUnit": 10440, + "scope": 70176, + "sourceUnit": 11191, "symbolAliases": [ { "foreign": { - "id": 68942, + "id": 69728, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "122:10:112", + "referencedDeclaration": 11190, + "src": "122:10:125", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2009,33 +2025,33 @@ "unitAlias": "" }, { - "id": 68944, + "id": 69730, "nodeType": "ImportDirective", - "src": "177:31:112", + "src": "177:31:125", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 69390, - "sourceUnit": 32436, + "scope": 70176, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 69389, + "id": 70175, "nodeType": "ContractDefinition", - "src": "257:3511:112", + "src": "257:3511:125", "nodes": [ { - "id": 68948, + "id": 69734, "nodeType": "VariableDeclaration", - "src": "298:16:112", + "src": "298:16:125", "nodes": [], "constant": false, "mutability": "mutable", "name": "notOwner", - "nameLocation": "306:8:112", - "scope": 69389, + "nameLocation": "306:8:125", + "scope": 70175, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2043,10 +2059,10 @@ "typeString": "address" }, "typeName": { - "id": 68947, + "id": 69733, "name": "address", "nodeType": "ElementaryTypeName", - "src": "298:7:112", + "src": "298:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2056,15 +2072,15 @@ "visibility": "internal" }, { - "id": 68950, + "id": 69736, "nodeType": "VariableDeclaration", - "src": "320:17:112", + "src": "320:17:125", "nodes": [], "constant": false, "mutability": "mutable", "name": "notOwner2", - "nameLocation": "328:9:112", - "scope": 69389, + "nameLocation": "328:9:125", + "scope": 70175, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2072,10 +2088,10 @@ "typeString": "address" }, "typeName": { - "id": 68949, + "id": 69735, "name": "address", "nodeType": "ElementaryTypeName", - "src": "320:7:112", + "src": "320:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2085,15 +2101,15 @@ "visibility": "internal" }, { - "id": 68952, + "id": 69738, "nodeType": "VariableDeclaration", - "src": "343:17:112", + "src": "343:17:125", "nodes": [], "constant": false, "mutability": "mutable", "name": "notOwner3", - "nameLocation": "351:9:112", - "scope": 69389, + "nameLocation": "351:9:125", + "scope": 70175, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2101,10 +2117,10 @@ "typeString": "address" }, "typeName": { - "id": 68951, + "id": 69737, "name": "address", "nodeType": "ElementaryTypeName", - "src": "343:7:112", + "src": "343:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2114,15 +2130,15 @@ "visibility": "internal" }, { - "id": 68954, + "id": 69740, "nodeType": "VariableDeclaration", - "src": "366:17:112", + "src": "366:17:125", "nodes": [], "constant": false, "mutability": "mutable", "name": "notOwner4", - "nameLocation": "374:9:112", - "scope": 69389, + "nameLocation": "374:9:125", + "scope": 70175, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2130,10 +2146,10 @@ "typeString": "address" }, "typeName": { - "id": 68953, + "id": 69739, "name": "address", "nodeType": "ElementaryTypeName", - "src": "366:7:112", + "src": "366:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2143,14 +2159,14 @@ "visibility": "internal" }, { - "id": 69028, + "id": 69814, "nodeType": "FunctionDefinition", - "src": "390:570:112", + "src": "390:570:125", "nodes": [], "body": { - "id": 69027, + "id": 69813, "nodeType": "Block", - "src": "423:537:112", + "src": "423:537:125", "nodes": [], "statements": [ { @@ -2159,33 +2175,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68958, + "id": 69744, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "433:5:112", + "src": "433:5:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_AllowListT_$69389_$", + "typeIdentifier": "t_type$_t_super$_AllowListT_$70175_$", "typeString": "type(contract super AllowListT)" } }, - "id": 68960, + "id": 69746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "439:5:112", + "memberLocation": "439:5:125", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "433:11:112", + "referencedDeclaration": 70929, + "src": "433:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 68961, + "id": 69747, "isConstant": false, "isLValue": false, "isPure": false, @@ -2194,16 +2210,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "433:13:112", + "src": "433:13:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68962, + "id": 69748, "nodeType": "ExpressionStatement", - "src": "433:13:112" + "src": "433:13:125" }, { "expression": { @@ -2211,12 +2227,12 @@ { "arguments": [ { - "id": 68966, + "id": 69752, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "489:2:112", + "referencedDeclaration": 70587, + "src": "489:2:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2231,33 +2247,33 @@ } ], "expression": { - "id": 68964, + "id": 69750, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "468:5:112", + "referencedDeclaration": 70570, + "src": "468:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 68965, + "id": 69751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "474:14:112", + "memberLocation": "474:14:125", "memberName": "isAllowedOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10410, - "src": "468:20:112", + "referencedDeclaration": 11161, + "src": "468:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 68967, + "id": 69753, "isConstant": false, "isLValue": false, "isPure": false, @@ -2266,7 +2282,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "468:24:112", + "src": "468:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2275,14 +2291,14 @@ }, { "hexValue": "617373756d6564204130206973206f776e6572", - "id": 68968, + "id": 69754, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "494:21:112", + "src": "494:21:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a1b4af13c69e39205cd798827dd1ff9e73b21cdbca618b75fe89bc228055c349", "typeString": "literal_string \"assumed A0 is owner\"" @@ -2301,21 +2317,21 @@ "typeString": "literal_string \"assumed A0 is owner\"" } ], - "id": 68963, + "id": 69749, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "457:10:112", + "referencedDeclaration": 11481, + "src": "457:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 68969, + "id": 69755, "isConstant": false, "isLValue": false, "isPure": false, @@ -2324,31 +2340,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "457:59:112", + "src": "457:59:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68970, + "id": 69756, "nodeType": "ExpressionStatement", - "src": "457:59:112" + "src": "457:59:125" }, { "expression": { - "id": 68976, + "id": 69762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68971, + "id": 69757, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "527:8:112", + "referencedDeclaration": 69734, + "src": "527:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2360,14 +2376,14 @@ "arguments": [ { "hexValue": "333234353637323334353635333436353738363736353433383735383637343635353433323030", - "id": 68974, + "id": 69760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "546:39:112", + "src": "546:39:125", "typeDescriptions": { "typeIdentifier": "t_rational_324567234565346578676543875867465543200_by_1", "typeString": "int_const 3245...(31 digits omitted)...3200" @@ -2382,26 +2398,26 @@ "typeString": "int_const 3245...(31 digits omitted)...3200" } ], - "id": 68973, + "id": 69759, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "538:7:112", + "src": "538:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68972, + "id": 69758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "538:7:112", + "src": "538:7:125", "typeDescriptions": {} } }, - "id": 68975, + "id": 69761, "isConstant": false, "isLValue": false, "isPure": true, @@ -2410,33 +2426,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "538:48:112", + "src": "538:48:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "527:59:112", + "src": "527:59:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68977, + "id": 69763, "nodeType": "ExpressionStatement", - "src": "527:59:112" + "src": "527:59:125" }, { "expression": { "arguments": [ { - "id": 68981, + "id": 69767, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "605:8:112", + "referencedDeclaration": 69734, + "src": "605:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2444,14 +2460,14 @@ }, { "hexValue": "6e6f744f776e6572", - "id": 68982, + "id": 69768, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "615:10:112", + "src": "615:10:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_79fac6170d60e4fb8d1f86a7927445ebaa2438b1380a7fa5e498742e634d782b", "typeString": "literal_string \"notOwner\"" @@ -2471,33 +2487,33 @@ } ], "expression": { - "id": 68978, + "id": 69764, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "596:2:112", + "referencedDeclaration": 13541, + "src": "596:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68980, + "id": 69766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "599:5:112", + "memberLocation": "599:5:125", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "596:8:112", + "referencedDeclaration": 23909, + "src": "596:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68983, + "id": 69769, "isConstant": false, "isLValue": false, "isPure": false, @@ -2506,31 +2522,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "596:30:112", + "src": "596:30:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68984, + "id": 69770, "nodeType": "ExpressionStatement", - "src": "596:30:112" + "src": "596:30:125" }, { "expression": { - "id": 68990, + "id": 69776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68985, + "id": 69771, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "636:9:112", + "referencedDeclaration": 69736, + "src": "636:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2542,14 +2558,14 @@ "arguments": [ { "hexValue": "36343536373233343536333234393939393935333436353738363736353433383735323131", - "id": 68988, + "id": 69774, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "656:37:112", + "src": "656:37:125", "typeDescriptions": { "typeIdentifier": "t_rational_6456723456324999995346578676543875211_by_1", "typeString": "int_const 6456...(29 digits omitted)...5211" @@ -2564,26 +2580,26 @@ "typeString": "int_const 6456...(29 digits omitted)...5211" } ], - "id": 68987, + "id": 69773, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "648:7:112", + "src": "648:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68986, + "id": 69772, "name": "address", "nodeType": "ElementaryTypeName", - "src": "648:7:112", + "src": "648:7:125", "typeDescriptions": {} } }, - "id": 68989, + "id": 69775, "isConstant": false, "isLValue": false, "isPure": true, @@ -2592,33 +2608,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "648:46:112", + "src": "648:46:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "636:58:112", + "src": "636:58:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68991, + "id": 69777, "nodeType": "ExpressionStatement", - "src": "636:58:112" + "src": "636:58:125" }, { "expression": { "arguments": [ { - "id": 68995, + "id": 69781, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "713:9:112", + "referencedDeclaration": 69736, + "src": "713:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2626,14 +2642,14 @@ }, { "hexValue": "6e6f744f776e657232", - "id": 68996, + "id": 69782, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "724:11:112", + "src": "724:11:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_db897c3790929e7a2ce039351051dd8c9c4fa6b4b273b990a7745f0f4e7cdcb1", "typeString": "literal_string \"notOwner2\"" @@ -2653,33 +2669,33 @@ } ], "expression": { - "id": 68992, + "id": 69778, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "704:2:112", + "referencedDeclaration": 13541, + "src": "704:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68994, + "id": 69780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "707:5:112", + "memberLocation": "707:5:125", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "704:8:112", + "referencedDeclaration": 23909, + "src": "704:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68997, + "id": 69783, "isConstant": false, "isLValue": false, "isPure": false, @@ -2688,31 +2704,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "704:32:112", + "src": "704:32:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68998, + "id": 69784, "nodeType": "ExpressionStatement", - "src": "704:32:112" + "src": "704:32:125" }, { "expression": { - "id": 69004, + "id": 69790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68999, + "id": 69785, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "747:9:112", + "referencedDeclaration": 69738, + "src": "747:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2724,14 +2740,14 @@ "arguments": [ { "hexValue": "36343634353933393236333534333436353435333634373532353435373534353734353536373334353633", - "id": 69002, + "id": 69788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "767:43:112", + "src": "767:43:125", "typeDescriptions": { "typeIdentifier": "t_rational_6464593926354346545364752545754574556734563_by_1", "typeString": "int_const 6464...(35 digits omitted)...4563" @@ -2746,26 +2762,26 @@ "typeString": "int_const 6464...(35 digits omitted)...4563" } ], - "id": 69001, + "id": 69787, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "759:7:112", + "src": "759:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69000, + "id": 69786, "name": "address", "nodeType": "ElementaryTypeName", - "src": "759:7:112", + "src": "759:7:125", "typeDescriptions": {} } }, - "id": 69003, + "id": 69789, "isConstant": false, "isLValue": false, "isPure": true, @@ -2774,33 +2790,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "759:52:112", + "src": "759:52:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "747:64:112", + "src": "747:64:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69005, + "id": 69791, "nodeType": "ExpressionStatement", - "src": "747:64:112" + "src": "747:64:125" }, { "expression": { "arguments": [ { - "id": 69009, + "id": 69795, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "830:9:112", + "referencedDeclaration": 69738, + "src": "830:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2808,14 +2824,14 @@ }, { "hexValue": "6e6f744f776e657233", - "id": 69010, + "id": 69796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "841:11:112", + "src": "841:11:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8954c176cc8d3d3387eebb66fa5e6dd7b4dde4bd156d51bd6d99709ef246f0b", "typeString": "literal_string \"notOwner3\"" @@ -2835,33 +2851,33 @@ } ], "expression": { - "id": 69006, + "id": 69792, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "821:2:112", + "referencedDeclaration": 13541, + "src": "821:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69008, + "id": 69794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "824:5:112", + "memberLocation": "824:5:125", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "821:8:112", + "referencedDeclaration": 23909, + "src": "821:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69011, + "id": 69797, "isConstant": false, "isLValue": false, "isPure": false, @@ -2870,31 +2886,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "821:32:112", + "src": "821:32:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69012, + "id": 69798, "nodeType": "ExpressionStatement", - "src": "821:32:112" + "src": "821:32:125" }, { "expression": { - "id": 69018, + "id": 69804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69013, + "id": 69799, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "864:9:112", + "referencedDeclaration": 69740, + "src": "864:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2906,14 +2922,14 @@ "arguments": [ { "hexValue": "3132383132383933343735333432383937353833363438333436", - "id": 69016, + "id": 69802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "884:26:112", + "src": "884:26:125", "typeDescriptions": { "typeIdentifier": "t_rational_12812893475342897583648346_by_1", "typeString": "int_const 12812893475342897583648346" @@ -2928,26 +2944,26 @@ "typeString": "int_const 12812893475342897583648346" } ], - "id": 69015, + "id": 69801, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "876:7:112", + "src": "876:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69014, + "id": 69800, "name": "address", "nodeType": "ElementaryTypeName", - "src": "876:7:112", + "src": "876:7:125", "typeDescriptions": {} } }, - "id": 69017, + "id": 69803, "isConstant": false, "isLValue": false, "isPure": true, @@ -2956,33 +2972,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "876:35:112", + "src": "876:35:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "864:47:112", + "src": "864:47:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69019, + "id": 69805, "nodeType": "ExpressionStatement", - "src": "864:47:112" + "src": "864:47:125" }, { "expression": { "arguments": [ { - "id": 69023, + "id": 69809, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "930:9:112", + "referencedDeclaration": 69740, + "src": "930:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2990,14 +3006,14 @@ }, { "hexValue": "6e6f744f776e657234", - "id": 69024, + "id": 69810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "941:11:112", + "src": "941:11:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ddd1ae75b23cb2806bcfac6101e68d994a85ec6ee94a88273132288b77edd2f", "typeString": "literal_string \"notOwner4\"" @@ -3017,33 +3033,33 @@ } ], "expression": { - "id": 69020, + "id": 69806, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "921:2:112", + "referencedDeclaration": 13541, + "src": "921:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69022, + "id": 69808, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "924:5:112", + "memberLocation": "924:5:125", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "921:8:112", + "referencedDeclaration": 23909, + "src": "921:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69025, + "id": 69811, "isConstant": false, "isLValue": false, "isPure": false, @@ -3052,60 +3068,60 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "921:32:112", + "src": "921:32:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69026, + "id": 69812, "nodeType": "ExpressionStatement", - "src": "921:32:112" + "src": "921:32:125" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "399:5:112", + "nameLocation": "399:5:125", "overrides": { - "id": 68956, + "id": 69742, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "414:8:112" + "src": "414:8:125" }, "parameters": { - "id": 68955, + "id": 69741, "nodeType": "ParameterList", "parameters": [], - "src": "404:2:112" + "src": "404:2:125" }, "returnParameters": { - "id": 68957, + "id": 69743, "nodeType": "ParameterList", "parameters": [], - "src": "423:0:112" + "src": "423:0:125" }, - "scope": 69389, + "scope": 70175, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 69388, + "id": 70174, "nodeType": "FunctionDefinition", - "src": "966:2800:112", + "src": "966:2800:125", "nodes": [], "body": { - "id": 69387, + "id": 70173, "nodeType": "Block", - "src": "1006:2760:112", + "src": "1006:2760:125", "nodes": [], "statements": [ { @@ -3114,12 +3130,12 @@ { "arguments": [ { - "id": 69034, + "id": 69820, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "1049:8:112", + "referencedDeclaration": 69734, + "src": "1049:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3134,33 +3150,33 @@ } ], "expression": { - "id": 69032, + "id": 69818, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1028:5:112", + "referencedDeclaration": 70570, + "src": "1028:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69033, + "id": 69819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1034:14:112", + "memberLocation": "1034:14:125", "memberName": "isAllowedOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10410, - "src": "1028:20:112", + "referencedDeclaration": 11161, + "src": "1028:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69035, + "id": 69821, "isConstant": false, "isLValue": false, "isPure": false, @@ -3169,7 +3185,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1028:30:112", + "src": "1028:30:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3178,14 +3194,14 @@ }, { "hexValue": "72616e646f206973206f776e6572", - "id": 69036, + "id": 69822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1060:16:112", + "src": "1060:16:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6797d190964e7ffb293525405e681bd0ee7ab0aa740dea8f6eed3b971442df82", "typeString": "literal_string \"rando is owner\"" @@ -3204,21 +3220,21 @@ "typeString": "literal_string \"rando is owner\"" } ], - "id": 69031, + "id": 69817, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1016:11:112", + "referencedDeclaration": 13679, + "src": "1016:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69037, + "id": 69823, "isConstant": false, "isLValue": false, "isPure": false, @@ -3227,16 +3243,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1016:61:112", + "src": "1016:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69038, + "id": 69824, "nodeType": "ExpressionStatement", - "src": "1016:61:112" + "src": "1016:61:125" }, { "expression": { @@ -3244,12 +3260,12 @@ { "arguments": [ { - "id": 69042, + "id": 69828, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1118:9:112", + "referencedDeclaration": 69736, + "src": "1118:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3264,33 +3280,33 @@ } ], "expression": { - "id": 69040, + "id": 69826, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1099:5:112", + "referencedDeclaration": 70570, + "src": "1099:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69041, + "id": 69827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1105:12:112", + "memberLocation": "1105:12:125", "memberName": "canAllowList", "nodeType": "MemberAccess", - "referencedDeclaration": 10424, - "src": "1099:18:112", + "referencedDeclaration": 11175, + "src": "1099:18:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69043, + "id": 69829, "isConstant": false, "isLValue": false, "isPure": false, @@ -3299,7 +3315,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1099:29:112", + "src": "1099:29:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3308,14 +3324,14 @@ }, { "hexValue": "72616e646f2063616e20616c6c6f77", - "id": 69044, + "id": 69830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1130:17:112", + "src": "1130:17:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_17c4f37ce31300208a9de411f159599237f8e19568e7924abec1550fbd642561", "typeString": "literal_string \"rando can allow\"" @@ -3334,21 +3350,21 @@ "typeString": "literal_string \"rando can allow\"" } ], - "id": 69039, + "id": 69825, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1087:11:112", + "referencedDeclaration": 13679, + "src": "1087:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69045, + "id": 69831, "isConstant": false, "isLValue": false, "isPure": false, @@ -3357,16 +3373,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1087:61:112", + "src": "1087:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69046, + "id": 69832, "nodeType": "ExpressionStatement", - "src": "1087:61:112" + "src": "1087:61:125" }, { "expression": { @@ -3374,41 +3390,41 @@ { "expression": { "expression": { - "id": 69050, + "id": 69836, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "1175:10:112", + "referencedDeclaration": 11190, + "src": "1175:10:125", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$10439_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 69051, + "id": 69837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1186:9:112", + "memberLocation": "1186:9:125", "memberName": "Unallowed", "nodeType": "MemberAccess", - "referencedDeclaration": 10357, - "src": "1175:20:112", + "referencedDeclaration": 11108, + "src": "1175:20:125", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 69052, + "id": 69838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1196:8:112", + "memberLocation": "1196:8:125", "memberName": "selector", "nodeType": "MemberAccess", - "src": "1175:29:112", + "src": "1175:29:125", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -3423,33 +3439,33 @@ } ], "expression": { - "id": 69047, + "id": 69833, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1159:2:112", + "referencedDeclaration": 13541, + "src": "1159:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69049, + "id": 69835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1162:12:112", + "memberLocation": "1162:12:125", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "1159:15:112", + "referencedDeclaration": 24781, + "src": "1159:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 69053, + "id": 69839, "isConstant": false, "isLValue": false, "isPure": false, @@ -3458,27 +3474,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1159:46:112", + "src": "1159:46:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69054, + "id": 69840, "nodeType": "ExpressionStatement", - "src": "1159:46:112" + "src": "1159:46:125" }, { "expression": { "arguments": [ { - "id": 69058, + "id": 69844, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "1224:8:112", + "referencedDeclaration": 69734, + "src": "1224:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3493,33 +3509,33 @@ } ], "expression": { - "id": 69055, + "id": 69841, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1215:2:112", + "referencedDeclaration": 13541, + "src": "1215:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69057, + "id": 69843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1218:5:112", + "memberLocation": "1218:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1215:8:112", + "referencedDeclaration": 24720, + "src": "1215:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69059, + "id": 69845, "isConstant": false, "isLValue": false, "isPure": false, @@ -3528,27 +3544,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1215:18:112", + "src": "1215:18:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69060, + "id": 69846, "nodeType": "ExpressionStatement", - "src": "1215:18:112" + "src": "1215:18:125" }, { "expression": { "arguments": [ { - "id": 69064, + "id": 69850, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1258:9:112", + "referencedDeclaration": 69736, + "src": "1258:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3563,33 +3579,33 @@ } ], "expression": { - "id": 69061, + "id": 69847, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1243:5:112", + "referencedDeclaration": 70570, + "src": "1243:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69063, + "id": 69849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1249:8:112", + "memberLocation": "1249:8:125", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "1243:14:112", + "referencedDeclaration": 11154, + "src": "1243:14:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69065, + "id": 69851, "isConstant": false, "isLValue": false, "isPure": false, @@ -3598,16 +3614,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1243:25:112", + "src": "1243:25:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69066, + "id": 69852, "nodeType": "ExpressionStatement", - "src": "1243:25:112" + "src": "1243:25:125" }, { "expression": { @@ -3615,33 +3631,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 69067, + "id": 69853, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1279:2:112", + "referencedDeclaration": 13541, + "src": "1279:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69069, + "id": 69855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1282:12:112", + "memberLocation": "1282:12:125", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "1279:15:112", + "referencedDeclaration": 24784, + "src": "1279:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 69070, + "id": 69856, "isConstant": false, "isLValue": false, "isPure": false, @@ -3650,27 +3666,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1279:17:112", + "src": "1279:17:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69071, + "id": 69857, "nodeType": "ExpressionStatement", - "src": "1279:17:112" + "src": "1279:17:125" }, { "expression": { "arguments": [ { - "id": 69075, + "id": 69861, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1315:9:112", + "referencedDeclaration": 69736, + "src": "1315:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3685,33 +3701,33 @@ } ], "expression": { - "id": 69072, + "id": 69858, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1306:2:112", + "referencedDeclaration": 13541, + "src": "1306:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69074, + "id": 69860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1309:5:112", + "memberLocation": "1309:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1306:8:112", + "referencedDeclaration": 24720, + "src": "1306:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69076, + "id": 69862, "isConstant": false, "isLValue": false, "isPure": false, @@ -3720,27 +3736,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1306:19:112", + "src": "1306:19:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69077, + "id": 69863, "nodeType": "ExpressionStatement", - "src": "1306:19:112" + "src": "1306:19:125" }, { "expression": { "arguments": [ { - "id": 69081, + "id": 69867, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1350:9:112", + "referencedDeclaration": 69736, + "src": "1350:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3755,33 +3771,33 @@ } ], "expression": { - "id": 69078, + "id": 69864, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1335:5:112", + "referencedDeclaration": 70570, + "src": "1335:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69080, + "id": 69866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1341:8:112", + "memberLocation": "1341:8:125", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "1335:14:112", + "referencedDeclaration": 11154, + "src": "1335:14:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69082, + "id": 69868, "isConstant": false, "isLValue": false, "isPure": false, @@ -3790,27 +3806,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1335:25:112", + "src": "1335:25:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69083, + "id": 69869, "nodeType": "ExpressionStatement", - "src": "1335:25:112" + "src": "1335:25:125" }, { "expression": { "arguments": [ { - "id": 69087, + "id": 69873, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1380:2:112", + "referencedDeclaration": 70587, + "src": "1380:2:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3825,33 +3841,33 @@ } ], "expression": { - "id": 69084, + "id": 69870, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1371:2:112", + "referencedDeclaration": 13541, + "src": "1371:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69086, + "id": 69872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1374:5:112", + "memberLocation": "1374:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1371:8:112", + "referencedDeclaration": 24720, + "src": "1371:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69088, + "id": 69874, "isConstant": false, "isLValue": false, "isPure": false, @@ -3860,27 +3876,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1371:12:112", + "src": "1371:12:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69089, + "id": 69875, "nodeType": "ExpressionStatement", - "src": "1371:12:112" + "src": "1371:12:125" }, { "expression": { "arguments": [ { - "id": 69093, + "id": 69879, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "1408:8:112", + "referencedDeclaration": 69734, + "src": "1408:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3895,33 +3911,33 @@ } ], "expression": { - "id": 69090, + "id": 69876, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1393:5:112", + "referencedDeclaration": 70570, + "src": "1393:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69092, + "id": 69878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1399:8:112", + "memberLocation": "1399:8:125", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "1393:14:112", + "referencedDeclaration": 11154, + "src": "1393:14:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69094, + "id": 69880, "isConstant": false, "isLValue": false, "isPure": false, @@ -3930,31 +3946,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1393:24:112", + "src": "1393:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69095, + "id": 69881, "nodeType": "ExpressionStatement", - "src": "1393:24:112" + "src": "1393:24:125" }, { "assignments": [ - 69097 + 69883 ], "declarations": [ { "constant": false, - "id": 69097, + "id": 69883, "mutability": "mutable", "name": "nowOwner", - "nameLocation": "1435:8:112", + "nameLocation": "1435:8:125", "nodeType": "VariableDeclaration", - "scope": 69387, - "src": "1427:16:112", + "scope": 70173, + "src": "1427:16:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3962,10 +3978,10 @@ "typeString": "address" }, "typeName": { - "id": 69096, + "id": 69882, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1427:7:112", + "src": "1427:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3975,21 +3991,21 @@ "visibility": "internal" } ], - "id": 69099, + "id": 69885, "initialValue": { - "id": 69098, + "id": 69884, "name": "notOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68948, - "src": "1446:8:112", + "referencedDeclaration": 69734, + "src": "1446:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1427:27:112" + "src": "1427:27:125" }, { "expression": { @@ -3997,12 +4013,12 @@ { "arguments": [ { - "id": 69103, + "id": 69889, "name": "nowOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69097, - "src": "1489:8:112", + "referencedDeclaration": 69883, + "src": "1489:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4017,33 +4033,33 @@ } ], "expression": { - "id": 69101, + "id": 69887, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1475:5:112", + "referencedDeclaration": 70570, + "src": "1475:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69102, + "id": 69888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1481:7:112", + "memberLocation": "1481:7:125", "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10431, - "src": "1475:13:112", + "referencedDeclaration": 11182, + "src": "1475:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69104, + "id": 69890, "isConstant": false, "isLValue": false, "isPure": false, @@ -4052,7 +4068,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1475:23:112", + "src": "1475:23:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4061,14 +4077,14 @@ }, { "hexValue": "72616e646f206e6f77206f776e6572", - "id": 69105, + "id": 69891, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1500:17:112", + "src": "1500:17:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8ffe7de94524e3bce77c62a071ab865ec6e93d604a75615d8d651cf64b758ee", "typeString": "literal_string \"rando now owner\"" @@ -4087,21 +4103,21 @@ "typeString": "literal_string \"rando now owner\"" } ], - "id": 69100, + "id": 69886, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1464:10:112", + "referencedDeclaration": 11481, + "src": "1464:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69106, + "id": 69892, "isConstant": false, "isLValue": false, "isPure": false, @@ -4110,16 +4126,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1464:54:112", + "src": "1464:54:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69107, + "id": 69893, "nodeType": "ExpressionStatement", - "src": "1464:54:112" + "src": "1464:54:125" }, { "expression": { @@ -4127,12 +4143,12 @@ { "arguments": [ { - "id": 69111, + "id": 69897, "name": "nowOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69097, - "src": "1560:8:112", + "referencedDeclaration": 69883, + "src": "1560:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4147,33 +4163,33 @@ } ], "expression": { - "id": 69109, + "id": 69895, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1539:5:112", + "referencedDeclaration": 70570, + "src": "1539:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69110, + "id": 69896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1545:14:112", + "memberLocation": "1545:14:125", "memberName": "isAllowedOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10410, - "src": "1539:20:112", + "referencedDeclaration": 11161, + "src": "1539:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69112, + "id": 69898, "isConstant": false, "isLValue": false, "isPure": false, @@ -4182,7 +4198,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1539:30:112", + "src": "1539:30:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4191,14 +4207,14 @@ }, { "hexValue": "72616e646f20697320616c6c6f776564", - "id": 69113, + "id": 69899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1571:18:112", + "src": "1571:18:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1a94c455c02a5a12d0ae247dca0b3f12f65070f7bccfe53c807497e82881bac7", "typeString": "literal_string \"rando is allowed\"" @@ -4217,21 +4233,21 @@ "typeString": "literal_string \"rando is allowed\"" } ], - "id": 69108, + "id": 69894, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1528:10:112", + "referencedDeclaration": 11481, + "src": "1528:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69114, + "id": 69900, "isConstant": false, "isLValue": false, "isPure": false, @@ -4240,16 +4256,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1528:62:112", + "src": "1528:62:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69115, + "id": 69901, "nodeType": "ExpressionStatement", - "src": "1528:62:112" + "src": "1528:62:125" }, { "expression": { @@ -4257,12 +4273,12 @@ { "arguments": [ { - "id": 69119, + "id": 69905, "name": "nowOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69097, - "src": "1630:8:112", + "referencedDeclaration": 69883, + "src": "1630:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4277,33 +4293,33 @@ } ], "expression": { - "id": 69117, + "id": 69903, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1611:5:112", + "referencedDeclaration": 70570, + "src": "1611:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69118, + "id": 69904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1617:12:112", + "memberLocation": "1617:12:125", "memberName": "canAllowList", "nodeType": "MemberAccess", - "referencedDeclaration": 10424, - "src": "1611:18:112", + "referencedDeclaration": 11175, + "src": "1611:18:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69120, + "id": 69906, "isConstant": false, "isLValue": false, "isPure": false, @@ -4312,7 +4328,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1611:28:112", + "src": "1611:28:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4321,14 +4337,14 @@ }, { "hexValue": "657870656374656420706c7573206f6e65", - "id": 69121, + "id": 69907, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1641:19:112", + "src": "1641:19:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4372f572cc7d237ca1fac1eda230210f6c9f6cc06d9c5d6fd90369dd1a028309", "typeString": "literal_string \"expected plus one\"" @@ -4347,21 +4363,21 @@ "typeString": "literal_string \"expected plus one\"" } ], - "id": 69116, + "id": 69902, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1600:10:112", + "referencedDeclaration": 11481, + "src": "1600:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69122, + "id": 69908, "isConstant": false, "isLValue": false, "isPure": false, @@ -4370,27 +4386,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1600:61:112", + "src": "1600:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69123, + "id": 69909, "nodeType": "ExpressionStatement", - "src": "1600:61:112" + "src": "1600:61:125" }, { "expression": { "arguments": [ { - "id": 69127, + "id": 69913, "name": "nowOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69097, - "src": "1681:8:112", + "referencedDeclaration": 69883, + "src": "1681:8:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4405,33 +4421,33 @@ } ], "expression": { - "id": 69124, + "id": 69910, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1672:2:112", + "referencedDeclaration": 13541, + "src": "1672:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69126, + "id": 69912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1675:5:112", + "memberLocation": "1675:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1672:8:112", + "referencedDeclaration": 24720, + "src": "1672:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69128, + "id": 69914, "isConstant": false, "isLValue": false, "isPure": false, @@ -4440,27 +4456,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1672:18:112", + "src": "1672:18:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69129, + "id": 69915, "nodeType": "ExpressionStatement", - "src": "1672:18:112" + "src": "1672:18:125" }, { "expression": { "arguments": [ { - "id": 69133, + "id": 69919, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1721:9:112", + "referencedDeclaration": 69736, + "src": "1721:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4475,33 +4491,33 @@ } ], "expression": { - "id": 69130, + "id": 69916, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1700:5:112", + "referencedDeclaration": 70570, + "src": "1700:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69132, + "id": 69918, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1706:14:112", + "memberLocation": "1706:14:125", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "1700:20:112", + "referencedDeclaration": 11132, + "src": "1700:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69134, + "id": 69920, "isConstant": false, "isLValue": false, "isPure": false, @@ -4510,16 +4526,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1700:31:112", + "src": "1700:31:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69135, + "id": 69921, "nodeType": "ExpressionStatement", - "src": "1700:31:112" + "src": "1700:31:125" }, { "expression": { @@ -4527,12 +4543,12 @@ { "arguments": [ { - "id": 69139, + "id": 69925, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1767:9:112", + "referencedDeclaration": 69736, + "src": "1767:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4547,33 +4563,33 @@ } ], "expression": { - "id": 69137, + "id": 69923, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1753:5:112", + "referencedDeclaration": 70570, + "src": "1753:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69138, + "id": 69924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1759:7:112", + "memberLocation": "1759:7:125", "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10431, - "src": "1753:13:112", + "referencedDeclaration": 11182, + "src": "1753:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69140, + "id": 69926, "isConstant": false, "isLValue": false, "isPure": false, @@ -4582,7 +4598,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1753:24:112", + "src": "1753:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4591,14 +4607,14 @@ }, { "hexValue": "756e6578706563746564206173206f77656e72", - "id": 69141, + "id": 69927, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1779:21:112", + "src": "1779:21:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9b7327bf6d1381e873d0cf42cdda96a0c9a49025531c1d85f496d385e6d6f0a9", "typeString": "literal_string \"unexpected as owenr\"" @@ -4617,21 +4633,21 @@ "typeString": "literal_string \"unexpected as owenr\"" } ], - "id": 69136, + "id": 69922, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1741:11:112", + "referencedDeclaration": 13679, + "src": "1741:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69142, + "id": 69928, "isConstant": false, "isLValue": false, "isPure": false, @@ -4640,16 +4656,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1741:60:112", + "src": "1741:60:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69143, + "id": 69929, "nodeType": "ExpressionStatement", - "src": "1741:60:112" + "src": "1741:60:125" }, { "expression": { @@ -4659,7 +4675,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69153, + "id": 69939, "isConstant": false, "isLValue": false, "isPure": false, @@ -4667,12 +4683,12 @@ "leftExpression": { "arguments": [ { - "id": 69147, + "id": 69933, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1836:9:112", + "referencedDeclaration": 69736, + "src": "1836:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4687,33 +4703,33 @@ } ], "expression": { - "id": 69145, + "id": 69931, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1822:5:112", + "referencedDeclaration": 70570, + "src": "1822:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69146, + "id": 69932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1828:7:112", + "memberLocation": "1828:7:125", "memberName": "plusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 10417, - "src": "1822:13:112", + "referencedDeclaration": 11168, + "src": "1822:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$", "typeString": "function (address) view external returns (address)" } }, - "id": 69148, + "id": 69934, "isConstant": false, "isLValue": false, "isPure": false, @@ -4722,7 +4738,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1822:24:112", + "src": "1822:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4735,14 +4751,14 @@ "arguments": [ { "hexValue": "30", - "id": 69151, + "id": 69937, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1858:1:112", + "src": "1858:1:125", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4757,26 +4773,26 @@ "typeString": "int_const 0" } ], - "id": 69150, + "id": 69936, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1850:7:112", + "src": "1850:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69149, + "id": 69935, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1850:7:112", + "src": "1850:7:125", "typeDescriptions": {} } }, - "id": 69152, + "id": 69938, "isConstant": false, "isLValue": false, "isPure": true, @@ -4785,14 +4801,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1850:10:112", + "src": "1850:10:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1822:38:112", + "src": "1822:38:125", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4800,14 +4816,14 @@ }, { "hexValue": "6578706563746564206e6f7420616c6c6f7765642032", - "id": 69154, + "id": 69940, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1862:24:112", + "src": "1862:24:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7fcd1777755f376cca5fe4b7eb0f64a3f3357ee3f45b5bd62e51f72960d84708", "typeString": "literal_string \"expected not allowed 2\"" @@ -4826,21 +4842,21 @@ "typeString": "literal_string \"expected not allowed 2\"" } ], - "id": 69144, + "id": 69930, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1811:10:112", + "referencedDeclaration": 11481, + "src": "1811:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69155, + "id": 69941, "isConstant": false, "isLValue": false, "isPure": false, @@ -4849,16 +4865,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1811:76:112", + "src": "1811:76:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69156, + "id": 69942, "nodeType": "ExpressionStatement", - "src": "1811:76:112" + "src": "1811:76:125" }, { "expression": { @@ -4866,12 +4882,12 @@ { "arguments": [ { - "id": 69160, + "id": 69946, "name": "notOwner2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68950, - "src": "1928:9:112", + "referencedDeclaration": 69736, + "src": "1928:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4886,33 +4902,33 @@ } ], "expression": { - "id": 69158, + "id": 69944, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1909:5:112", + "referencedDeclaration": 70570, + "src": "1909:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69159, + "id": 69945, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1915:12:112", + "memberLocation": "1915:12:125", "memberName": "canAllowList", "nodeType": "MemberAccess", - "referencedDeclaration": 10424, - "src": "1909:18:112", + "referencedDeclaration": 11175, + "src": "1909:18:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69161, + "id": 69947, "isConstant": false, "isLValue": false, "isPure": false, @@ -4921,7 +4937,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1909:29:112", + "src": "1909:29:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4930,14 +4946,14 @@ }, { "hexValue": "6973206e6f7420706c75736f6e65", - "id": 69162, + "id": 69948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1940:16:112", + "src": "1940:16:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_652dd1551e4cf25d8a7a4ada1ccfd414f3e1313965f6478c1dcc440fedee00f0", "typeString": "literal_string \"is not plusone\"" @@ -4956,21 +4972,21 @@ "typeString": "literal_string \"is not plusone\"" } ], - "id": 69157, + "id": 69943, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1898:10:112", + "referencedDeclaration": 11481, + "src": "1898:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69163, + "id": 69949, "isConstant": false, "isLValue": false, "isPure": false, @@ -4979,31 +4995,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1898:59:112", + "src": "1898:59:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69164, + "id": 69950, "nodeType": "ExpressionStatement", - "src": "1898:59:112" + "src": "1898:59:125" }, { "assignments": [ - 69169 + 69955 ], "declarations": [ { "constant": false, - "id": 69169, + "id": 69955, "mutability": "mutable", "name": "toAddToAllowList", - "nameLocation": "2027:16:112", + "nameLocation": "2027:16:125", "nodeType": "VariableDeclaration", - "scope": 69387, - "src": "2010:33:112", + "scope": 70173, + "src": "2010:33:125", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5012,18 +5028,18 @@ }, "typeName": { "baseType": { - "id": 69167, + "id": 69953, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2010:7:112", + "src": "2010:7:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69168, + "id": 69954, "nodeType": "ArrayTypeName", - "src": "2010:9:112", + "src": "2010:9:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5033,19 +5049,19 @@ } ], "documentation": "@dev owner can grant plusone", - "id": 69175, + "id": 69961, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 69173, + "id": 69959, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2060:1:112", + "src": "2060:1:125", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -5060,39 +5076,39 @@ "typeString": "int_const 2" } ], - "id": 69172, + "id": 69958, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2046:13:112", + "src": "2046:13:125", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 69170, + "id": 69956, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:112", + "src": "2050:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69171, + "id": 69957, "nodeType": "ArrayTypeName", - "src": "2050:9:112", + "src": "2050:9:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 69174, + "id": 69960, "isConstant": false, "isLValue": false, "isPure": true, @@ -5101,7 +5117,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2046:16:112", + "src": "2046:16:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -5109,39 +5125,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2010:52:112" + "src": "2010:52:125" }, { "expression": { - "id": 69180, + "id": 69966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69176, + "id": 69962, "name": "toAddToAllowList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69169, - "src": "2072:16:112", + "referencedDeclaration": 69955, + "src": "2072:16:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69178, + "id": 69964, "indexExpression": { "hexValue": "30", - "id": 69177, + "id": 69963, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:112", + "src": "2089:1:125", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5153,7 +5169,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2072:19:112", + "src": "2072:19:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5162,58 +5178,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69179, + "id": 69965, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "2094:9:112", + "referencedDeclaration": 69738, + "src": "2094:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2072:31:112", + "src": "2072:31:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69181, + "id": 69967, "nodeType": "ExpressionStatement", - "src": "2072:31:112" + "src": "2072:31:125" }, { "expression": { - "id": 69186, + "id": 69972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69182, + "id": 69968, "name": "toAddToAllowList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69169, - "src": "2113:16:112", + "referencedDeclaration": 69955, + "src": "2113:16:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69184, + "id": 69970, "indexExpression": { "hexValue": "31", - "id": 69183, + "id": 69969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2130:1:112", + "src": "2130:1:125", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -5225,7 +5241,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:112", + "src": "2113:19:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5234,26 +5250,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69185, + "id": 69971, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2135:9:112", + "referencedDeclaration": 69740, + "src": "2135:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:31:112", + "src": "2113:31:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69187, + "id": 69973, "nodeType": "ExpressionStatement", - "src": "2113:31:112" + "src": "2113:31:125" }, { "expression": { @@ -5261,12 +5277,12 @@ { "arguments": [ { - "id": 69191, + "id": 69977, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "2180:9:112", + "referencedDeclaration": 69738, + "src": "2180:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5281,33 +5297,33 @@ } ], "expression": { - "id": 69189, + "id": 69975, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2166:5:112", + "referencedDeclaration": 70570, + "src": "2166:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69190, + "id": 69976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2172:7:112", + "memberLocation": "2172:7:125", "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10431, - "src": "2166:13:112", + "referencedDeclaration": 11182, + "src": "2166:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69192, + "id": 69978, "isConstant": false, "isLValue": false, "isPure": false, @@ -5316,7 +5332,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2166:24:112", + "src": "2166:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5325,14 +5341,14 @@ }, { "hexValue": "6e6f74206f776e65722033", - "id": 69193, + "id": 69979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2192:13:112", + "src": "2192:13:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b8e5f383c11b98b0df26acbb1f4b0ed866b8735d52cdba3c12c599f2d0765679", "typeString": "literal_string \"not owner 3\"" @@ -5351,21 +5367,21 @@ "typeString": "literal_string \"not owner 3\"" } ], - "id": 69188, + "id": 69974, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "2154:11:112", + "referencedDeclaration": 13679, + "src": "2154:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69194, + "id": 69980, "isConstant": false, "isLValue": false, "isPure": false, @@ -5374,16 +5390,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2154:52:112", + "src": "2154:52:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69195, + "id": 69981, "nodeType": "ExpressionStatement", - "src": "2154:52:112" + "src": "2154:52:125" }, { "expression": { @@ -5391,12 +5407,12 @@ { "arguments": [ { - "id": 69199, + "id": 69985, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2249:9:112", + "referencedDeclaration": 69740, + "src": "2249:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5411,33 +5427,33 @@ } ], "expression": { - "id": 69197, + "id": 69983, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2228:5:112", + "referencedDeclaration": 70570, + "src": "2228:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69198, + "id": 69984, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2234:14:112", + "memberLocation": "2234:14:125", "memberName": "isAllowedOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10410, - "src": "2228:20:112", + "referencedDeclaration": 11161, + "src": "2228:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69200, + "id": 69986, "isConstant": false, "isLValue": false, "isPure": false, @@ -5446,7 +5462,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2228:31:112", + "src": "2228:31:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5455,14 +5471,14 @@ }, { "hexValue": "6e6f7420616c6c6f7765642034", - "id": 69201, + "id": 69987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2261:15:112", + "src": "2261:15:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fef426036cdaf61fb8ac135a7b43b41e0847c62d17ddca17c6000bb9f887e4e4", "typeString": "literal_string \"not allowed 4\"" @@ -5481,21 +5497,21 @@ "typeString": "literal_string \"not allowed 4\"" } ], - "id": 69196, + "id": 69982, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "2216:11:112", + "referencedDeclaration": 13679, + "src": "2216:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69202, + "id": 69988, "isConstant": false, "isLValue": false, "isPure": false, @@ -5504,16 +5520,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2216:61:112", + "src": "2216:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69203, + "id": 69989, "nodeType": "ExpressionStatement", - "src": "2216:61:112" + "src": "2216:61:125" }, { "expression": { @@ -5521,33 +5537,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 69204, + "id": 69990, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2361:2:112", + "referencedDeclaration": 13541, + "src": "2361:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69206, + "id": 69992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2364:12:112", + "memberLocation": "2364:12:125", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "2361:15:112", + "referencedDeclaration": 24784, + "src": "2361:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 69207, + "id": 69993, "isConstant": false, "isLValue": false, "isPure": false, @@ -5556,27 +5572,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2361:17:112", + "src": "2361:17:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69208, + "id": 69994, "nodeType": "ExpressionStatement", - "src": "2361:17:112" + "src": "2361:17:125" }, { "expression": { "arguments": [ { - "id": 69212, + "id": 69998, "name": "toAddToAllowList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69169, - "src": "2414:16:112", + "referencedDeclaration": 69955, + "src": "2414:16:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -5591,33 +5607,33 @@ } ], "expression": { - "id": 69209, + "id": 69995, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2388:5:112", + "referencedDeclaration": 70570, + "src": "2388:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69211, + "id": 69997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2394:19:112", + "memberLocation": "2394:19:125", "memberName": "addBatchToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10392, - "src": "2388:25:112", + "referencedDeclaration": 11143, + "src": "2388:25:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (address[] memory) external" } }, - "id": 69213, + "id": 69999, "isConstant": false, "isLValue": false, "isPure": false, @@ -5626,27 +5642,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2388:43:112", + "src": "2388:43:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69214, + "id": 70000, "nodeType": "ExpressionStatement", - "src": "2388:43:112" + "src": "2388:43:125" }, { "expression": { "arguments": [ { - "id": 69218, + "id": 70004, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2451:2:112", + "referencedDeclaration": 70587, + "src": "2451:2:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5661,33 +5677,33 @@ } ], "expression": { - "id": 69215, + "id": 70001, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2442:2:112", + "referencedDeclaration": 13541, + "src": "2442:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69217, + "id": 70003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2445:5:112", + "memberLocation": "2445:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2442:8:112", + "referencedDeclaration": 24720, + "src": "2442:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69219, + "id": 70005, "isConstant": false, "isLValue": false, "isPure": false, @@ -5696,27 +5712,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2442:12:112", + "src": "2442:12:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69220, + "id": 70006, "nodeType": "ExpressionStatement", - "src": "2442:12:112" + "src": "2442:12:125" }, { "expression": { "arguments": [ { - "id": 69224, + "id": 70010, "name": "toAddToAllowList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69169, - "src": "2490:16:112", + "referencedDeclaration": 69955, + "src": "2490:16:125", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -5731,33 +5747,33 @@ } ], "expression": { - "id": 69221, + "id": 70007, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2464:5:112", + "referencedDeclaration": 70570, + "src": "2464:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69223, + "id": 70009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2470:19:112", + "memberLocation": "2470:19:125", "memberName": "addBatchToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10392, - "src": "2464:25:112", + "referencedDeclaration": 11143, + "src": "2464:25:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (address[] memory) external" } }, - "id": 69225, + "id": 70011, "isConstant": false, "isLValue": false, "isPure": false, @@ -5766,16 +5782,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2464:43:112", + "src": "2464:43:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69226, + "id": 70012, "nodeType": "ExpressionStatement", - "src": "2464:43:112" + "src": "2464:43:125" }, { "expression": { @@ -5783,12 +5799,12 @@ { "arguments": [ { - "id": 69230, + "id": 70016, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "2551:9:112", + "referencedDeclaration": 69738, + "src": "2551:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5803,33 +5819,33 @@ } ], "expression": { - "id": 69228, + "id": 70014, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2530:5:112", + "referencedDeclaration": 70570, + "src": "2530:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69229, + "id": 70015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2536:14:112", + "memberLocation": "2536:14:125", "memberName": "isAllowedOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10410, - "src": "2530:20:112", + "referencedDeclaration": 11161, + "src": "2530:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69231, + "id": 70017, "isConstant": false, "isLValue": false, "isPure": false, @@ -5838,7 +5854,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2530:31:112", + "src": "2530:31:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5847,14 +5863,14 @@ }, { "hexValue": "6e6f7420616c6c6f7765642033", - "id": 69232, + "id": 70018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2563:15:112", + "src": "2563:15:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9ebe6103590b706dcaccc5015d1d6d371c20e350966d323385c9fe6a84138446", "typeString": "literal_string \"not allowed 3\"" @@ -5873,21 +5889,21 @@ "typeString": "literal_string \"not allowed 3\"" } ], - "id": 69227, + "id": 70013, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "2518:11:112", + "referencedDeclaration": 13679, + "src": "2518:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69233, + "id": 70019, "isConstant": false, "isLValue": false, "isPure": false, @@ -5896,16 +5912,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2518:61:112", + "src": "2518:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69234, + "id": 70020, "nodeType": "ExpressionStatement", - "src": "2518:61:112" + "src": "2518:61:125" }, { "expression": { @@ -5913,12 +5929,12 @@ { "arguments": [ { - "id": 69238, + "id": 70024, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2616:9:112", + "referencedDeclaration": 69740, + "src": "2616:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5933,33 +5949,33 @@ } ], "expression": { - "id": 69236, + "id": 70022, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2600:5:112", + "referencedDeclaration": 70570, + "src": "2600:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69237, + "id": 70023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2606:9:112", + "memberLocation": "2606:9:125", "memberName": "isAllowed", "nodeType": "MemberAccess", - "referencedDeclaration": 10376, - "src": "2600:15:112", + "referencedDeclaration": 11127, + "src": "2600:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69239, + "id": 70025, "isConstant": false, "isLValue": false, "isPure": false, @@ -5968,7 +5984,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2600:26:112", + "src": "2600:26:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5977,14 +5993,14 @@ }, { "hexValue": "686173206265656e20626174636820616c6c6f776564", - "id": 69240, + "id": 70026, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2628:24:112", + "src": "2628:24:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8102d3bbeb588f9bae71b90714c18abf3aec9033ed34ccbf61d984d8e5b9b2aa", "typeString": "literal_string \"has been batch allowed\"" @@ -6003,21 +6019,21 @@ "typeString": "literal_string \"has been batch allowed\"" } ], - "id": 69235, + "id": 70021, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2589:10:112", + "referencedDeclaration": 11481, + "src": "2589:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69241, + "id": 70027, "isConstant": false, "isLValue": false, "isPure": false, @@ -6026,16 +6042,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2589:64:112", + "src": "2589:64:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69242, + "id": 70028, "nodeType": "ExpressionStatement", - "src": "2589:64:112" + "src": "2589:64:125" }, { "expression": { @@ -6043,12 +6059,12 @@ { "arguments": [ { - "id": 69246, + "id": 70032, "name": "notOwner3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68952, - "src": "2690:9:112", + "referencedDeclaration": 69738, + "src": "2690:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6063,33 +6079,33 @@ } ], "expression": { - "id": 69244, + "id": 70030, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2674:5:112", + "referencedDeclaration": 70570, + "src": "2674:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69245, + "id": 70031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2680:9:112", + "memberLocation": "2680:9:125", "memberName": "isAllowed", "nodeType": "MemberAccess", - "referencedDeclaration": 10376, - "src": "2674:15:112", + "referencedDeclaration": 11127, + "src": "2674:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69247, + "id": 70033, "isConstant": false, "isLValue": false, "isPure": false, @@ -6098,7 +6114,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2674:26:112", + "src": "2674:26:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6107,14 +6123,14 @@ }, { "hexValue": "686173206265656e20626174636820616c6c6f776564", - "id": 69248, + "id": 70034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2702:24:112", + "src": "2702:24:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8102d3bbeb588f9bae71b90714c18abf3aec9033ed34ccbf61d984d8e5b9b2aa", "typeString": "literal_string \"has been batch allowed\"" @@ -6133,21 +6149,21 @@ "typeString": "literal_string \"has been batch allowed\"" } ], - "id": 69243, + "id": 70029, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2663:10:112", + "referencedDeclaration": 11481, + "src": "2663:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69249, + "id": 70035, "isConstant": false, "isLValue": false, "isPure": false, @@ -6156,16 +6172,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2663:64:112", + "src": "2663:64:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69250, + "id": 70036, "nodeType": "ExpressionStatement", - "src": "2663:64:112" + "src": "2663:64:125" }, { "expression": { @@ -6175,7 +6191,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69260, + "id": 70046, "isConstant": false, "isLValue": false, "isPure": false, @@ -6183,12 +6199,12 @@ "leftExpression": { "arguments": [ { - "id": 69254, + "id": 70040, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2763:9:112", + "referencedDeclaration": 69740, + "src": "2763:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6203,33 +6219,33 @@ } ], "expression": { - "id": 69252, + "id": 70038, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2749:5:112", + "referencedDeclaration": 70570, + "src": "2749:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69253, + "id": 70039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2755:7:112", + "memberLocation": "2755:7:125", "memberName": "plusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 10417, - "src": "2749:13:112", + "referencedDeclaration": 11168, + "src": "2749:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$", "typeString": "function (address) view external returns (address)" } }, - "id": 69255, + "id": 70041, "isConstant": false, "isLValue": false, "isPure": false, @@ -6238,7 +6254,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2749:24:112", + "src": "2749:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6251,14 +6267,14 @@ "arguments": [ { "hexValue": "30", - "id": 69258, + "id": 70044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2785:1:112", + "src": "2785:1:125", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6273,26 +6289,26 @@ "typeString": "int_const 0" } ], - "id": 69257, + "id": 70043, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2777:7:112", + "src": "2777:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69256, + "id": 70042, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2777:7:112", + "src": "2777:7:125", "typeDescriptions": {} } }, - "id": 69259, + "id": 70045, "isConstant": false, "isLValue": false, "isPure": true, @@ -6301,14 +6317,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2777:10:112", + "src": "2777:10:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2749:38:112", + "src": "2749:38:125", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6316,14 +6332,14 @@ }, { "hexValue": "616c726561647920706c75736f6e65", - "id": 69261, + "id": 70047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2789:17:112", + "src": "2789:17:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cc7bb4f239d34d656fe1b8e978d62e70356fc22f1df1a3928aa546833b4a1c57", "typeString": "literal_string \"already plusone\"" @@ -6342,21 +6358,21 @@ "typeString": "literal_string \"already plusone\"" } ], - "id": 69251, + "id": 70037, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2738:10:112", + "referencedDeclaration": 11481, + "src": "2738:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69262, + "id": 70048, "isConstant": false, "isLValue": false, "isPure": false, @@ -6365,16 +6381,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2738:69:112", + "src": "2738:69:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69263, + "id": 70049, "nodeType": "ExpressionStatement", - "src": "2738:69:112" + "src": "2738:69:125" }, { "expression": { @@ -6382,12 +6398,12 @@ { "arguments": [ { - "id": 69267, + "id": 70053, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2848:9:112", + "referencedDeclaration": 69740, + "src": "2848:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6402,33 +6418,33 @@ } ], "expression": { - "id": 69265, + "id": 70051, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2828:5:112", + "referencedDeclaration": 70570, + "src": "2828:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69266, + "id": 70052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2834:13:112", + "memberLocation": "2834:13:125", "memberName": "isAllowListed", "nodeType": "MemberAccess", - "referencedDeclaration": 10438, - "src": "2828:19:112", + "referencedDeclaration": 11189, + "src": "2828:19:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69268, + "id": 70054, "isConstant": false, "isLValue": false, "isPure": false, @@ -6437,7 +6453,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2828:30:112", + "src": "2828:30:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6446,14 +6462,14 @@ }, { "hexValue": "6e6f7420616c6c6f776c6973746564", - "id": 69269, + "id": 70055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2860:17:112", + "src": "2860:17:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9973a4313242b05b2bbb76b0da8593c2f200873efb11eb1c36887da6d8b8a896", "typeString": "literal_string \"not allowlisted\"" @@ -6472,21 +6488,21 @@ "typeString": "literal_string \"not allowlisted\"" } ], - "id": 69264, + "id": 70050, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2817:10:112", + "referencedDeclaration": 11481, + "src": "2817:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69270, + "id": 70056, "isConstant": false, "isLValue": false, "isPure": false, @@ -6495,16 +6511,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2817:61:112", + "src": "2817:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69271, + "id": 70057, "nodeType": "ExpressionStatement", - "src": "2817:61:112" + "src": "2817:61:125" }, { "expression": { @@ -6512,12 +6528,12 @@ { "arguments": [ { - "id": 69275, + "id": 70061, "name": "notOwner4", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68954, - "src": "2918:9:112", + "referencedDeclaration": 69740, + "src": "2918:9:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6532,33 +6548,33 @@ } ], "expression": { - "id": 69273, + "id": 70059, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2899:5:112", + "referencedDeclaration": 70570, + "src": "2899:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69274, + "id": 70060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2905:12:112", + "memberLocation": "2905:12:125", "memberName": "canAllowList", "nodeType": "MemberAccess", - "referencedDeclaration": 10424, - "src": "2899:18:112", + "referencedDeclaration": 11175, + "src": "2899:18:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69276, + "id": 70062, "isConstant": false, "isLValue": false, "isPure": false, @@ -6567,7 +6583,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2899:29:112", + "src": "2899:29:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6576,14 +6592,14 @@ }, { "hexValue": "63616e6e6f7420616c6c6f772034", - "id": 69277, + "id": 70063, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2930:16:112", + "src": "2930:16:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f85173714eacea25b6708b2f2f13279612c5f8fcae920cae3423f3901ccd56b8", "typeString": "literal_string \"cannot allow 4\"" @@ -6602,21 +6618,21 @@ "typeString": "literal_string \"cannot allow 4\"" } ], - "id": 69272, + "id": 70058, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2888:10:112", + "referencedDeclaration": 11481, + "src": "2888:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69278, + "id": 70064, "isConstant": false, "isLValue": false, "isPure": false, @@ -6625,31 +6641,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2888:59:112", + "src": "2888:59:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69279, + "id": 70065, "nodeType": "ExpressionStatement", - "src": "2888:59:112" + "src": "2888:59:125" }, { "assignments": [ - 69281 + 70067 ], "declarations": [ { "constant": false, - "id": 69281, + "id": 70067, "mutability": "mutable", "name": "plussOneTarget", - "nameLocation": "2966:14:112", + "nameLocation": "2966:14:125", "nodeType": "VariableDeclaration", - "scope": 69387, - "src": "2958:22:112", + "scope": 70173, + "src": "2958:22:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6657,10 +6673,10 @@ "typeString": "address" }, "typeName": { - "id": 69280, + "id": 70066, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2958:7:112", + "src": "2958:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6670,19 +6686,19 @@ "visibility": "internal" } ], - "id": 69286, + "id": 70072, "initialValue": { "arguments": [ { "hexValue": "31333432363639353433353836343734353539373836", - "id": 69284, + "id": 70070, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2991:22:112", + "src": "2991:22:125", "typeDescriptions": { "typeIdentifier": "t_rational_1342669543586474559786_by_1", "typeString": "int_const 1342669543586474559786" @@ -6697,26 +6713,26 @@ "typeString": "int_const 1342669543586474559786" } ], - "id": 69283, + "id": 70069, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2983:7:112", + "src": "2983:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69282, + "id": 70068, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2983:7:112", + "src": "2983:7:125", "typeDescriptions": {} } }, - "id": 69285, + "id": 70071, "isConstant": false, "isLValue": false, "isPure": true, @@ -6725,7 +6741,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2983:31:112", + "src": "2983:31:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6733,18 +6749,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2958:56:112" + "src": "2958:56:125" }, { "expression": { "arguments": [ { - "id": 69290, + "id": 70076, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "3033:2:112", + "referencedDeclaration": 70587, + "src": "3033:2:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6759,33 +6775,33 @@ } ], "expression": { - "id": 69287, + "id": 70073, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3024:2:112", + "referencedDeclaration": 13541, + "src": "3024:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69289, + "id": 70075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3027:5:112", + "memberLocation": "3027:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3024:8:112", + "referencedDeclaration": 24720, + "src": "3024:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69291, + "id": 70077, "isConstant": false, "isLValue": false, "isPure": false, @@ -6794,27 +6810,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3024:12:112", + "src": "3024:12:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69292, + "id": 70078, "nodeType": "ExpressionStatement", - "src": "3024:12:112" + "src": "3024:12:125" }, { "expression": { "arguments": [ { - "id": 69296, + "id": 70082, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3067:14:112", + "referencedDeclaration": 70067, + "src": "3067:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6829,33 +6845,33 @@ } ], "expression": { - "id": 69293, + "id": 70079, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3046:5:112", + "referencedDeclaration": 70570, + "src": "3046:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69295, + "id": 70081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3052:14:112", + "memberLocation": "3052:14:125", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "3046:20:112", + "referencedDeclaration": 11132, + "src": "3046:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69297, + "id": 70083, "isConstant": false, "isLValue": false, "isPure": false, @@ -6864,16 +6880,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3046:36:112", + "src": "3046:36:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69298, + "id": 70084, "nodeType": "ExpressionStatement", - "src": "3046:36:112" + "src": "3046:36:125" }, { "expression": { @@ -6881,12 +6897,12 @@ { "arguments": [ { - "id": 69302, + "id": 70088, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3124:14:112", + "referencedDeclaration": 70067, + "src": "3124:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6901,33 +6917,33 @@ } ], "expression": { - "id": 69300, + "id": 70086, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3104:5:112", + "referencedDeclaration": 70570, + "src": "3104:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69301, + "id": 70087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3110:13:112", + "memberLocation": "3110:13:125", "memberName": "isAllowListed", "nodeType": "MemberAccess", - "referencedDeclaration": 10438, - "src": "3104:19:112", + "referencedDeclaration": 11189, + "src": "3104:19:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69303, + "id": 70089, "isConstant": false, "isLValue": false, "isPure": false, @@ -6936,7 +6952,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3104:35:112", + "src": "3104:35:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6945,14 +6961,14 @@ }, { "hexValue": "6e6f7420616c6c6f776c6973746564207775742031", - "id": 69304, + "id": 70090, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3141:23:112", + "src": "3141:23:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6210cd28e3126ab697cb678ff82cbfc082ff601ed901404db85bfff36dac7a17", "typeString": "literal_string \"not allowlisted wut 1\"" @@ -6971,21 +6987,21 @@ "typeString": "literal_string \"not allowlisted wut 1\"" } ], - "id": 69299, + "id": 70085, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3093:10:112", + "referencedDeclaration": 11481, + "src": "3093:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69305, + "id": 70091, "isConstant": false, "isLValue": false, "isPure": false, @@ -6994,16 +7010,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3093:72:112", + "src": "3093:72:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69306, + "id": 70092, "nodeType": "ExpressionStatement", - "src": "3093:72:112" + "src": "3093:72:125" }, { "expression": { @@ -7011,12 +7027,12 @@ { "arguments": [ { - "id": 69310, + "id": 70096, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3205:14:112", + "referencedDeclaration": 70067, + "src": "3205:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7031,33 +7047,33 @@ } ], "expression": { - "id": 69308, + "id": 70094, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3186:5:112", + "referencedDeclaration": 70570, + "src": "3186:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69309, + "id": 70095, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3192:12:112", + "memberLocation": "3192:12:125", "memberName": "canAllowList", "nodeType": "MemberAccess", - "referencedDeclaration": 10424, - "src": "3186:18:112", + "referencedDeclaration": 11175, + "src": "3186:18:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69311, + "id": 70097, "isConstant": false, "isLValue": false, "isPure": false, @@ -7066,7 +7082,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3186:34:112", + "src": "3186:34:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7075,14 +7091,14 @@ }, { "hexValue": "63616e6e6f7420706c75736f6e652032", - "id": 69312, + "id": 70098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3222:18:112", + "src": "3222:18:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5d447d5c25c52dd8e97b3a1523e771281578de211f566362fc0d0d197e078735", "typeString": "literal_string \"cannot plusone 2\"" @@ -7101,21 +7117,21 @@ "typeString": "literal_string \"cannot plusone 2\"" } ], - "id": 69307, + "id": 70093, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3175:10:112", + "referencedDeclaration": 11481, + "src": "3175:10:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69313, + "id": 70099, "isConstant": false, "isLValue": false, "isPure": false, @@ -7124,16 +7140,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3175:66:112", + "src": "3175:66:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69314, + "id": 70100, "nodeType": "ExpressionStatement", - "src": "3175:66:112" + "src": "3175:66:125" }, { "expression": { @@ -7141,12 +7157,12 @@ { "arguments": [ { - "id": 69318, + "id": 70104, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3277:14:112", + "referencedDeclaration": 70067, + "src": "3277:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7161,33 +7177,33 @@ } ], "expression": { - "id": 69316, + "id": 70102, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3263:5:112", + "referencedDeclaration": 70570, + "src": "3263:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69317, + "id": 70103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3269:7:112", + "memberLocation": "3269:7:125", "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10431, - "src": "3263:13:112", + "referencedDeclaration": 11182, + "src": "3263:13:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69319, + "id": 70105, "isConstant": false, "isLValue": false, "isPure": false, @@ -7196,7 +7212,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3263:29:112", + "src": "3263:29:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7205,14 +7221,14 @@ }, { "hexValue": "6e6f74206f7665722033", - "id": 69320, + "id": 70106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3294:12:112", + "src": "3294:12:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7b00cb91cda09e64eef8629cf4ba59334d3d3a5d26b89f8a79179d749571cee8", "typeString": "literal_string \"not over 3\"" @@ -7231,21 +7247,21 @@ "typeString": "literal_string \"not over 3\"" } ], - "id": 69315, + "id": 70101, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "3251:11:112", + "referencedDeclaration": 13679, + "src": "3251:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69321, + "id": 70107, "isConstant": false, "isLValue": false, "isPure": false, @@ -7254,31 +7270,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3251:56:112", + "src": "3251:56:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69322, + "id": 70108, "nodeType": "ExpressionStatement", - "src": "3251:56:112" + "src": "3251:56:125" }, { "assignments": [ - 69324 + 70110 ], "declarations": [ { "constant": false, - "id": 69324, + "id": 70110, "mutability": "mutable", "name": "cluelessFren", - "nameLocation": "3326:12:112", + "nameLocation": "3326:12:125", "nodeType": "VariableDeclaration", - "scope": 69387, - "src": "3318:20:112", + "scope": 70173, + "src": "3318:20:125", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7286,10 +7302,10 @@ "typeString": "address" }, "typeName": { - "id": 69323, + "id": 70109, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3318:7:112", + "src": "3318:7:125", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7299,19 +7315,19 @@ "visibility": "internal" } ], - "id": 69329, + "id": 70115, "initialValue": { "arguments": [ { "hexValue": "3233353637373534363334363937", - "id": 69327, + "id": 70113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3349:14:112", + "src": "3349:14:125", "typeDescriptions": { "typeIdentifier": "t_rational_23567754634697_by_1", "typeString": "int_const 23567754634697" @@ -7326,26 +7342,26 @@ "typeString": "int_const 23567754634697" } ], - "id": 69326, + "id": 70112, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3341:7:112", + "src": "3341:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69325, + "id": 70111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3341:7:112", + "src": "3341:7:125", "typeDescriptions": {} } }, - "id": 69328, + "id": 70114, "isConstant": false, "isLValue": false, "isPure": true, @@ -7354,7 +7370,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3341:23:112", + "src": "3341:23:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7362,7 +7378,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3318:46:112" + "src": "3318:46:125" }, { "expression": { @@ -7370,12 +7386,12 @@ { "arguments": [ { - "id": 69333, + "id": 70119, "name": "cluelessFren", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69324, - "src": "3402:12:112", + "referencedDeclaration": 70110, + "src": "3402:12:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7390,33 +7406,33 @@ } ], "expression": { - "id": 69331, + "id": 70117, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3386:5:112", + "referencedDeclaration": 70570, + "src": "3386:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69332, + "id": 70118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3392:9:112", + "memberLocation": "3392:9:125", "memberName": "isAllowed", "nodeType": "MemberAccess", - "referencedDeclaration": 10376, - "src": "3386:15:112", + "referencedDeclaration": 11127, + "src": "3386:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69334, + "id": 70120, "isConstant": false, "isLValue": false, "isPure": false, @@ -7425,7 +7441,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3386:29:112", + "src": "3386:29:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7434,14 +7450,14 @@ }, { "hexValue": "616c726561647920616c6c6f776564", - "id": 69335, + "id": 70121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3417:17:112", + "src": "3417:17:125", "typeDescriptions": { "typeIdentifier": "t_stringliteral_defcf9d1f965d89ee12daeb45796c9c0e6e3336cbfe18b7ee4cbd547712e94c6", "typeString": "literal_string \"already allowed\"" @@ -7460,21 +7476,21 @@ "typeString": "literal_string \"already allowed\"" } ], - "id": 69330, + "id": 70116, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "3374:11:112", + "referencedDeclaration": 13679, + "src": "3374:11:125", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69336, + "id": 70122, "isConstant": false, "isLValue": false, "isPure": false, @@ -7483,27 +7499,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3374:61:112", + "src": "3374:61:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69337, + "id": 70123, "nodeType": "ExpressionStatement", - "src": "3374:61:112" + "src": "3374:61:125" }, { "expression": { "arguments": [ { - "id": 69341, + "id": 70127, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3455:14:112", + "referencedDeclaration": 70067, + "src": "3455:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7518,33 +7534,33 @@ } ], "expression": { - "id": 69338, + "id": 70124, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3446:2:112", + "referencedDeclaration": 13541, + "src": "3446:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69340, + "id": 70126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3449:5:112", + "memberLocation": "3449:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3446:8:112", + "referencedDeclaration": 24720, + "src": "3446:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69342, + "id": 70128, "isConstant": false, "isLValue": false, "isPure": false, @@ -7553,27 +7569,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3446:24:112", + "src": "3446:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69343, + "id": 70129, "nodeType": "ExpressionStatement", - "src": "3446:24:112" + "src": "3446:24:125" }, { "expression": { "arguments": [ { - "id": 69347, + "id": 70133, "name": "cluelessFren", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69324, - "src": "3501:12:112", + "referencedDeclaration": 70110, + "src": "3501:12:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7588,33 +7604,33 @@ } ], "expression": { - "id": 69344, + "id": 70130, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3480:5:112", + "referencedDeclaration": 70570, + "src": "3480:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69346, + "id": 70132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3486:14:112", + "memberLocation": "3486:14:125", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "3480:20:112", + "referencedDeclaration": 11132, + "src": "3480:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69348, + "id": 70134, "isConstant": false, "isLValue": false, "isPure": false, @@ -7623,27 +7639,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3480:34:112", + "src": "3480:34:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69349, + "id": 70135, "nodeType": "ExpressionStatement", - "src": "3480:34:112" + "src": "3480:34:125" }, { "expression": { "arguments": [ { - "id": 69353, + "id": 70139, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3534:14:112", + "referencedDeclaration": 70067, + "src": "3534:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7658,33 +7674,33 @@ } ], "expression": { - "id": 69350, + "id": 70136, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3525:2:112", + "referencedDeclaration": 13541, + "src": "3525:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69352, + "id": 70138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3528:5:112", + "memberLocation": "3528:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3525:8:112", + "referencedDeclaration": 24720, + "src": "3525:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69354, + "id": 70140, "isConstant": false, "isLValue": false, "isPure": false, @@ -7693,16 +7709,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3525:24:112", + "src": "3525:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69355, + "id": 70141, "nodeType": "ExpressionStatement", - "src": "3525:24:112" + "src": "3525:24:125" }, { "expression": { @@ -7710,33 +7726,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 69356, + "id": 70142, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3559:2:112", + "referencedDeclaration": 13541, + "src": "3559:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69358, + "id": 70144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3562:12:112", + "memberLocation": "3562:12:125", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3559:15:112", + "referencedDeclaration": 24784, + "src": "3559:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 69359, + "id": 70145, "isConstant": false, "isLValue": false, "isPure": false, @@ -7745,27 +7761,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3559:17:112", + "src": "3559:17:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69360, + "id": 70146, "nodeType": "ExpressionStatement", - "src": "3559:17:112" + "src": "3559:17:125" }, { "expression": { "arguments": [ { - "id": 69364, + "id": 70150, "name": "cluelessFren", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69324, - "src": "3607:12:112", + "referencedDeclaration": 70110, + "src": "3607:12:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7780,33 +7796,33 @@ } ], "expression": { - "id": 69361, + "id": 70147, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3586:5:112", + "referencedDeclaration": 70570, + "src": "3586:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69363, + "id": 70149, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3592:14:112", + "memberLocation": "3592:14:125", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "3586:20:112", + "referencedDeclaration": 11132, + "src": "3586:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69365, + "id": 70151, "isConstant": false, "isLValue": false, "isPure": false, @@ -7815,27 +7831,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3586:34:112", + "src": "3586:34:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69366, + "id": 70152, "nodeType": "ExpressionStatement", - "src": "3586:34:112" + "src": "3586:34:125" }, { "expression": { "arguments": [ { - "id": 69370, + "id": 70156, "name": "plussOneTarget", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69281, - "src": "3640:14:112", + "referencedDeclaration": 70067, + "src": "3640:14:125", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7850,33 +7866,33 @@ } ], "expression": { - "id": 69367, + "id": 70153, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3631:2:112", + "referencedDeclaration": 13541, + "src": "3631:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69369, + "id": 70155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3634:5:112", + "memberLocation": "3634:5:125", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3631:8:112", + "referencedDeclaration": 24720, + "src": "3631:8:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69371, + "id": 70157, "isConstant": false, "isLValue": false, "isPure": false, @@ -7885,16 +7901,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3631:24:112", + "src": "3631:24:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69372, + "id": 70158, "nodeType": "ExpressionStatement", - "src": "3631:24:112" + "src": "3631:24:125" }, { "expression": { @@ -7902,33 +7918,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 69373, + "id": 70159, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3665:2:112", + "referencedDeclaration": 13541, + "src": "3665:2:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69375, + "id": 70161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3668:12:112", + "memberLocation": "3668:12:125", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3665:15:112", + "referencedDeclaration": 24784, + "src": "3665:15:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 69376, + "id": 70162, "isConstant": false, "isLValue": false, "isPure": false, @@ -7937,16 +7953,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3665:17:112", + "src": "3665:17:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69377, + "id": 70163, "nodeType": "ExpressionStatement", - "src": "3665:17:112" + "src": "3665:17:125" }, { "expression": { @@ -7955,14 +7971,14 @@ "arguments": [ { "hexValue": "333436373837393635343437393837383738373837383738373837313238313238313238", - "id": 69383, + "id": 70169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3721:36:112", + "src": "3721:36:125", "typeDescriptions": { "typeIdentifier": "t_rational_346787965447987878787878787128128128_by_1", "typeString": "int_const 3467...(28 digits omitted)...8128" @@ -7977,26 +7993,26 @@ "typeString": "int_const 3467...(28 digits omitted)...8128" } ], - "id": 69382, + "id": 70168, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3713:7:112", + "src": "3713:7:125", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69381, + "id": 70167, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3713:7:112", + "src": "3713:7:125", "typeDescriptions": {} } }, - "id": 69384, + "id": 70170, "isConstant": false, "isLValue": false, "isPure": true, @@ -8005,7 +8021,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3713:45:112", + "src": "3713:45:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8021,33 +8037,33 @@ } ], "expression": { - "id": 69378, + "id": 70164, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "3692:5:112", + "referencedDeclaration": 70570, + "src": "3692:5:125", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69380, + "id": 70166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3698:14:112", + "memberLocation": "3698:14:125", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "3692:20:112", + "referencedDeclaration": 11132, + "src": "3692:20:125", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69385, + "id": 70171, "isConstant": false, "isLValue": false, "isPure": false, @@ -8056,16 +8072,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3692:67:112", + "src": "3692:67:125", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69386, + "id": 70172, "nodeType": "ExpressionStatement", - "src": "3692:67:112" + "src": "3692:67:125" } ] }, @@ -8074,20 +8090,20 @@ "kind": "function", "modifiers": [], "name": "testAllowListSequence", - "nameLocation": "975:21:112", + "nameLocation": "975:21:125", "parameters": { - "id": 69029, + "id": 69815, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:112" + "src": "996:2:125" }, "returnParameters": { - "id": 69030, + "id": 69816, "nodeType": "ParameterList", "parameters": [], - "src": "1006:0:112" + "src": "1006:0:125" }, - "scope": 69389, + "scope": 70175, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -8097,54 +8113,54 @@ "baseContracts": [ { "baseName": { - "id": 68945, + "id": 69731, "name": "DeploysInit", "nameLocations": [ - "280:11:112" + "280:11:125" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "280:11:112" + "referencedDeclaration": 71026, + "src": "280:11:125" }, - "id": 68946, + "id": 69732, "nodeType": "InheritanceSpecifier", - "src": "280:11:112" + "src": "280:11:125" } ], "canonicalName": "AllowListT", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 69389, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 70175, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "AllowListT", - "nameLocation": "266:10:112", - "scope": 69390, + "nameLocation": "266:10:125", + "scope": 70176, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 112 + "id": 125 } \ No newline at end of file diff --git a/out/AutID.sol/AutID.json b/out/AutID.sol/AutID.json index 41e2cafa..f7a6b715 100644 --- a/out/AutID.sol/AutID.json +++ b/out/AutID.sol/AutID.json @@ -851,7 +851,7 @@ }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033", - "sourceMap": "600:11296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1987:344:119;;;;;;:::i;:::-;;:::i;:::-;;;565:14:167;;558:22;540:41;;528:2;513:18;1987:344:119;;;;;;;;2931:98;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:167;;;1679:51;;1667:2;1652:18;4407:167:119;1533:203:167;3928:418:119;;;;;;:::i;:::-;;:::i;:::-;;6706:331:0;;;;;;:::i;:::-;;:::i;5084:327:119:-;;;;;;:::i;:::-;;:::i;7248:251:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7905:902::-;;;;;;:::i;:::-;;:::i;5477:179:119:-;;;;;;:::i;:::-;;:::i;10304:108:0:-;;;:::i;:::-;;;4455:25:167;;;4443:2;4428:18;10304:108:0;4309:177:167;10144:154:0;;;;;;:::i;:::-;;:::i;5539:528::-;;;;;;:::i;:::-;;:::i;1293:144:114:-;;;;;;:::i;:::-;1377:4;1413:17;-1:-1:-1;;;;;1400:30:114;;;1413:17;;1400:30;;1293:144;2421:1425:0;;;;;;:::i;:::-;;:::i;2651:218:119:-;;;;;;:::i;:::-;;:::i;1230:61:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1230:61:0;;;2390:204:119;;;;;;:::i;:::-;;:::i;1660:277:0:-;;;;;;:::i;:::-;;:::i;8946:135::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9049:25:0;9023:7;9049:25;;;:13;:25;;;;;;;8946:135;3093:102:119;;;:::i;7505:228:0:-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7676:38:0;;;;;:25;:38;;;;;:50;;;;;;;;;;;7669:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7505:228;;;;;;;7306:13:167;;-1:-1:-1;;;;;7302:39:167;7284:58;;7398:4;7386:17;;;7380:24;7358:20;;;7351:54;7461:4;7449:17;;;7443:24;7421:20;;;7414:54;7538:4;7526:17;;;7520:24;7513:32;7506:40;7484:20;;;7477:70;;;;7271:3;7256:19;;7083:470;4641:153:119;;;;;;:::i;:::-;;:::i;4255:1278:0:-;;;;;;:::i;:::-;;:::i;5722:315:119:-;;;;;;:::i;:::-;;:::i;1298:159:0:-;;;;;;:::i;:::-;;:::i;747:608:122:-;;;;;;:::i;:::-;;:::i;1018:119:114:-;1078:17;1113;-1:-1:-1;;;;;1113:17:114;1018:119;;9087:405:0;;;;;;:::i;:::-;;:::i;4860:162:119:-;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:119;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;6073:627:0;;;;;;:::i;:::-;;:::i;1095:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1095:47:0;;;1165:59;;;;;;:::i;:::-;;:::i;9638:500::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1987:344:119:-;2111:4;-1:-1:-1;;;;;;2146:51:119;;-1:-1:-1;;;2146:51:119;;:126;;-1:-1:-1;;;;;;;2213:59:119;;-1:-1:-1;;;2213:59:119;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:127;;;2288:36:119;2127:197;1987:344;-1:-1:-1;;1987:344:119:o;2931:98::-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:119;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:119;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:119;:2;-1:-1:-1;;;;;4076:11:119;;4068:57;;;;-1:-1:-1;;;4068:57:119;;11715:2:167;4068:57:119;;;11697:21:167;11754:2;11734:18;;;11727:30;11793:34;11773:18;;;11766:62;-1:-1:-1;;;11844:18:167;;;11837:31;11885:19;;4068:57:119;;;;;;;;;4173:5;-1:-1:-1;;;;;4157:21:119;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4157:21:119;;:62;;;;4182:37;4199:5;4206:12;:10;:12::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:119;;12117:2:167;4136:171:119;;;12099:21:167;12156:2;12136:18;;;12129:30;12195:34;12175:18;;;12168:62;12266:32;12246:18;;;12239:60;12316:19;;4136:171:119;11915:426:167;4136:171:119;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;6706:331:0:-;6793:23;6803:12;:10;:12::i;6793:23::-;6820:1;6793:28;6785:94;;;;-1:-1:-1;;;6785:94:0;;;;;;;:::i;:::-;6889:15;6907:13;:27;6921:12;:10;:12::i;:::-;-1:-1:-1;;;;;6907:27:0;-1:-1:-1;;;;;6907:27:0;;;;;;;;;;;;;6889:45;;6944:34;6957:7;6966:11;;6944:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6944:12:0;;-1:-1:-1;;;6944:34:0:i;:::-;6994:36;7009:7;7018:11;;6994:36;;;;;;;;:::i;:::-;;;;;;;;6775:262;6706:331;;:::o;5084:327:119:-;5273:41;5292:12;:10;:12::i;:::-;5306:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:119;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;7248:251:0:-;7324:21;7365:22;7375:11;7365:9;:22::i;:::-;7391:1;7365:27;7357:93;;;;-1:-1:-1;;;7357:93:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7467:25:0;;;;;;:12;:25;;;;;;;;;7460:32;;;;;;;;;;;;;;;;;7467:25;;7460:32;;7467:25;7460:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7460:32:0;;;;;;;;;;;;;;;;;;;;;;;7248:251;;;:::o;7905:902::-;7970:24;8006:9;8025:11;8062:5;-1:-1:-1;;;;;8056:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8056:28:0;;;;;;;;;;;;:::i;:::-;8046:38;;8094:24;8135:7;:14;-1:-1:-1;;;;;8121:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8121:29:0;;8094:56;;8161:271;8173:7;:14;8169:1;:18;8161:271;;;8208:25;:37;8234:7;8242:1;8234:10;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;8208:37:0;;;;;;;;;;;;;;;;-1:-1:-1;8208:37:0;;;:44;;;;;;;;;;:53;;;;;8204:159;;;8294:7;8302:1;8294:10;;;;;;;;:::i;:::-;;;;;;;8281:7;8289:1;8281:10;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;8281:23:0;;;-1:-1:-1;;;;;8281:23:0;;;;;8204:159;;;8343:5;;;:::i;:::-;;;8204:159;8404:3;;;;;8161:271;;;8445:1;8441:5;;8497:3;8480:7;:14;:20;;;;:::i;:::-;-1:-1:-1;;;;;8466:35:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8466:35:0;;8456:45;;8517:1;8511:7;;8528:273;8540:7;:14;8536:1;:18;8528:273;;;8597:1;-1:-1:-1;;;;;8575:24:0;:7;8583:1;8575:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8575:24:0;;8571:161;;8634:7;8642:1;8634:10;;;;;;;;:::i;:::-;;;;;;;8619:7;8627:3;8619:12;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;8619:25:0;;;-1:-1:-1;;;;;8619:25:0;;;;;8694:5;;;;;8571:161;8773:3;;;;;8528:273;;;7996:811;;;7905:902;;;:::o;5477:179:119:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;10304:108:0:-;10360:7;10386:19;:9;918:14:148;;827:112;10386:19:0;10379:26;;10304:108;:::o;10144:154::-;10232:7;10258:13;10272:18;10281:8;10272;:18::i;:::-;10258:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;10258:33:0;;10144:154;-1:-1:-1;;10144:154:0:o;5539:528::-;5613:25;:39;5639:12;:10;:12::i;:::-;-1:-1:-1;;;;;5613:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5613:39:0;;;:51;;;;;;;;;:60;;;;;5605:92;;;;-1:-1:-1;;;5605:92:0;;15643:2:167;5605:92:0;;;15625:21:167;15682:2;15662:18;;;15655:30;-1:-1:-1;;;15701:18:167;;;15694:49;15760:18;;5605:92:0;15441:343:167;5605:92:0;5770:5;5707:25;:39;5733:12;:10;:12::i;:::-;-1:-1:-1;;;;;5707:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5707:39:0;;;:51;;;;;;;;;:60;;:68;;-1:-1:-1;;5707:68:0;;;;;;;;;;;5785:25;-1:-1:-1;5811:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;5785:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5785:39:0;;;:51;;;;;;;;;:62;;:66;6022:38;5825:10;6047:12;:10;:12::i;:::-;6022:38;;;-1:-1:-1;;;;;16019:15:167;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;6022:38:0;;;;;;;5539:528;:::o;2421:1425::-;2613:2;2594:8;2588:22;:27;2580:74;;;;-1:-1:-1;;;2580:74:0;;16300:2:167;2580:74:0;;;16282:21:167;16339:2;16319:18;;;16312:30;16378:34;16358:18;;;16351:62;-1:-1:-1;;;16429:18:167;;;16422:32;16471:19;;2580:74:0;16098:398:167;2580:74:0;2679:1;2672:4;:8;:20;;;;;2691:1;2684:4;:8;2672:20;2664:61;;;;-1:-1:-1;;;2664:61:0;;16703:2:167;2664:61:0;;;16685:21:167;16742:2;16722:18;;;16715:30;16781;16761:18;;;16754:58;16829:18;;2664:61:0;16501:352:167;2664:61:0;2756:1;2743:10;:14;:33;;;;;2774:2;2761:10;:15;2743:33;2735:90;;;;-1:-1:-1;;;2735:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2843:24:0;;2835:55;;;;-1:-1:-1;;;2835:55:0;;17473:2:167;2835:55:0;;;17455:21:167;17512:2;17492:18;;;17485:30;-1:-1:-1;;;17531:18:167;;;17524:48;17589:18;;2835:55:0;17271:342:167;2835:55:0;2908:23;2918:12;:10;:12::i;2908:23::-;:28;2900:99;;;;-1:-1:-1;;;2900:99:0;;17820:2:167;2900:99:0;;;17802:21:167;17859:2;17839:18;;;17832:30;17898:34;17878:18;;;17871:62;17969:28;17949:18;;;17942:56;18015:19;;2900:99:0;17618:422:167;2900:99:0;3052:1;-1:-1:-1;;;;;3017:37:0;:13;3031:8;3017:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:23:0;:37;3009:80;;;;-1:-1:-1;;;3009:80:0;;18247:2:167;3009:80:0;;;18229:21:167;18286:2;18266:18;;;18259:30;18325:32;18305:18;;;18298:60;18375:18;;3009:80:0;18045:354:167;3009:80:0;3124:10;-1:-1:-1;;;;;3108:35:0;;3144:12;:10;:12::i;:::-;3108:55;;-1:-1:-1;;;;;;3108:55:0;;;;;;;-1:-1:-1;;;;;18596:32:167;;;3108:55:0;;;18578:51:167;18645:18;;;18638:34;;;18551:18;;3108:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3100:100;;;;-1:-1:-1;;;3100:100:0;;19135:2:167;3100:100:0;;;19117:21:167;;;19154:18;;;19147:30;19213:34;19193:18;;;19186:62;19265:18;;3100:100:0;18933:356:167;3100:100:0;3211:23;3237:18;3246:8;3237;:18::i;:::-;3211:44;;3265:15;3283:19;:9;918:14:148;;827:112;3283:19:0;3265:37;;3313:32;3323:12;:10;:12::i;:::-;3337:7;3313:9;:32::i;:::-;3355:26;3368:7;3377:3;3355:12;:26::i;:::-;3446:45;;;;;;;;-1:-1:-1;;;;;3446:45:0;;;;;;;;;;;;;;;;3486:4;3446:45;;;;3392:25;-1:-1:-1;3418:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;3392:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;3392:39:0;;;:51;;;;;;;;;;:99;;;;-1:-1:-1;;;;;;3392:99:0;;;;;;;;;;;;;-1:-1:-1;3392:99:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3392:99:0;;;;;;;;;;;3501:12;;3514;:10;:12::i;:::-;-1:-1:-1;;;;;3501:26:0;;;;;;;;;;;;;;;;;-1:-1:-1;3501:26:0;;;:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3501:43:0;;;;;;;;;;3585:7;;3555:13;;3569:12;:10;:12::i;:::-;-1:-1:-1;;;;;3555:27:0;;;;;;;;;;;;-1:-1:-1;3555:27:0;:37;3629:12;:10;:12::i;:::-;3602:13;3616:9;3602:24;;;;;;:::i;:::-;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;3602:39:0;;;;-1:-1:-1;;;;;;3602:39:0;;;;;;;;;3651:21;:9;1032:19:148;;1050:1;1032:19;;;945:123;3651:21:0;3702:10;-1:-1:-1;;;;;3683:35:0;;3719:12;:10;:12::i;:::-;3683:55;;-1:-1:-1;;;;;;3683:55:0;;;;;;;-1:-1:-1;;;;;18596:32:167;;;3683:55:0;;;18578:51:167;18645:18;;;18638:34;;;18551:18;;3683:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3754:35;3767:12;:10;:12::i;:::-;3754:35;;;-1:-1:-1;;;;;18596:32:167;;;18578:51;;18660:2;18645:18;;18638:34;;;18551:18;3754:35:0;;;;;;;3804;3814:10;3826:12;:10;:12::i;:::-;3804:35;;;-1:-1:-1;;;;;16019:15:167;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;3804:35:0;;;;;;;2570:1276;;2421:1425;;;;;:::o;2651:218:119:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:119;;2784:56;;;;-1:-1:-1;;;2784:56:119;;19496:2:167;2784:56:119;;;19478:21:167;19535:2;19515:18;;;19508:30;-1:-1:-1;;;19554:18:167;;;19547:54;19618:18;;2784:56:119;19294:348:167;2390:204:119;2462:7;-1:-1:-1;;;;;2489:19:119;;2481:73;;;;-1:-1:-1;;;2481:73:119;;19849:2:167;2481:73:119;;;19831:21:167;19888:2;19868:18;;;19861:30;19927:34;19907:18;;;19900:62;-1:-1:-1;;;19978:18:167;;;19971:39;20027:19;;2481:73:119;19647:405:167;2481:73:119;-1:-1:-1;;;;;;2571:16:119;;;;;:9;:16;;;;;;;2390:204::o;1660:277:0:-;1744:13;1760;:27;1774:12;:10;:12::i;:::-;-1:-1:-1;;;;;1760:27:0;;;;;;;;;;;;;;;-1:-1:-1;1760:27:0;;;;1798:23;;;:16;:23;;;;1760:27;;-1:-1:-1;1798:35:0;1824:9;;1798:23;:35;:::i;:::-;;1875:12;:10;:12::i;:::-;1843:18;1862:9;;1843:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;:44;;-1:-1:-1;;;;;1843:44:0;;;;-1:-1:-1;;;;;;1843:44:0;;;;;;;;;;1903:27;;1843:29;;1903:27;1734:203;1660:277;;:::o;3093:102:119:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;4754:12;:10;:12::i;:::-;4768:8;4778;4735:18;:52::i;:::-;4641:153;;:::o;4255:1278:0:-;4369:1;4362:4;:8;:20;;;;;4381:1;4374:4;:8;4362:20;4354:61;;;;-1:-1:-1;;;4354:61:0;;16703:2:167;4354:61:0;;;16685:21:167;16742:2;16722:18;;;16715:30;16781;16761:18;;;16754:58;16829:18;;4354:61:0;16501:352:167;4354:61:0;4518:1;4505:10;:14;:33;;;;;4536:2;4523:10;:15;4505:33;4497:90;;;;-1:-1:-1;;;4497:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4605:24:0;;4597:55;;;;-1:-1:-1;;;4597:55:0;;17473:2:167;4597:55:0;;;17455:21:167;17512:2;17492:18;;;17485:30;-1:-1:-1;;;17531:18:167;;;17524:48;17589:18;;4597:55:0;17271:342:167;4597:55:0;4670:23;4680:12;:10;:12::i;4670:23::-;4697:1;4670:28;4662:94;;;;-1:-1:-1;;;4662:94:0;;;;;;;:::i;:::-;4767:28;4798:12;:26;4811:12;:10;:12::i;:::-;-1:-1:-1;;;;;4798:26:0;-1:-1:-1;;;;;4798:26:0;;;;;;;;;;;;4767:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4767:57:0;;;;;;;;;;;;;;;;;;;;;;;4839:13;4834:154;4866:11;:18;4858:5;:26;4834:154;;;4939:10;-1:-1:-1;;;;;4917:32:0;:11;4929:5;4917:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4917:32:0;;4909:68;;;;-1:-1:-1;;;4909:68:0;;22595:2:167;4909:68:0;;;22577:21:167;22634:2;22614:18;;;22607:30;22673:25;22653:18;;;22646:53;22716:18;;4909:68:0;22393:347:167;4909:68:0;4886:7;;;;:::i;:::-;;;;4834:154;;;;5049:10;-1:-1:-1;;;;;5033:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5019:10;:57;;4998:137;;;;-1:-1:-1;;;4998:137:0;;;;;;;:::i;:::-;5170:10;-1:-1:-1;;;;;5154:35:0;;5190:12;:10;:12::i;:::-;5154:55;;-1:-1:-1;;;;;;5154:55:0;;;;;;;-1:-1:-1;;;;;18596:32:167;;;5154:55:0;;;18578:51:167;18645:18;;;18638:34;;;18551:18;;5154:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:100;;;;-1:-1:-1;;;5146:100:0;;19135:2:167;5146:100:0;;;19117:21:167;;;19154:18;;;19147:30;19213:34;19193:18;;;19186:62;19265:18;;5146:100:0;18933:356:167;5146:100:0;5311:45;;;;;;;;-1:-1:-1;;;;;5311:45:0;;;;;;;;;;;;;;;;5351:4;5311:45;;;;5257:25;-1:-1:-1;5283:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;5257:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5257:39:0;;;:51;;;;;;;;;;:99;;;;-1:-1:-1;;;;;;5257:99:0;;;;;;;;;;;;;-1:-1:-1;5257:99:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5257:99:0;;;;;;;;;;;5366:12;;5379;:10;:12::i;:::-;-1:-1:-1;;;;;5366:26:0;;;;;;;;;;;;;;;;;-1:-1:-1;5366:26:0;;;:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5366:43:0;;;;;;;;;5420:35;5456:12;:10;:12::i;:::-;5420:55;;-1:-1:-1;;;;;;5420:55:0;;;;;;;-1:-1:-1;;;;;18596:32:167;;;5420:55:0;;;18578:51:167;18645:18;;;18638:34;;;18551:18;;5420:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5491:35;5501:10;5513:12;:10;:12::i;:::-;5491:35;;;-1:-1:-1;;;;;16019:15:167;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;5491:35:0;;;;;;;4344:1189;4255:1278;;;:::o;5722:315:119:-;5890:41;5909:12;:10;:12::i;:::-;5923:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:119;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;1298:159:0:-;3111:19:118;3134:13;-1:-1:-1;;;3134:13:118;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:118;;3212:1;-1:-1:-1;;;3197:12:118;;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:118;1476:19:124;:23;;;3219:66:118;;-1:-1:-1;3268:12:118;;-1:-1:-1;;;3268:12:118;;;;3284:1;3268:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:118;;23550:2:167;3157:201:118;;;23532:21:167;23589:2;23569:18;;;23562:30;23628:34;23608:18;;;23601:62;-1:-1:-1;;;23679:18:167;;;23672:44;23733:19;;3157:201:118;23348:410:167;3157:201:118;3368:12;:16;;-1:-1:-1;;;;3368:16:118;-1:-1:-1;;;3368:16:118;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;;;3428:20:118;-1:-1:-1;;;3428:20:118;;;3394:65;1373:29:0::1;;;;;;;;;;;;;;-1:-1:-1::0;;;1373:29:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1373:29:0::1;;::::0;:13:::1;:29::i;:::-;1212:17:114::0;:30;;-1:-1:-1;;;;;;1212:30:114;-1:-1:-1;;;;;1212:30:114;;;;;3483:14:118;3479:99;;;3529:5;3513:21;;-1:-1:-1;;;;3513:21:118;;;3553:14;;-1:-1:-1;23915:36:167;;3553:14:118;;23903:2:167;23888:18;3553:14:118;;;;;;;;3101:483;1298:159:0;:::o;747:608:122:-;820:13;845:23;860:7;845:14;:23::i;:::-;879;905:19;;;:10;:19;;;;;879:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;934:18;955:10;3855:9:119;;;;;;;;;-1:-1:-1;3855:9:119;;;3779:92;955:10:122;934:31;;1044:4;1038:18;1060:1;1038:23;1034:70;;-1:-1:-1;1084:9:122;747:608;-1:-1:-1;;747:608:122:o;1034:70::-;1206:23;;:27;1202:106;;1280:4;1286:9;1263:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1249:48;;;;747:608;;;:::o;1202:106::-;1325:23;1340:7;1325:14;:23::i;:::-;1318:30;747:608;-1:-1:-1;;;;747:608:122:o;9087:405:0:-;-1:-1:-1;;;;;9213:25:0;;9166:7;9213:25;;;:12;:25;;;;;;;;9185:53;;;;;;;;;;;;;;;;;9166:7;;9185:53;;9213:25;9185:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9185:53:0;;;;;;;;;;;;;;;;;;;;;;;9249:23;9291:13;9286:168;9318:8;:15;9310:5;:23;9286:168;;;-1:-1:-1;;;;;9377:38:0;;;;;;:25;:38;;;;;9416:15;;9377:38;;;9416:8;;9425:5;;9416:15;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9377:55:0;-1:-1:-1;;;;;9377:55:0;;;;;;;;;;;;:66;;;9358:85;;;;;:::i;:::-;;-1:-1:-1;9335:7:0;;;;:::i;:::-;;;;9286:168;;;-1:-1:-1;9470:15:0;9087:405;-1:-1:-1;;;9087:405:0:o;6073:627::-;6176:25;:39;6202:12;:10;:12::i;:::-;-1:-1:-1;;;;;6176:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;6176:39:0;;;:51;;;;;;;;;:60;;;;;6168:92;;;;-1:-1:-1;;;6168:92:0;;15643:2:167;6168:92:0;;;15625:21:167;15682:2;15662:18;;;15655:30;-1:-1:-1;;;15701:18:167;;;15694:49;15760:18;;6168:92:0;15441:343:167;6168:92:0;6295:1;6279:13;:17;:39;;;;;6316:2;6300:13;:18;6279:39;6271:96;;;;-1:-1:-1;;;6271:96:0;;;;;;;:::i;:::-;6432:10;-1:-1:-1;;;;;6416:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6399:13;:60;;6378:152;;;;-1:-1:-1;;;6378:152:0;;;;;;;:::i;:::-;6606:13;6541:25;:39;6567:12;:10;:12::i;:::-;-1:-1:-1;;;;;6541:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;6541:39:0;;;:51;;;;;;;;;:62;;:78;6635:58;6581:10;6665:12;:10;:12::i;:::-;6635:58;;;-1:-1:-1;;;;;24851:15:167;;;24833:34;;24903:15;;;;24898:2;24883:18;;24876:43;24935:18;;24928:34;;;24783:2;24768:18;6635:58:0;24593:375:167;1165:59:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9638:500::-;9753:28;9797:9;9820:6;:13;9837:1;9820:18;9816:70;;9865:4;-1:-1:-1;;;;;9849:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9849:37:0;;;;;;;;;;;;:::i;:::-;9840:46;;9816:70;9925:6;:13;-1:-1:-1;;;;;9911:28:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9911:28:0;;9897:42;;9950:182;9962:6;:13;9958:1;:17;9950:182;;;10009:25;:36;10035:6;10042:1;10035:9;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10009:36:0;-1:-1:-1;;;;;10009:36:0;;;;;;;;;;;;:42;10046:4;-1:-1:-1;;;;;10009:42:0;-1:-1:-1;;;;;10009:42:0;;;;;;;;;;;;:53;;;9992:11;10004:1;9992:14;;;;;;;;:::i;:::-;;;;;;;;;;:70;10104:3;;9950:182;;;9787:351;9638:500;;;;:::o;12173:133:119:-;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:119;12246:53;;;;-1:-1:-1;;;12246:53:119;;19496:2:167;12246:53:119;;;19478:21:167;19535:2;19515:18;;;19508:30;-1:-1:-1;;;19554:18:167;;;19547:54;19618:18;;12246:53:119;19294:348:167;12246:53:119;12173:133;:::o;11054:154:0:-;11146:7;11172:29;:27;:29::i;11464:182:119:-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:119;-1:-1:-1;;;;;11538:29:119;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:119;;;;;;;;;;;11464:182;;:::o;1502:214:122:-;7571:4:119;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:119;1593:75:122;;;;-1:-1:-1;;;1593:75:122;;25175:2:167;1593:75:122;;;25157:21:167;25214:2;25194:18;;;25187:30;25253:34;25233:18;;;25226:62;-1:-1:-1;;;25304:18:167;;;25297:44;25358:19;;1593:75:122;24973:410:167;1593:75:122;1678:19;;;;:10;:19;;;;;:31;1700:9;1678:19;:31;:::i;7789:272:119:-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:119;:7;-1:-1:-1;;;;;7966:16:119;;:52;;;-1:-1:-1;;;;;;4980:25:119;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:119;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:119;;7958:96;7789:272;-1:-1:-1;;;;7789:272:119:o;10579:145:0:-;10669:48;;-1:-1:-1;;;10669:48:0;;26947:2:167;10669:48:0;;;26929:21:167;26986:2;26966:18;;;26959:30;27025:32;27005:18;;;26998:60;27075:18;;10669:48:0;26745:354:167;11420:286:0;11482:13;11539:5;11507:23;11555:110;11579:10;:17;11575:1;:21;11555:110;;;11633:21;11640:10;11651:1;11640:13;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11640:13:0;11633:6;:21::i;:::-;11617:10;11628:1;11617:13;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;11617:37:0;;;;;;;;-1:-1:-1;11598:3:0;;;;:::i;:::-;;;;11555:110;;8391:108:119;8466:26;8476:2;8480:7;8466:26;;;;;;;;;;;;:9;:26::i;11782:307::-;11932:8;-1:-1:-1;;;;;11923:17:119;:5;-1:-1:-1;;;;;11923:17:119;;11915:55;;;;-1:-1:-1;;;11915:55:119;;27306:2:167;11915:55:119;;;27288:21:167;27345:2;27325:18;;;27318:30;27384:27;27364:18;;;27357:55;27429:18;;11915:55:119;27104:349:167;11915:55:119;-1:-1:-1;;;;;11980:25:119;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:119;;;;;;;;;;12041:41;;540::167;;;12041::119;;513:18:167;12041:41:119;;;;;;;11782:307;;;:::o;1605:149::-;4910:13:118;;-1:-1:-1;;;4910:13:118;;;;4902:69;;;;-1:-1:-1;;;4902:69:118;;;;;;;:::i;:::-;1708:39:119::1;1732:5;1739:7;1708:23;:39::i;3261:276::-:0;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:119;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:119:o;1481:547:114:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:114;1413:17;-1:-1:-1;;;;;1413:17:114;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:114;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:114;1481:547;:::o;11712:182:0:-;11762:6;-1:-1:-1;;;;;;;;;11784:11:0;;;;;;:26;;-1:-1:-1;;;;;;;;;;11799:11:0;;;;11784:26;11780:87;;;11840:15;:10;;;;11853:2;11840:15;:::i;:::-;11833:23;;;11712:182;-1:-1:-1;;11712:182:0:o;11780:87::-;-1:-1:-1;11884:3:0;11712:182::o;8720:309:119:-;8844:18;8850:2;8854:7;8844:5;:18::i;:::-;8893:53;8924:1;8928:2;8932:7;8941:4;8893:22;:53::i;:::-;8872:150;;;;-1:-1:-1;;;8872:150:119;;;;;;;:::i;1760:160::-;4910:13:118;;-1:-1:-1;;;4910:13:118;;;;4902:69;;;;-1:-1:-1;;;4902:69:118;;;;;;;:::i;:::-;1873:5:119::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:119::1;:17;1906:7:::0;1896;:17:::1;:::i;403:703:126:-:0;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:126;;;;;;;;;;;;-1:-1:-1;;;702:10:126;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:126;;-1:-1:-1;848:2:126;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;-1:-1:-1;;;;;892:17:126;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:126;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:126;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:126;;;;;;;;-1:-1:-1;1047:11:126;1056:2;1047:11;;:::i;:::-;;;919:150;;9351:427:119;-1:-1:-1;;;;;9430:16:119;;9422:61;;;;-1:-1:-1;;;9422:61:119;;29018:2:167;9422:61:119;;;29000:21:167;;;29037:18;;;29030:30;29096:34;29076:18;;;29069:62;29148:18;;9422:61:119;28816:356:167;9422:61:119;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:119;:30;9493:58;;;;-1:-1:-1;;;9493:58:119;;29379:2:167;9493:58:119;;;29361:21:167;29418:2;29398:18;;;29391:30;29457;29437:18;;;29430:58;29505:18;;9493:58:119;29177:352:167;9493:58:119;-1:-1:-1;;;;;9618:13:119;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:119;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:119;-1:-1:-1;;;;;9646:21:119;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;4641:153;;:::o;12858:853::-;13007:4;-1:-1:-1;;;;;13027:13:119;;1476:19:124;:23;13023:682:119;;13089:2;-1:-1:-1;;;;;13062:47:119;;13110:12;:10;:12::i;:::-;13124:4;13130:7;13139:4;13062:82;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:119;;;;;;;;-1:-1:-1;;13062:82:119;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:119;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:119;-1:-1:-1;;;13194:62:119;;-1:-1:-1;13187:69:119;;13023:682;-1:-1:-1;13690:4:119;12858:853;;;;;;:::o;14:131:167:-;-1:-1:-1;;;;;;88:32:167;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:167;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:167;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:167:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:167;;1348:180;-1:-1:-1;1348:180:167:o;1741:131::-;-1:-1:-1;;;;;1816:31:167;;1806:42;;1796:70;;1862:1;1859;1852:12;1877:134;1945:20;;1974:31;1945:20;1974:31;:::i;:::-;1877:134;;;:::o;2016:315::-;2084:6;2092;2145:2;2133:9;2124:7;2120:23;2116:32;2113:52;;;2161:1;2158;2151:12;2113:52;2200:9;2187:23;2219:31;2244:5;2219:31;:::i;:::-;2269:5;2321:2;2306:18;;;;2293:32;;-1:-1:-1;;;2016:315:167:o;2336:592::-;2407:6;2415;2468:2;2456:9;2447:7;2443:23;2439:32;2436:52;;;2484:1;2481;2474:12;2436:52;2524:9;2511:23;-1:-1:-1;;;;;2594:2:167;2586:6;2583:14;2580:34;;;2610:1;2607;2600:12;2580:34;2648:6;2637:9;2633:22;2623:32;;2693:7;2686:4;2682:2;2678:13;2674:27;2664:55;;2715:1;2712;2705:12;2664:55;2755:2;2742:16;2781:2;2773:6;2770:14;2767:34;;;2797:1;2794;2787:12;2767:34;2842:7;2837:2;2828:6;2824:2;2820:15;2816:24;2813:37;2810:57;;;2863:1;2860;2853:12;2810:57;2894:2;2886:11;;;;;2916:6;;-1:-1:-1;2336:592:167;;-1:-1:-1;;;;2336:592:167:o;2933:456::-;3010:6;3018;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:52;;;3095:1;3092;3085:12;3047:52;3134:9;3121:23;3153:31;3178:5;3153:31;:::i;:::-;3203:5;-1:-1:-1;3260:2:167;3245:18;;3232:32;3273:33;3232:32;3273:33;:::i;:::-;2933:456;;3325:7;;-1:-1:-1;;;3379:2:167;3364:18;;;;3351:32;;2933:456::o;3394:247::-;3453:6;3506:2;3494:9;3485:7;3481:23;3477:32;3474:52;;;3522:1;3519;3512:12;3474:52;3561:9;3548:23;3580:31;3605:5;3580:31;:::i;3646:658::-;3817:2;3869:21;;;3939:13;;3842:18;;;3961:22;;;3788:4;;3817:2;4040:15;;;;4014:2;3999:18;;;3788:4;4083:195;4097:6;4094:1;4091:13;4083:195;;;4162:13;;-1:-1:-1;;;;;4158:39:167;4146:52;;4253:15;;;;4218:12;;;;4194:1;4112:9;4083:195;;;-1:-1:-1;4295:3:167;;3646:658;-1:-1:-1;;;;;;3646:658:167:o;4491:127::-;4552:10;4547:3;4543:20;4540:1;4533:31;4583:4;4580:1;4573:15;4607:4;4604:1;4597:15;4623:275;4694:2;4688:9;4759:2;4740:13;;-1:-1:-1;;4736:27:167;4724:40;;-1:-1:-1;;;;;4779:34:167;;4815:22;;;4776:62;4773:88;;;4841:18;;:::i;:::-;4877:2;4870:22;4623:275;;-1:-1:-1;4623:275:167:o;4903:407::-;4968:5;-1:-1:-1;;;;;4994:6:167;4991:30;4988:56;;;5024:18;;:::i;:::-;5062:57;5107:2;5086:15;;-1:-1:-1;;5082:29:167;5113:4;5078:40;5062:57;:::i;:::-;5053:66;;5142:6;5135:5;5128:21;5182:3;5173:6;5168:3;5164:16;5161:25;5158:45;;;5199:1;5196;5189:12;5158:45;5248:6;5243:3;5236:4;5229:5;5225:16;5212:43;5302:1;5295:4;5286:6;5279:5;5275:18;5271:29;5264:40;4903:407;;;;;:::o;5315:222::-;5358:5;5411:3;5404:4;5396:6;5392:17;5388:27;5378:55;;5429:1;5426;5419:12;5378:55;5451:80;5527:3;5518:6;5505:20;5498:4;5490:6;5486:17;5451:80;:::i;5542:322::-;5611:6;5664:2;5652:9;5643:7;5639:23;5635:32;5632:52;;;5680:1;5677;5670:12;5632:52;5720:9;5707:23;-1:-1:-1;;;;;5745:6:167;5742:30;5739:50;;;5785:1;5782;5775:12;5739:50;5808;5850:7;5841:6;5830:9;5826:22;5808:50;:::i;5869:816::-;5984:6;5992;6000;6008;6016;6069:3;6057:9;6048:7;6044:23;6040:33;6037:53;;;6086:1;6083;6076:12;6037:53;6126:9;6113:23;-1:-1:-1;;;;;6196:2:167;6188:6;6185:14;6182:34;;;6212:1;6209;6202:12;6182:34;6235:50;6277:7;6268:6;6257:9;6253:22;6235:50;:::i;:::-;6225:60;;6338:2;6327:9;6323:18;6310:32;6294:48;;6367:2;6357:8;6354:16;6351:36;;;6383:1;6380;6373:12;6351:36;;6406:52;6450:7;6439:8;6428:9;6424:24;6406:52;:::i;:::-;6396:62;;;6505:2;6494:9;6490:18;6477:32;6467:42;;6556:2;6545:9;6541:18;6528:32;6518:42;;6610:3;6599:9;6595:19;6582:33;6624:31;6649:5;6624:31;:::i;:::-;6674:5;6664:15;;;5869:816;;;;;;;;:::o;6690:388::-;6758:6;6766;6819:2;6807:9;6798:7;6794:23;6790:32;6787:52;;;6835:1;6832;6825:12;6787:52;6874:9;6861:23;6893:31;6918:5;6893:31;:::i;:::-;6943:5;-1:-1:-1;7000:2:167;6985:18;;6972:32;7013:33;6972:32;7013:33;:::i;:::-;7065:7;7055:17;;;6690:388;;;;;:::o;7558:118::-;7644:5;7637:13;7630:21;7623:5;7620:32;7610:60;;7666:1;7663;7656:12;7681:382;7746:6;7754;7807:2;7795:9;7786:7;7782:23;7778:32;7775:52;;;7823:1;7820;7813:12;7775:52;7862:9;7849:23;7881:31;7906:5;7881:31;:::i;:::-;7931:5;-1:-1:-1;7988:2:167;7973:18;;7960:32;8001:30;7960:32;8001:30;:::i;8068:383::-;8145:6;8153;8161;8214:2;8202:9;8193:7;8189:23;8185:32;8182:52;;;8230:1;8227;8220:12;8182:52;8266:9;8253:23;8243:33;;8323:2;8312:9;8308:18;8295:32;8285:42;;8377:2;8366:9;8362:18;8349:32;8390:31;8415:5;8390:31;:::i;:::-;8440:5;8430:15;;;8068:383;;;;;:::o;8456:795::-;8551:6;8559;8567;8575;8628:3;8616:9;8607:7;8603:23;8599:33;8596:53;;;8645:1;8642;8635:12;8596:53;8684:9;8671:23;8703:31;8728:5;8703:31;:::i;:::-;8753:5;-1:-1:-1;8810:2:167;8795:18;;8782:32;8823:33;8782:32;8823:33;:::i;:::-;8875:7;-1:-1:-1;8929:2:167;8914:18;;8901:32;;-1:-1:-1;8984:2:167;8969:18;;8956:32;-1:-1:-1;;;;;9000:30:167;;8997:50;;;9043:1;9040;9033:12;8997:50;9066:22;;9119:4;9111:13;;9107:27;-1:-1:-1;9097:55:167;;9148:1;9145;9138:12;9097:55;9171:74;9237:7;9232:2;9219:16;9214:2;9210;9206:11;9171:74;:::i;:::-;9161:84;;;8456:795;;;;;;;:::o;9256:183::-;9316:4;-1:-1:-1;;;;;9341:6:167;9338:30;9335:56;;;9371:18;;:::i;:::-;-1:-1:-1;9416:1:167;9412:14;9428:4;9408:25;;9256:183::o;9444:1042::-;9537:6;9545;9598:2;9586:9;9577:7;9573:23;9569:32;9566:52;;;9614:1;9611;9604:12;9566:52;9654:9;9641:23;-1:-1:-1;;;;;9679:6:167;9676:30;9673:50;;;9719:1;9716;9709:12;9673:50;9742:22;;9795:4;9787:13;;9783:27;-1:-1:-1;9773:55:167;;9824:1;9821;9814:12;9773:55;9860:2;9847:16;9882:4;9906:60;9922:43;9962:2;9922:43;:::i;:::-;9906:60;:::i;:::-;10000:15;;;10082:1;10078:10;;;;10070:19;;10066:28;;;10031:12;;;;10106:19;;;10103:39;;;10138:1;10135;10128:12;10103:39;10162:11;;;;10182:217;10198:6;10193:3;10190:15;10182:217;;;10278:3;10265:17;10295:31;10320:5;10295:31;:::i;:::-;10339:18;;10215:12;;;;10377;;;;10182:217;;;10418:5;-1:-1:-1;10442:38:167;;-1:-1:-1;10461:18:167;;;10442:38;:::i;:::-;10432:48;;;;;9444:1042;;;;;:::o;10491:632::-;10662:2;10714:21;;;10784:13;;10687:18;;;10806:22;;;10633:4;;10662:2;10885:15;;;;10859:2;10844:18;;;10633:4;10928:169;10942:6;10939:1;10936:13;10928:169;;;11003:13;;10991:26;;11072:15;;;;11037:12;;;;10964:1;10957:9;10928:169;;11128:380;11207:1;11203:12;;;;11250;;;11271:61;;11325:4;11317:6;11313:17;11303:27;;11271:61;11378:2;11370:6;11367:14;11347:18;11344:38;11341:161;;11424:10;11419:3;11415:20;11412:1;11405:31;11459:4;11456:1;11449:15;11487:4;11484:1;11477:15;11341:161;;11128:380;;;:::o;12346:417::-;12548:2;12530:21;;;12587:2;12567:18;;;12560:30;12626:34;12621:2;12606:18;;12599:62;-1:-1:-1;;;12692:2:167;12677:18;;12670:51;12753:3;12738:19;;12346:417::o;12768:461::-;12955:6;12944:9;12937:25;12998:2;12993;12982:9;12978:18;12971:30;13037:6;13032:2;13021:9;13017:18;13010:34;13094:6;13086;13081:2;13070:9;13066:18;13053:48;13150:1;13121:22;;;13145:2;13117:31;;;13110:42;;;;13213:2;13192:15;;;-1:-1:-1;;13188:29:167;13173:45;13169:54;;12768:461;-1:-1:-1;;12768:461:167:o;13234:410::-;13436:2;13418:21;;;13475:2;13455:18;;;13448:30;13514:34;13509:2;13494:18;;13487:62;-1:-1:-1;;;13580:2:167;13565:18;;13558:44;13634:3;13619:19;;13234:410::o;13649:956::-;13744:6;13775:2;13818;13806:9;13797:7;13793:23;13789:32;13786:52;;;13834:1;13831;13824:12;13786:52;13867:9;13861:16;-1:-1:-1;;;;;13892:6:167;13889:30;13886:50;;;13932:1;13929;13922:12;13886:50;13955:22;;14008:4;14000:13;;13996:27;-1:-1:-1;13986:55:167;;14037:1;14034;14027:12;13986:55;14066:2;14060:9;14089:60;14105:43;14145:2;14105:43;:::i;14089:60::-;14183:15;;;14265:1;14261:10;;;;14253:19;;14249:28;;;14214:12;;;;14289:19;;;14286:39;;;14321:1;14318;14311:12;14286:39;14345:11;;;;14365:210;14381:6;14376:3;14373:15;14365:210;;;14454:3;14448:10;14471:31;14496:5;14471:31;:::i;:::-;14515:18;;14398:12;;;;14553;;;;14365:210;;;14594:5;13649:956;-1:-1:-1;;;;;;;13649:956:167:o;14610:127::-;14671:10;14666:3;14662:20;14659:1;14652:31;14702:4;14699:1;14692:15;14726:4;14723:1;14716:15;14742:127;14803:10;14798:3;14794:20;14791:1;14784:31;14834:4;14831:1;14824:15;14858:4;14855:1;14848:15;14874:135;14913:3;14934:17;;;14931:43;;14954:18;;:::i;:::-;-1:-1:-1;15001:1:167;14990:13;;14874:135::o;15014:128::-;15081:9;;;15102:11;;;15099:37;;;15116:18;;:::i;15147:289::-;15278:3;15316:6;15310:13;15332:66;15391:6;15386:3;15379:4;15371:6;15367:17;15332:66;:::i;:::-;15414:16;;;;;15147:289;-1:-1:-1;;15147:289:167:o;16858:408::-;17060:2;17042:21;;;17099:2;17079:18;;;17072:30;17138:34;17133:2;17118:18;;17111:62;-1:-1:-1;;;17204:2:167;17189:18;;17182:42;17256:3;17241:19;;16858:408::o;18683:245::-;18750:6;18803:2;18791:9;18782:7;18778:23;18774:32;18771:52;;;18819:1;18816;18809:12;18771:52;18851:9;18845:16;18870:28;18892:5;18870:28;:::i;20183:545::-;20285:2;20280:3;20277:11;20274:448;;;20321:1;20346:5;20342:2;20335:17;20391:4;20387:2;20377:19;20461:2;20449:10;20445:19;20442:1;20438:27;20432:4;20428:38;20497:4;20485:10;20482:20;20479:47;;;-1:-1:-1;20520:4:167;20479:47;20575:2;20570:3;20566:12;20563:1;20559:20;20553:4;20549:31;20539:41;;20630:82;20648:2;20641:5;20638:13;20630:82;;;20693:17;;;20674:1;20663:13;20630:82;;;20634:3;;;20183:545;;;:::o;20904:1206::-;-1:-1:-1;;;;;21023:3:167;21020:27;21017:53;;;21050:18;;:::i;:::-;21079:94;21169:3;21129:38;21161:4;21155:11;21129:38;:::i;:::-;21123:4;21079:94;:::i;:::-;21199:1;21224:2;21219:3;21216:11;21241:1;21236:616;;;;21896:1;21913:3;21910:93;;;-1:-1:-1;21969:19:167;;;21956:33;21910:93;-1:-1:-1;;20861:1:167;20857:11;;;20853:24;20849:29;20839:40;20885:1;20881:11;;;20836:57;22016:78;;21209:895;;21236:616;20130:1;20123:14;;;20167:4;20154:18;;-1:-1:-1;;21272:17:167;;;21373:9;21395:229;21409:7;21406:1;21403:14;21395:229;;;21498:19;;;21485:33;21470:49;;21605:4;21590:20;;;;21558:1;21546:14;;;;21425:12;21395:229;;;21399:3;21652;21643:7;21640:16;21637:159;;;21776:1;21772:6;21766:3;21760;21757:1;21753:11;21749:21;21745:34;21741:39;21728:9;21723:3;21719:19;21706:33;21702:79;21694:6;21687:95;21637:159;;;21839:1;21833:3;21830:1;21826:11;21822:19;21816:4;21809:33;21209:895;;;20904:1206;;;:::o;22115:273::-;22300:6;22292;22287:3;22274:33;22256:3;22326:16;;22351:13;;;22326:16;22115:273;-1:-1:-1;22115:273:167:o;22745:184::-;22815:6;22868:2;22856:9;22847:7;22843:23;22839:32;22836:52;;;22884:1;22881;22874:12;22836:52;-1:-1:-1;22907:16:167;;22745:184;-1:-1:-1;22745:184:167:o;22934:409::-;23136:2;23118:21;;;23175:2;23155:18;;;23148:30;23214:34;23209:2;23194:18;;23187:62;-1:-1:-1;;;23280:2:167;23265:18;;23258:43;23333:3;23318:19;;22934:409::o;23962:496::-;24141:3;24179:6;24173:13;24195:66;24254:6;24249:3;24242:4;24234:6;24230:17;24195:66;:::i;:::-;24324:13;;24283:16;;;;24346:70;24324:13;24283:16;24393:4;24381:17;;24346:70;:::i;:::-;24432:20;;23962:496;-1:-1:-1;;;;23962:496:167:o;24463:125::-;24528:9;;;24549:10;;;24546:36;;;24562:18;;:::i;25388:1352::-;25514:3;25508:10;-1:-1:-1;;;;;25533:6:167;25530:30;25527:56;;;25563:18;;:::i;:::-;25592:97;25682:6;25642:38;25674:4;25668:11;25642:38;:::i;:::-;25636:4;25592:97;:::i;:::-;25744:4;;25808:2;25797:14;;25825:1;25820:663;;;;26527:1;26544:6;26541:89;;;-1:-1:-1;26596:19:167;;;26590:26;26541:89;-1:-1:-1;;20861:1:167;20857:11;;;20853:24;20849:29;20839:40;20885:1;20881:11;;;20836:57;26643:81;;25790:944;;25820:663;20130:1;20123:14;;;20167:4;20154:18;;-1:-1:-1;;25856:20:167;;;25974:236;25988:7;25985:1;25982:14;25974:236;;;26077:19;;;26071:26;26056:42;;26169:27;;;;26137:1;26125:14;;;;26004:19;;25974:236;;;25978:3;26238:6;26229:7;26226:19;26223:201;;;26299:19;;;26293:26;-1:-1:-1;;26382:1:167;26378:14;;;26394:3;26374:24;26370:37;26366:42;26351:58;26336:74;;26223:201;-1:-1:-1;;;;;26470:1:167;26454:14;;;26450:22;26437:36;;-1:-1:-1;25388:1352:167:o;27458:407::-;27660:2;27642:21;;;27699:2;27679:18;;;27672:30;27738:34;27733:2;27718:18;;27711:62;-1:-1:-1;;;27804:2:167;27789:18;;27782:41;27855:3;27840:19;;27458:407::o;27870:148::-;27958:4;27937:12;;;27951;;;27933:31;;27976:13;;27973:39;;;27992:18;;:::i;28023:414::-;28225:2;28207:21;;;28264:2;28244:18;;;28237:30;28303:34;28298:2;28283:18;;28276:62;-1:-1:-1;;;28369:2:167;28354:18;;28347:48;28427:3;28412:19;;28023:414::o;28442:127::-;28503:10;28498:3;28494:20;28491:1;28484:31;28534:4;28531:1;28524:15;28558:4;28555:1;28548:15;28574:120;28614:1;28640;28630:35;;28645:18;;:::i;:::-;-1:-1:-1;28679:9:167;;28574:120::o;28699:112::-;28731:1;28757;28747:35;;28762:18;;:::i;:::-;-1:-1:-1;28796:9:167;;28699:112::o;29534:489::-;-1:-1:-1;;;;;29803:15:167;;;29785:34;;29855:15;;29850:2;29835:18;;29828:43;29902:2;29887:18;;29880:34;;;29950:3;29945:2;29930:18;;29923:31;;;29728:4;;29971:46;;29997:19;;29989:6;29971:46;:::i;:::-;29963:54;29534:489;-1:-1:-1;;;;;;29534:489:167:o;30028:249::-;30097:6;30150:2;30138:9;30129:7;30125:23;30121:32;30118:52;;;30166:1;30163;30156:12;30118:52;30198:9;30192:16;30217:30;30241:5;30217:30;:::i", + "sourceMap": "600:11296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1987:344:89;;;;;;:::i;:::-;;:::i;:::-;;;565:14:134;;558:22;540:41;;528:2;513:18;1987:344:89;;;;;;;;2931:98;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:134;;;1679:51;;1667:2;1652:18;4407:167:89;1533:203:134;3928:418:89;;;;;;:::i;:::-;;:::i;:::-;;6706:331:0;;;;;;:::i;:::-;;:::i;5084:327:89:-;;;;;;:::i;:::-;;:::i;7248:251:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7905:902::-;;;;;;:::i;:::-;;:::i;5477:179:89:-;;;;;;:::i;:::-;;:::i;10304:108:0:-;;;:::i;:::-;;;4455:25:134;;;4443:2;4428:18;10304:108:0;4309:177:134;10144:154:0;;;;;;:::i;:::-;;:::i;5539:528::-;;;;;;:::i;:::-;;:::i;1293:144:84:-;;;;;;:::i;:::-;1377:4;1413:17;-1:-1:-1;;;;;1400:30:84;;;1413:17;;1400:30;;1293:144;2421:1425:0;;;;;;:::i;:::-;;:::i;2651:218:89:-;;;;;;:::i;:::-;;:::i;1230:61:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1230:61:0;;;2390:204:89;;;;;;:::i;:::-;;:::i;1660:277:0:-;;;;;;:::i;:::-;;:::i;8946:135::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9049:25:0;9023:7;9049:25;;;:13;:25;;;;;;;8946:135;3093:102:89;;;:::i;7505:228:0:-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7676:38:0;;;;;:25;:38;;;;;:50;;;;;;;;;;;7669:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7505:228;;;;;;;7306:13:134;;-1:-1:-1;;;;;7302:39:134;7284:58;;7398:4;7386:17;;;7380:24;7358:20;;;7351:54;7461:4;7449:17;;;7443:24;7421:20;;;7414:54;7538:4;7526:17;;;7520:24;7513:32;7506:40;7484:20;;;7477:70;;;;7271:3;7256:19;;7083:470;4641:153:89;;;;;;:::i;:::-;;:::i;4255:1278:0:-;;;;;;:::i;:::-;;:::i;5722:315:89:-;;;;;;:::i;:::-;;:::i;1298:159:0:-;;;;;;:::i;:::-;;:::i;747:608:92:-;;;;;;:::i;:::-;;:::i;1018:119:84:-;1078:17;1113;-1:-1:-1;;;;;1113:17:84;1018:119;;9087:405:0;;;;;;:::i;:::-;;:::i;4860:162:89:-;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:89;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;6073:627:0;;;;;;:::i;:::-;;:::i;1095:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1095:47:0;;;1165:59;;;;;;:::i;:::-;;:::i;9638:500::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1987:344:89:-;2111:4;-1:-1:-1;;;;;;2146:51:89;;-1:-1:-1;;;2146:51:89;;:126;;-1:-1:-1;;;;;;;2213:59:89;;-1:-1:-1;;;2213:59:89;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:97;;;2288:36:89;2127:197;1987:344;-1:-1:-1;;1987:344:89:o;2931:98::-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:89;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:89;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:89;:2;-1:-1:-1;;;;;4076:11:89;;4068:57;;;;-1:-1:-1;;;4068:57:89;;11715:2:134;4068:57:89;;;11697:21:134;11754:2;11734:18;;;11727:30;11793:34;11773:18;;;11766:62;-1:-1:-1;;;11844:18:134;;;11837:31;11885:19;;4068:57:89;;;;;;;;;4173:5;-1:-1:-1;;;;;4157:21:89;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4157:21:89;;:62;;;;4182:37;4199:5;4206:12;:10;:12::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:89;;12117:2:134;4136:171:89;;;12099:21:134;12156:2;12136:18;;;12129:30;12195:34;12175:18;;;12168:62;12266:32;12246:18;;;12239:60;12316:19;;4136:171:89;11915:426:134;4136:171:89;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;6706:331:0:-;6793:23;6803:12;:10;:12::i;6793:23::-;6820:1;6793:28;6785:94;;;;-1:-1:-1;;;6785:94:0;;;;;;;:::i;:::-;6889:15;6907:13;:27;6921:12;:10;:12::i;:::-;-1:-1:-1;;;;;6907:27:0;-1:-1:-1;;;;;6907:27:0;;;;;;;;;;;;;6889:45;;6944:34;6957:7;6966:11;;6944:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6944:12:0;;-1:-1:-1;;;6944:34:0:i;:::-;6994:36;7009:7;7018:11;;6994:36;;;;;;;;:::i;:::-;;;;;;;;6775:262;6706:331;;:::o;5084:327:89:-;5273:41;5292:12;:10;:12::i;:::-;5306:7;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:89;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;7248:251:0:-;7324:21;7365:22;7375:11;7365:9;:22::i;:::-;7391:1;7365:27;7357:93;;;;-1:-1:-1;;;7357:93:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7467:25:0;;;;;;:12;:25;;;;;;;;;7460:32;;;;;;;;;;;;;;;;;7467:25;;7460:32;;7467:25;7460:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7460:32:0;;;;;;;;;;;;;;;;;;;;;;;7248:251;;;:::o;7905:902::-;7970:24;8006:9;8025:11;8062:5;-1:-1:-1;;;;;8056:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8056:28:0;;;;;;;;;;;;:::i;:::-;8046:38;;8094:24;8135:7;:14;-1:-1:-1;;;;;8121:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8121:29:0;;8094:56;;8161:271;8173:7;:14;8169:1;:18;8161:271;;;8208:25;:37;8234:7;8242:1;8234:10;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;8208:37:0;;;;;;;;;;;;;;;;-1:-1:-1;8208:37:0;;;:44;;;;;;;;;;:53;;;;;8204:159;;;8294:7;8302:1;8294:10;;;;;;;;:::i;:::-;;;;;;;8281:7;8289:1;8281:10;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;8281:23:0;;;-1:-1:-1;;;;;8281:23:0;;;;;8204:159;;;8343:5;;;:::i;:::-;;;8204:159;8404:3;;;;;8161:271;;;8445:1;8441:5;;8497:3;8480:7;:14;:20;;;;:::i;:::-;-1:-1:-1;;;;;8466:35:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8466:35:0;;8456:45;;8517:1;8511:7;;8528:273;8540:7;:14;8536:1;:18;8528:273;;;8597:1;-1:-1:-1;;;;;8575:24:0;:7;8583:1;8575:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8575:24:0;;8571:161;;8634:7;8642:1;8634:10;;;;;;;;:::i;:::-;;;;;;;8619:7;8627:3;8619:12;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;8619:25:0;;;-1:-1:-1;;;;;8619:25:0;;;;;8694:5;;;;;8571:161;8773:3;;;;;8528:273;;;7996:811;;;7905:902;;;:::o;5477:179:89:-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;10304:108:0:-;10360:7;10386:19;:9;918:14:115;;827:112;10386:19:0;10379:26;;10304:108;:::o;10144:154::-;10232:7;10258:13;10272:18;10281:8;10272;:18::i;:::-;10258:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;10258:33:0;;10144:154;-1:-1:-1;;10144:154:0:o;5539:528::-;5613:25;:39;5639:12;:10;:12::i;:::-;-1:-1:-1;;;;;5613:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5613:39:0;;;:51;;;;;;;;;:60;;;;;5605:92;;;;-1:-1:-1;;;5605:92:0;;15643:2:134;5605:92:0;;;15625:21:134;15682:2;15662:18;;;15655:30;-1:-1:-1;;;15701:18:134;;;15694:49;15760:18;;5605:92:0;15441:343:134;5605:92:0;5770:5;5707:25;:39;5733:12;:10;:12::i;:::-;-1:-1:-1;;;;;5707:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5707:39:0;;;:51;;;;;;;;;:60;;:68;;-1:-1:-1;;5707:68:0;;;;;;;;;;;5785:25;-1:-1:-1;5811:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;5785:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5785:39:0;;;:51;;;;;;;;;:62;;:66;6022:38;5825:10;6047:12;:10;:12::i;:::-;6022:38;;;-1:-1:-1;;;;;16019:15:134;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;6022:38:0;;;;;;;5539:528;:::o;2421:1425::-;2613:2;2594:8;2588:22;:27;2580:74;;;;-1:-1:-1;;;2580:74:0;;16300:2:134;2580:74:0;;;16282:21:134;16339:2;16319:18;;;16312:30;16378:34;16358:18;;;16351:62;-1:-1:-1;;;16429:18:134;;;16422:32;16471:19;;2580:74:0;16098:398:134;2580:74:0;2679:1;2672:4;:8;:20;;;;;2691:1;2684:4;:8;2672:20;2664:61;;;;-1:-1:-1;;;2664:61:0;;16703:2:134;2664:61:0;;;16685:21:134;16742:2;16722:18;;;16715:30;16781;16761:18;;;16754:58;16829:18;;2664:61:0;16501:352:134;2664:61:0;2756:1;2743:10;:14;:33;;;;;2774:2;2761:10;:15;2743:33;2735:90;;;;-1:-1:-1;;;2735:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2843:24:0;;2835:55;;;;-1:-1:-1;;;2835:55:0;;17473:2:134;2835:55:0;;;17455:21:134;17512:2;17492:18;;;17485:30;-1:-1:-1;;;17531:18:134;;;17524:48;17589:18;;2835:55:0;17271:342:134;2835:55:0;2908:23;2918:12;:10;:12::i;2908:23::-;:28;2900:99;;;;-1:-1:-1;;;2900:99:0;;17820:2:134;2900:99:0;;;17802:21:134;17859:2;17839:18;;;17832:30;17898:34;17878:18;;;17871:62;17969:28;17949:18;;;17942:56;18015:19;;2900:99:0;17618:422:134;2900:99:0;3052:1;-1:-1:-1;;;;;3017:37:0;:13;3031:8;3017:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:23:0;:37;3009:80;;;;-1:-1:-1;;;3009:80:0;;18247:2:134;3009:80:0;;;18229:21:134;18286:2;18266:18;;;18259:30;18325:32;18305:18;;;18298:60;18375:18;;3009:80:0;18045:354:134;3009:80:0;3124:10;-1:-1:-1;;;;;3108:35:0;;3144:12;:10;:12::i;:::-;3108:55;;-1:-1:-1;;;;;;3108:55:0;;;;;;;-1:-1:-1;;;;;18596:32:134;;;3108:55:0;;;18578:51:134;18645:18;;;18638:34;;;18551:18;;3108:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3100:100;;;;-1:-1:-1;;;3100:100:0;;19135:2:134;3100:100:0;;;19117:21:134;;;19154:18;;;19147:30;19213:34;19193:18;;;19186:62;19265:18;;3100:100:0;18933:356:134;3100:100:0;3211:23;3237:18;3246:8;3237;:18::i;:::-;3211:44;;3265:15;3283:19;:9;918:14:115;;827:112;3283:19:0;3265:37;;3313:32;3323:12;:10;:12::i;:::-;3337:7;3313:9;:32::i;:::-;3355:26;3368:7;3377:3;3355:12;:26::i;:::-;3446:45;;;;;;;;-1:-1:-1;;;;;3446:45:0;;;;;;;;;;;;;;;;3486:4;3446:45;;;;3392:25;-1:-1:-1;3418:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;3392:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;3392:39:0;;;:51;;;;;;;;;;:99;;;;-1:-1:-1;;;;;;3392:99:0;;;;;;;;;;;;;-1:-1:-1;3392:99:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3392:99:0;;;;;;;;;;;3501:12;;3514;:10;:12::i;:::-;-1:-1:-1;;;;;3501:26:0;;;;;;;;;;;;;;;;;-1:-1:-1;3501:26:0;;;:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3501:43:0;;;;;;;;;;3585:7;;3555:13;;3569:12;:10;:12::i;:::-;-1:-1:-1;;;;;3555:27:0;;;;;;;;;;;;-1:-1:-1;3555:27:0;:37;3629:12;:10;:12::i;:::-;3602:13;3616:9;3602:24;;;;;;:::i;:::-;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;3602:39:0;;;;-1:-1:-1;;;;;;3602:39:0;;;;;;;;;3651:21;:9;1032:19:115;;1050:1;1032:19;;;945:123;3651:21:0;3702:10;-1:-1:-1;;;;;3683:35:0;;3719:12;:10;:12::i;:::-;3683:55;;-1:-1:-1;;;;;;3683:55:0;;;;;;;-1:-1:-1;;;;;18596:32:134;;;3683:55:0;;;18578:51:134;18645:18;;;18638:34;;;18551:18;;3683:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3754:35;3767:12;:10;:12::i;:::-;3754:35;;;-1:-1:-1;;;;;18596:32:134;;;18578:51;;18660:2;18645:18;;18638:34;;;18551:18;3754:35:0;;;;;;;3804;3814:10;3826:12;:10;:12::i;:::-;3804:35;;;-1:-1:-1;;;;;16019:15:134;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;3804:35:0;;;;;;;2570:1276;;2421:1425;;;;;:::o;2651:218:89:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:89;;2784:56;;;;-1:-1:-1;;;2784:56:89;;19496:2:134;2784:56:89;;;19478:21:134;19535:2;19515:18;;;19508:30;-1:-1:-1;;;19554:18:134;;;19547:54;19618:18;;2784:56:89;19294:348:134;2390:204:89;2462:7;-1:-1:-1;;;;;2489:19:89;;2481:73;;;;-1:-1:-1;;;2481:73:89;;19849:2:134;2481:73:89;;;19831:21:134;19888:2;19868:18;;;19861:30;19927:34;19907:18;;;19900:62;-1:-1:-1;;;19978:18:134;;;19971:39;20027:19;;2481:73:89;19647:405:134;2481:73:89;-1:-1:-1;;;;;;2571:16:89;;;;;:9;:16;;;;;;;2390:204::o;1660:277:0:-;1744:13;1760;:27;1774:12;:10;:12::i;:::-;-1:-1:-1;;;;;1760:27:0;;;;;;;;;;;;;;;-1:-1:-1;1760:27:0;;;;1798:23;;;:16;:23;;;;1760:27;;-1:-1:-1;1798:35:0;1824:9;;1798:23;:35;:::i;:::-;;1875:12;:10;:12::i;:::-;1843:18;1862:9;;1843:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;:44;;-1:-1:-1;;;;;1843:44:0;;;;-1:-1:-1;;;;;;1843:44:0;;;;;;;;;;1903:27;;1843:29;;1903:27;1734:203;1660:277;;:::o;3093:102:89:-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;4754:12;:10;:12::i;:::-;4768:8;4778;4735:18;:52::i;:::-;4641:153;;:::o;4255:1278:0:-;4369:1;4362:4;:8;:20;;;;;4381:1;4374:4;:8;4362:20;4354:61;;;;-1:-1:-1;;;4354:61:0;;16703:2:134;4354:61:0;;;16685:21:134;16742:2;16722:18;;;16715:30;16781;16761:18;;;16754:58;16829:18;;4354:61:0;16501:352:134;4354:61:0;4518:1;4505:10;:14;:33;;;;;4536:2;4523:10;:15;4505:33;4497:90;;;;-1:-1:-1;;;4497:90:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4605:24:0;;4597:55;;;;-1:-1:-1;;;4597:55:0;;17473:2:134;4597:55:0;;;17455:21:134;17512:2;17492:18;;;17485:30;-1:-1:-1;;;17531:18:134;;;17524:48;17589:18;;4597:55:0;17271:342:134;4597:55:0;4670:23;4680:12;:10;:12::i;4670:23::-;4697:1;4670:28;4662:94;;;;-1:-1:-1;;;4662:94:0;;;;;;;:::i;:::-;4767:28;4798:12;:26;4811:12;:10;:12::i;:::-;-1:-1:-1;;;;;4798:26:0;-1:-1:-1;;;;;4798:26:0;;;;;;;;;;;;4767:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4767:57:0;;;;;;;;;;;;;;;;;;;;;;;4839:13;4834:154;4866:11;:18;4858:5;:26;4834:154;;;4939:10;-1:-1:-1;;;;;4917:32:0;:11;4929:5;4917:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4917:32:0;;4909:68;;;;-1:-1:-1;;;4909:68:0;;22595:2:134;4909:68:0;;;22577:21:134;22634:2;22614:18;;;22607:30;22673:25;22653:18;;;22646:53;22716:18;;4909:68:0;22393:347:134;4909:68:0;4886:7;;;;:::i;:::-;;;;4834:154;;;;5049:10;-1:-1:-1;;;;;5033:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5019:10;:57;;4998:137;;;;-1:-1:-1;;;4998:137:0;;;;;;;:::i;:::-;5170:10;-1:-1:-1;;;;;5154:35:0;;5190:12;:10;:12::i;:::-;5154:55;;-1:-1:-1;;;;;;5154:55:0;;;;;;;-1:-1:-1;;;;;18596:32:134;;;5154:55:0;;;18578:51:134;18645:18;;;18638:34;;;18551:18;;5154:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:100;;;;-1:-1:-1;;;5146:100:0;;19135:2:134;5146:100:0;;;19117:21:134;;;19154:18;;;19147:30;19213:34;19193:18;;;19186:62;19265:18;;5146:100:0;18933:356:134;5146:100:0;5311:45;;;;;;;;-1:-1:-1;;;;;5311:45:0;;;;;;;;;;;;;;;;5351:4;5311:45;;;;5257:25;-1:-1:-1;5283:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;5257:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;5257:39:0;;;:51;;;;;;;;;;:99;;;;-1:-1:-1;;;;;;5257:99:0;;;;;;;;;;;;;-1:-1:-1;5257:99:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5257:99:0;;;;;;;;;;;5366:12;;5379;:10;:12::i;:::-;-1:-1:-1;;;;;5366:26:0;;;;;;;;;;;;;;;;;-1:-1:-1;5366:26:0;;;:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5366:43:0;;;;;;;;;5420:35;5456:12;:10;:12::i;:::-;5420:55;;-1:-1:-1;;;;;;5420:55:0;;;;;;;-1:-1:-1;;;;;18596:32:134;;;5420:55:0;;;18578:51:134;18645:18;;;18638:34;;;18551:18;;5420:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5491:35;5501:10;5513:12;:10;:12::i;:::-;5491:35;;;-1:-1:-1;;;;;16019:15:134;;;16001:34;;16071:15;;;;16066:2;16051:18;;16044:43;15936:18;5491:35:0;;;;;;;4344:1189;4255:1278;;;:::o;5722:315:89:-;5890:41;5909:12;:10;:12::i;:::-;5923:7;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:89;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;1298:159:0:-;3111:19:88;3134:13;-1:-1:-1;;;3134:13:88;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:88;;3212:1;-1:-1:-1;;;3197:12:88;;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:88;1476:19:94;:23;;;3219:66:88;;-1:-1:-1;3268:12:88;;-1:-1:-1;;;3268:12:88;;;;3284:1;3268:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:88;;23550:2:134;3157:201:88;;;23532:21:134;23589:2;23569:18;;;23562:30;23628:34;23608:18;;;23601:62;-1:-1:-1;;;23679:18:134;;;23672:44;23733:19;;3157:201:88;23348:410:134;3157:201:88;3368:12;:16;;-1:-1:-1;;;;3368:16:88;-1:-1:-1;;;3368:16:88;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;;;3428:20:88;-1:-1:-1;;;3428:20:88;;;3394:65;1373:29:0::1;;;;;;;;;;;;;;-1:-1:-1::0;;;1373:29:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1373:29:0::1;;::::0;:13:::1;:29::i;:::-;1212:17:84::0;:30;;-1:-1:-1;;;;;;1212:30:84;-1:-1:-1;;;;;1212:30:84;;;;;3483:14:88;3479:99;;;3529:5;3513:21;;-1:-1:-1;;;;3513:21:88;;;3553:14;;-1:-1:-1;23915:36:134;;3553:14:88;;23903:2:134;23888:18;3553:14:88;;;;;;;;3101:483;1298:159:0;:::o;747:608:92:-;820:13;845:23;860:7;845:14;:23::i;:::-;879;905:19;;;:10;:19;;;;;879:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;934:18;955:10;3855:9:89;;;;;;;;;-1:-1:-1;3855:9:89;;;3779:92;955:10:92;934:31;;1044:4;1038:18;1060:1;1038:23;1034:70;;-1:-1:-1;1084:9:92;747:608;-1:-1:-1;;747:608:92:o;1034:70::-;1206:23;;:27;1202:106;;1280:4;1286:9;1263:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1249:48;;;;747:608;;;:::o;1202:106::-;1325:23;1340:7;1325:14;:23::i;:::-;1318:30;747:608;-1:-1:-1;;;;747:608:92:o;9087:405:0:-;-1:-1:-1;;;;;9213:25:0;;9166:7;9213:25;;;:12;:25;;;;;;;;9185:53;;;;;;;;;;;;;;;;;9166:7;;9185:53;;9213:25;9185:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9185:53:0;;;;;;;;;;;;;;;;;;;;;;;9249:23;9291:13;9286:168;9318:8;:15;9310:5;:23;9286:168;;;-1:-1:-1;;;;;9377:38:0;;;;;;:25;:38;;;;;9416:15;;9377:38;;;9416:8;;9425:5;;9416:15;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9377:55:0;-1:-1:-1;;;;;9377:55:0;;;;;;;;;;;;:66;;;9358:85;;;;;:::i;:::-;;-1:-1:-1;9335:7:0;;;;:::i;:::-;;;;9286:168;;;-1:-1:-1;9470:15:0;9087:405;-1:-1:-1;;;9087:405:0:o;6073:627::-;6176:25;:39;6202:12;:10;:12::i;:::-;-1:-1:-1;;;;;6176:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;6176:39:0;;;:51;;;;;;;;;:60;;;;;6168:92;;;;-1:-1:-1;;;6168:92:0;;15643:2:134;6168:92:0;;;15625:21:134;15682:2;15662:18;;;15655:30;-1:-1:-1;;;15701:18:134;;;15694:49;15760:18;;6168:92:0;15441:343:134;6168:92:0;6295:1;6279:13;:17;:39;;;;;6316:2;6300:13;:18;6279:39;6271:96;;;;-1:-1:-1;;;6271:96:0;;;;;;;:::i;:::-;6432:10;-1:-1:-1;;;;;6416:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6399:13;:60;;6378:152;;;;-1:-1:-1;;;6378:152:0;;;;;;;:::i;:::-;6606:13;6541:25;:39;6567:12;:10;:12::i;:::-;-1:-1:-1;;;;;6541:39:0;;;;;;;;;;;;;;;;;-1:-1:-1;6541:39:0;;;:51;;;;;;;;;:62;;:78;6635:58;6581:10;6665:12;:10;:12::i;:::-;6635:58;;;-1:-1:-1;;;;;24851:15:134;;;24833:34;;24903:15;;;;24898:2;24883:18;;24876:43;24935:18;;24928:34;;;24783:2;24768:18;6635:58:0;24593:375:134;1165:59:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9638:500::-;9753:28;9797:9;9820:6;:13;9837:1;9820:18;9816:70;;9865:4;-1:-1:-1;;;;;9849:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9849:37:0;;;;;;;;;;;;:::i;:::-;9840:46;;9816:70;9925:6;:13;-1:-1:-1;;;;;9911:28:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9911:28:0;;9897:42;;9950:182;9962:6;:13;9958:1;:17;9950:182;;;10009:25;:36;10035:6;10042:1;10035:9;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10009:36:0;-1:-1:-1;;;;;10009:36:0;;;;;;;;;;;;:42;10046:4;-1:-1:-1;;;;;10009:42:0;-1:-1:-1;;;;;10009:42:0;;;;;;;;;;;;:53;;;9992:11;10004:1;9992:14;;;;;;;;:::i;:::-;;;;;;;;;;:70;10104:3;;9950:182;;;9787:351;9638:500;;;;:::o;12173:133:89:-;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:89;12246:53;;;;-1:-1:-1;;;12246:53:89;;19496:2:134;12246:53:89;;;19478:21:134;19535:2;19515:18;;;19508:30;-1:-1:-1;;;19554:18:134;;;19547:54;19618:18;;12246:53:89;19294:348:134;12246:53:89;12173:133;:::o;11054:154:0:-;11146:7;11172:29;:27;:29::i;11464:182:89:-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:89;-1:-1:-1;;;;;11538:29:89;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:89;;;;;;;;;;;11464:182;;:::o;1502:214:92:-;7571:4:89;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:89;1593:75:92;;;;-1:-1:-1;;;1593:75:92;;25175:2:134;1593:75:92;;;25157:21:134;25214:2;25194:18;;;25187:30;25253:34;25233:18;;;25226:62;-1:-1:-1;;;25304:18:134;;;25297:44;25358:19;;1593:75:92;24973:410:134;1593:75:92;1678:19;;;;:10;:19;;;;;:31;1700:9;1678:19;:31;:::i;7789:272:89:-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:89;:7;-1:-1:-1;;;;;7966:16:89;;:52;;;-1:-1:-1;;;;;;4980:25:89;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7986:32;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:89;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:89;;7958:96;7789:272;-1:-1:-1;;;;7789:272:89:o;10579:145:0:-;10669:48;;-1:-1:-1;;;10669:48:0;;26947:2:134;10669:48:0;;;26929:21:134;26986:2;26966:18;;;26959:30;27025:32;27005:18;;;26998:60;27075:18;;10669:48:0;26745:354:134;11420:286:0;11482:13;11539:5;11507:23;11555:110;11579:10;:17;11575:1;:21;11555:110;;;11633:21;11640:10;11651:1;11640:13;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;11640:13:0;11633:6;:21::i;:::-;11617:10;11628:1;11617:13;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;11617:37:0;;;;;;;;-1:-1:-1;11598:3:0;;;;:::i;:::-;;;;11555:110;;8391:108:89;8466:26;8476:2;8480:7;8466:26;;;;;;;;;;;;:9;:26::i;11782:307::-;11932:8;-1:-1:-1;;;;;11923:17:89;:5;-1:-1:-1;;;;;11923:17:89;;11915:55;;;;-1:-1:-1;;;11915:55:89;;27306:2:134;11915:55:89;;;27288:21:134;27345:2;27325:18;;;27318:30;27384:27;27364:18;;;27357:55;27429:18;;11915:55:89;27104:349:134;11915:55:89;-1:-1:-1;;;;;11980:25:89;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:89;;;;;;;;;;12041:41;;540::134;;;12041::89;;513:18:134;12041:41:89;;;;;;;11782:307;;;:::o;1605:149::-;4910:13:88;;-1:-1:-1;;;4910:13:88;;;;4902:69;;;;-1:-1:-1;;;4902:69:88;;;;;;;:::i;:::-;1708:39:89::1;1732:5;1739:7;1708:23;:39::i;3261:276::-:0;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:89;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:89:o;1481:547:84:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:84;1413:17;-1:-1:-1;;;;;1413:17:84;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:84;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:84;1481:547;:::o;11712:182:0:-;11762:6;-1:-1:-1;;;;;;;;;11784:11:0;;;;;;:26;;-1:-1:-1;;;;;;;;;;11799:11:0;;;;11784:26;11780:87;;;11840:15;:10;;;;11853:2;11840:15;:::i;:::-;11833:23;;;11712:182;-1:-1:-1;;11712:182:0:o;11780:87::-;-1:-1:-1;11884:3:0;11712:182::o;8720:309:89:-;8844:18;8850:2;8854:7;8844:5;:18::i;:::-;8893:53;8924:1;8928:2;8932:7;8941:4;8893:22;:53::i;:::-;8872:150;;;;-1:-1:-1;;;8872:150:89;;;;;;;:::i;1760:160::-;4910:13:88;;-1:-1:-1;;;4910:13:88;;;;4902:69;;;;-1:-1:-1;;;4902:69:88;;;;;;;:::i;:::-;1873:5:89::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:89::1;:17;1906:7:::0;1896;:17:::1;:::i;403:703:96:-:0;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:96;;;;;;;;;;;;-1:-1:-1;;;702:10:96;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:96;;-1:-1:-1;848:2:96;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;-1:-1:-1;;;;;892:17:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:96;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:96;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:96;;;;;;;;-1:-1:-1;1047:11:96;1056:2;1047:11;;:::i;:::-;;;919:150;;9351:427:89;-1:-1:-1;;;;;9430:16:89;;9422:61;;;;-1:-1:-1;;;9422:61:89;;29018:2:134;9422:61:89;;;29000:21:134;;;29037:18;;;29030:30;29096:34;29076:18;;;29069:62;29148:18;;9422:61:89;28816:356:134;9422:61:89;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:89;:30;9493:58;;;;-1:-1:-1;;;9493:58:89;;29379:2:134;9493:58:89;;;29361:21:134;29418:2;29398:18;;;29391:30;29457;29437:18;;;29430:58;29505:18;;9493:58:89;29177:352:134;9493:58:89;-1:-1:-1;;;;;9618:13:89;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:89;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:89;-1:-1:-1;;;;;9646:21:89;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;4641:153;;:::o;12858:853::-;13007:4;-1:-1:-1;;;;;13027:13:89;;1476:19:94;:23;13023:682:89;;13089:2;-1:-1:-1;;;;;13062:47:89;;13110:12;:10;:12::i;:::-;13124:4;13130:7;13139:4;13062:82;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:89;;;;;;;;-1:-1:-1;;13062:82:89;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:89;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:89;-1:-1:-1;;;13194:62:89;;-1:-1:-1;13187:69:89;;13023:682;-1:-1:-1;13690:4:89;12858:853;;;;;;:::o;14:131:134:-;-1:-1:-1;;;;;;88:32:134;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:134;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:134;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:134:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:134;;1348:180;-1:-1:-1;1348:180:134:o;1741:131::-;-1:-1:-1;;;;;1816:31:134;;1806:42;;1796:70;;1862:1;1859;1852:12;1877:134;1945:20;;1974:31;1945:20;1974:31;:::i;:::-;1877:134;;;:::o;2016:315::-;2084:6;2092;2145:2;2133:9;2124:7;2120:23;2116:32;2113:52;;;2161:1;2158;2151:12;2113:52;2200:9;2187:23;2219:31;2244:5;2219:31;:::i;:::-;2269:5;2321:2;2306:18;;;;2293:32;;-1:-1:-1;;;2016:315:134:o;2336:592::-;2407:6;2415;2468:2;2456:9;2447:7;2443:23;2439:32;2436:52;;;2484:1;2481;2474:12;2436:52;2524:9;2511:23;-1:-1:-1;;;;;2594:2:134;2586:6;2583:14;2580:34;;;2610:1;2607;2600:12;2580:34;2648:6;2637:9;2633:22;2623:32;;2693:7;2686:4;2682:2;2678:13;2674:27;2664:55;;2715:1;2712;2705:12;2664:55;2755:2;2742:16;2781:2;2773:6;2770:14;2767:34;;;2797:1;2794;2787:12;2767:34;2842:7;2837:2;2828:6;2824:2;2820:15;2816:24;2813:37;2810:57;;;2863:1;2860;2853:12;2810:57;2894:2;2886:11;;;;;2916:6;;-1:-1:-1;2336:592:134;;-1:-1:-1;;;;2336:592:134:o;2933:456::-;3010:6;3018;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:52;;;3095:1;3092;3085:12;3047:52;3134:9;3121:23;3153:31;3178:5;3153:31;:::i;:::-;3203:5;-1:-1:-1;3260:2:134;3245:18;;3232:32;3273:33;3232:32;3273:33;:::i;:::-;2933:456;;3325:7;;-1:-1:-1;;;3379:2:134;3364:18;;;;3351:32;;2933:456::o;3394:247::-;3453:6;3506:2;3494:9;3485:7;3481:23;3477:32;3474:52;;;3522:1;3519;3512:12;3474:52;3561:9;3548:23;3580:31;3605:5;3580:31;:::i;3646:658::-;3817:2;3869:21;;;3939:13;;3842:18;;;3961:22;;;3788:4;;3817:2;4040:15;;;;4014:2;3999:18;;;3788:4;4083:195;4097:6;4094:1;4091:13;4083:195;;;4162:13;;-1:-1:-1;;;;;4158:39:134;4146:52;;4253:15;;;;4218:12;;;;4194:1;4112:9;4083:195;;;-1:-1:-1;4295:3:134;;3646:658;-1:-1:-1;;;;;;3646:658:134:o;4491:127::-;4552:10;4547:3;4543:20;4540:1;4533:31;4583:4;4580:1;4573:15;4607:4;4604:1;4597:15;4623:275;4694:2;4688:9;4759:2;4740:13;;-1:-1:-1;;4736:27:134;4724:40;;-1:-1:-1;;;;;4779:34:134;;4815:22;;;4776:62;4773:88;;;4841:18;;:::i;:::-;4877:2;4870:22;4623:275;;-1:-1:-1;4623:275:134:o;4903:407::-;4968:5;-1:-1:-1;;;;;4994:6:134;4991:30;4988:56;;;5024:18;;:::i;:::-;5062:57;5107:2;5086:15;;-1:-1:-1;;5082:29:134;5113:4;5078:40;5062:57;:::i;:::-;5053:66;;5142:6;5135:5;5128:21;5182:3;5173:6;5168:3;5164:16;5161:25;5158:45;;;5199:1;5196;5189:12;5158:45;5248:6;5243:3;5236:4;5229:5;5225:16;5212:43;5302:1;5295:4;5286:6;5279:5;5275:18;5271:29;5264:40;4903:407;;;;;:::o;5315:222::-;5358:5;5411:3;5404:4;5396:6;5392:17;5388:27;5378:55;;5429:1;5426;5419:12;5378:55;5451:80;5527:3;5518:6;5505:20;5498:4;5490:6;5486:17;5451:80;:::i;5542:322::-;5611:6;5664:2;5652:9;5643:7;5639:23;5635:32;5632:52;;;5680:1;5677;5670:12;5632:52;5720:9;5707:23;-1:-1:-1;;;;;5745:6:134;5742:30;5739:50;;;5785:1;5782;5775:12;5739:50;5808;5850:7;5841:6;5830:9;5826:22;5808:50;:::i;5869:816::-;5984:6;5992;6000;6008;6016;6069:3;6057:9;6048:7;6044:23;6040:33;6037:53;;;6086:1;6083;6076:12;6037:53;6126:9;6113:23;-1:-1:-1;;;;;6196:2:134;6188:6;6185:14;6182:34;;;6212:1;6209;6202:12;6182:34;6235:50;6277:7;6268:6;6257:9;6253:22;6235:50;:::i;:::-;6225:60;;6338:2;6327:9;6323:18;6310:32;6294:48;;6367:2;6357:8;6354:16;6351:36;;;6383:1;6380;6373:12;6351:36;;6406:52;6450:7;6439:8;6428:9;6424:24;6406:52;:::i;:::-;6396:62;;;6505:2;6494:9;6490:18;6477:32;6467:42;;6556:2;6545:9;6541:18;6528:32;6518:42;;6610:3;6599:9;6595:19;6582:33;6624:31;6649:5;6624:31;:::i;:::-;6674:5;6664:15;;;5869:816;;;;;;;;:::o;6690:388::-;6758:6;6766;6819:2;6807:9;6798:7;6794:23;6790:32;6787:52;;;6835:1;6832;6825:12;6787:52;6874:9;6861:23;6893:31;6918:5;6893:31;:::i;:::-;6943:5;-1:-1:-1;7000:2:134;6985:18;;6972:32;7013:33;6972:32;7013:33;:::i;:::-;7065:7;7055:17;;;6690:388;;;;;:::o;7558:118::-;7644:5;7637:13;7630:21;7623:5;7620:32;7610:60;;7666:1;7663;7656:12;7681:382;7746:6;7754;7807:2;7795:9;7786:7;7782:23;7778:32;7775:52;;;7823:1;7820;7813:12;7775:52;7862:9;7849:23;7881:31;7906:5;7881:31;:::i;:::-;7931:5;-1:-1:-1;7988:2:134;7973:18;;7960:32;8001:30;7960:32;8001:30;:::i;8068:383::-;8145:6;8153;8161;8214:2;8202:9;8193:7;8189:23;8185:32;8182:52;;;8230:1;8227;8220:12;8182:52;8266:9;8253:23;8243:33;;8323:2;8312:9;8308:18;8295:32;8285:42;;8377:2;8366:9;8362:18;8349:32;8390:31;8415:5;8390:31;:::i;:::-;8440:5;8430:15;;;8068:383;;;;;:::o;8456:795::-;8551:6;8559;8567;8575;8628:3;8616:9;8607:7;8603:23;8599:33;8596:53;;;8645:1;8642;8635:12;8596:53;8684:9;8671:23;8703:31;8728:5;8703:31;:::i;:::-;8753:5;-1:-1:-1;8810:2:134;8795:18;;8782:32;8823:33;8782:32;8823:33;:::i;:::-;8875:7;-1:-1:-1;8929:2:134;8914:18;;8901:32;;-1:-1:-1;8984:2:134;8969:18;;8956:32;-1:-1:-1;;;;;9000:30:134;;8997:50;;;9043:1;9040;9033:12;8997:50;9066:22;;9119:4;9111:13;;9107:27;-1:-1:-1;9097:55:134;;9148:1;9145;9138:12;9097:55;9171:74;9237:7;9232:2;9219:16;9214:2;9210;9206:11;9171:74;:::i;:::-;9161:84;;;8456:795;;;;;;;:::o;9256:183::-;9316:4;-1:-1:-1;;;;;9341:6:134;9338:30;9335:56;;;9371:18;;:::i;:::-;-1:-1:-1;9416:1:134;9412:14;9428:4;9408:25;;9256:183::o;9444:1042::-;9537:6;9545;9598:2;9586:9;9577:7;9573:23;9569:32;9566:52;;;9614:1;9611;9604:12;9566:52;9654:9;9641:23;-1:-1:-1;;;;;9679:6:134;9676:30;9673:50;;;9719:1;9716;9709:12;9673:50;9742:22;;9795:4;9787:13;;9783:27;-1:-1:-1;9773:55:134;;9824:1;9821;9814:12;9773:55;9860:2;9847:16;9882:4;9906:60;9922:43;9962:2;9922:43;:::i;:::-;9906:60;:::i;:::-;10000:15;;;10082:1;10078:10;;;;10070:19;;10066:28;;;10031:12;;;;10106:19;;;10103:39;;;10138:1;10135;10128:12;10103:39;10162:11;;;;10182:217;10198:6;10193:3;10190:15;10182:217;;;10278:3;10265:17;10295:31;10320:5;10295:31;:::i;:::-;10339:18;;10215:12;;;;10377;;;;10182:217;;;10418:5;-1:-1:-1;10442:38:134;;-1:-1:-1;10461:18:134;;;10442:38;:::i;:::-;10432:48;;;;;9444:1042;;;;;:::o;10491:632::-;10662:2;10714:21;;;10784:13;;10687:18;;;10806:22;;;10633:4;;10662:2;10885:15;;;;10859:2;10844:18;;;10633:4;10928:169;10942:6;10939:1;10936:13;10928:169;;;11003:13;;10991:26;;11072:15;;;;11037:12;;;;10964:1;10957:9;10928:169;;11128:380;11207:1;11203:12;;;;11250;;;11271:61;;11325:4;11317:6;11313:17;11303:27;;11271:61;11378:2;11370:6;11367:14;11347:18;11344:38;11341:161;;11424:10;11419:3;11415:20;11412:1;11405:31;11459:4;11456:1;11449:15;11487:4;11484:1;11477:15;11341:161;;11128:380;;;:::o;12346:417::-;12548:2;12530:21;;;12587:2;12567:18;;;12560:30;12626:34;12621:2;12606:18;;12599:62;-1:-1:-1;;;12692:2:134;12677:18;;12670:51;12753:3;12738:19;;12346:417::o;12768:461::-;12955:6;12944:9;12937:25;12998:2;12993;12982:9;12978:18;12971:30;13037:6;13032:2;13021:9;13017:18;13010:34;13094:6;13086;13081:2;13070:9;13066:18;13053:48;13150:1;13121:22;;;13145:2;13117:31;;;13110:42;;;;13213:2;13192:15;;;-1:-1:-1;;13188:29:134;13173:45;13169:54;;12768:461;-1:-1:-1;;12768:461:134:o;13234:410::-;13436:2;13418:21;;;13475:2;13455:18;;;13448:30;13514:34;13509:2;13494:18;;13487:62;-1:-1:-1;;;13580:2:134;13565:18;;13558:44;13634:3;13619:19;;13234:410::o;13649:956::-;13744:6;13775:2;13818;13806:9;13797:7;13793:23;13789:32;13786:52;;;13834:1;13831;13824:12;13786:52;13867:9;13861:16;-1:-1:-1;;;;;13892:6:134;13889:30;13886:50;;;13932:1;13929;13922:12;13886:50;13955:22;;14008:4;14000:13;;13996:27;-1:-1:-1;13986:55:134;;14037:1;14034;14027:12;13986:55;14066:2;14060:9;14089:60;14105:43;14145:2;14105:43;:::i;14089:60::-;14183:15;;;14265:1;14261:10;;;;14253:19;;14249:28;;;14214:12;;;;14289:19;;;14286:39;;;14321:1;14318;14311:12;14286:39;14345:11;;;;14365:210;14381:6;14376:3;14373:15;14365:210;;;14454:3;14448:10;14471:31;14496:5;14471:31;:::i;:::-;14515:18;;14398:12;;;;14553;;;;14365:210;;;14594:5;13649:956;-1:-1:-1;;;;;;;13649:956:134:o;14610:127::-;14671:10;14666:3;14662:20;14659:1;14652:31;14702:4;14699:1;14692:15;14726:4;14723:1;14716:15;14742:127;14803:10;14798:3;14794:20;14791:1;14784:31;14834:4;14831:1;14824:15;14858:4;14855:1;14848:15;14874:135;14913:3;14934:17;;;14931:43;;14954:18;;:::i;:::-;-1:-1:-1;15001:1:134;14990:13;;14874:135::o;15014:128::-;15081:9;;;15102:11;;;15099:37;;;15116:18;;:::i;15147:289::-;15278:3;15316:6;15310:13;15332:66;15391:6;15386:3;15379:4;15371:6;15367:17;15332:66;:::i;:::-;15414:16;;;;;15147:289;-1:-1:-1;;15147:289:134:o;16858:408::-;17060:2;17042:21;;;17099:2;17079:18;;;17072:30;17138:34;17133:2;17118:18;;17111:62;-1:-1:-1;;;17204:2:134;17189:18;;17182:42;17256:3;17241:19;;16858:408::o;18683:245::-;18750:6;18803:2;18791:9;18782:7;18778:23;18774:32;18771:52;;;18819:1;18816;18809:12;18771:52;18851:9;18845:16;18870:28;18892:5;18870:28;:::i;20183:545::-;20285:2;20280:3;20277:11;20274:448;;;20321:1;20346:5;20342:2;20335:17;20391:4;20387:2;20377:19;20461:2;20449:10;20445:19;20442:1;20438:27;20432:4;20428:38;20497:4;20485:10;20482:20;20479:47;;;-1:-1:-1;20520:4:134;20479:47;20575:2;20570:3;20566:12;20563:1;20559:20;20553:4;20549:31;20539:41;;20630:82;20648:2;20641:5;20638:13;20630:82;;;20693:17;;;20674:1;20663:13;20630:82;;;20634:3;;;20183:545;;;:::o;20904:1206::-;-1:-1:-1;;;;;21023:3:134;21020:27;21017:53;;;21050:18;;:::i;:::-;21079:94;21169:3;21129:38;21161:4;21155:11;21129:38;:::i;:::-;21123:4;21079:94;:::i;:::-;21199:1;21224:2;21219:3;21216:11;21241:1;21236:616;;;;21896:1;21913:3;21910:93;;;-1:-1:-1;21969:19:134;;;21956:33;21910:93;-1:-1:-1;;20861:1:134;20857:11;;;20853:24;20849:29;20839:40;20885:1;20881:11;;;20836:57;22016:78;;21209:895;;21236:616;20130:1;20123:14;;;20167:4;20154:18;;-1:-1:-1;;21272:17:134;;;21373:9;21395:229;21409:7;21406:1;21403:14;21395:229;;;21498:19;;;21485:33;21470:49;;21605:4;21590:20;;;;21558:1;21546:14;;;;21425:12;21395:229;;;21399:3;21652;21643:7;21640:16;21637:159;;;21776:1;21772:6;21766:3;21760;21757:1;21753:11;21749:21;21745:34;21741:39;21728:9;21723:3;21719:19;21706:33;21702:79;21694:6;21687:95;21637:159;;;21839:1;21833:3;21830:1;21826:11;21822:19;21816:4;21809:33;21209:895;;;20904:1206;;;:::o;22115:273::-;22300:6;22292;22287:3;22274:33;22256:3;22326:16;;22351:13;;;22326:16;22115:273;-1:-1:-1;22115:273:134:o;22745:184::-;22815:6;22868:2;22856:9;22847:7;22843:23;22839:32;22836:52;;;22884:1;22881;22874:12;22836:52;-1:-1:-1;22907:16:134;;22745:184;-1:-1:-1;22745:184:134:o;22934:409::-;23136:2;23118:21;;;23175:2;23155:18;;;23148:30;23214:34;23209:2;23194:18;;23187:62;-1:-1:-1;;;23280:2:134;23265:18;;23258:43;23333:3;23318:19;;22934:409::o;23962:496::-;24141:3;24179:6;24173:13;24195:66;24254:6;24249:3;24242:4;24234:6;24230:17;24195:66;:::i;:::-;24324:13;;24283:16;;;;24346:70;24324:13;24283:16;24393:4;24381:17;;24346:70;:::i;:::-;24432:20;;23962:496;-1:-1:-1;;;;23962:496:134:o;24463:125::-;24528:9;;;24549:10;;;24546:36;;;24562:18;;:::i;25388:1352::-;25514:3;25508:10;-1:-1:-1;;;;;25533:6:134;25530:30;25527:56;;;25563:18;;:::i;:::-;25592:97;25682:6;25642:38;25674:4;25668:11;25642:38;:::i;:::-;25636:4;25592:97;:::i;:::-;25744:4;;25808:2;25797:14;;25825:1;25820:663;;;;26527:1;26544:6;26541:89;;;-1:-1:-1;26596:19:134;;;26590:26;26541:89;-1:-1:-1;;20861:1:134;20857:11;;;20853:24;20849:29;20839:40;20885:1;20881:11;;;20836:57;26643:81;;25790:944;;25820:663;20130:1;20123:14;;;20167:4;20154:18;;-1:-1:-1;;25856:20:134;;;25974:236;25988:7;25985:1;25982:14;25974:236;;;26077:19;;;26071:26;26056:42;;26169:27;;;;26137:1;26125:14;;;;26004:19;;25974:236;;;25978:3;26238:6;26229:7;26226:19;26223:201;;;26299:19;;;26293:26;-1:-1:-1;;26382:1:134;26378:14;;;26394:3;26374:24;26370:37;26366:42;26351:58;26336:74;;26223:201;-1:-1:-1;;;;;26470:1:134;26454:14;;;26450:22;26437:36;;-1:-1:-1;25388:1352:134:o;27458:407::-;27660:2;27642:21;;;27699:2;27679:18;;;27672:30;27738:34;27733:2;27718:18;;27711:62;-1:-1:-1;;;27804:2:134;27789:18;;27782:41;27855:3;27840:19;;27458:407::o;27870:148::-;27958:4;27937:12;;;27951;;;27933:31;;27976:13;;27973:39;;;27992:18;;:::i;28023:414::-;28225:2;28207:21;;;28264:2;28244:18;;;28237:30;28303:34;28298:2;28283:18;;28276:62;-1:-1:-1;;;28369:2:134;28354:18;;28347:48;28427:3;28412:19;;28023:414::o;28442:127::-;28503:10;28498:3;28494:20;28491:1;28484:31;28534:4;28531:1;28524:15;28558:4;28555:1;28548:15;28574:120;28614:1;28640;28630:35;;28645:18;;:::i;:::-;-1:-1:-1;28679:9:134;;28574:120::o;28699:112::-;28731:1;28757;28747:35;;28762:18;;:::i;:::-;-1:-1:-1;28796:9:134;;28699:112::o;29534:489::-;-1:-1:-1;;;;;29803:15:134;;;29785:34;;29855:15;;29850:2;29835:18;;29828:43;29902:2;29887:18;;29880:34;;;29950:3;29945:2;29930:18;;29923:31;;;29728:4;;29971:46;;29997:19;;29989:6;29971:46;:::i;:::-;29963:54;29534:489;-1:-1:-1;;;;;;29534:489:134:o;30028:249::-;30097:6;30150:2;30138:9;30129:7;30125:23;30121:32;30118:52;;;30166:1;30163;30156:12;30118:52;30198:9;30192:16;30217:30;30241:5;30217:30;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -2072,67 +2072,67 @@ "id": 1017, "exportedSymbols": { "AddressUpgradeable": [ - 58940 + 56931 ], "AutID": [ 1016 ], "ContextUpgradeable": [ - 58982 + 56973 ], "Counters": [ - 62184 + 59486 ], "ERC165Upgradeable": [ - 59252 + 57243 ], "ERC2771Recipient": [ - 56661 + 54652 ], "ERC721URIStorageUpgradeable": [ - 58670 + 56661 ], "ERC721Upgradeable": [ - 58391 + 56382 ], "IAutID": [ 1194 ], "IERC165Upgradeable": [ - 59264 + 57255 ], "IERC2771Recipient": [ - 57348 + 55339 ], "IERC721MetadataUpgradeable": [ - 58697 + 56688 ], "IERC721ReceiverUpgradeable": [ - 58409 + 56400 ], "IERC721Upgradeable": [ - 58525 + 56516 ], "IMembershipChecker": [ - 5849 + 4694 ], "INova": [ - 8108 + 6424 ], "INovaCommitment": [ - 4531 + 3944 ], "INovaMembership": [ - 4566 + 3979 ], "INovaMembershipSet": [ - 4705 + 4094 ], "Initializable": [ - 57499 + 55490 ], "StringsUpgradeable": [ - 59208 + 57199 ] }, "nodeType": "SourceUnit", @@ -2158,7 +2158,7 @@ "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 58671, + "sourceUnit": 56662, "symbolAliases": [], "unitAlias": "" }, @@ -2171,7 +2171,7 @@ "file": "@openzeppelin/contracts/utils/Counters.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 62185, + "sourceUnit": 59487, "symbolAliases": [], "unitAlias": "" }, @@ -2184,7 +2184,7 @@ "file": "@opengsn/contracts/src/ERC2771Recipient.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 56662, + "sourceUnit": 54653, "symbolAliases": [], "unitAlias": "" }, @@ -2210,7 +2210,7 @@ "file": "./components/interfaces/get/INovaCommitment.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 4532, + "sourceUnit": 3945, "symbolAliases": [], "unitAlias": "" }, @@ -2223,7 +2223,7 @@ "file": "./components/interfaces/set/INovaMembershipSet.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 4706, + "sourceUnit": 4095, "symbolAliases": [], "unitAlias": "" }, @@ -2236,7 +2236,7 @@ "file": "./components/interfaces/get/INovaMembership.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 4567, + "sourceUnit": 3980, "symbolAliases": [], "unitAlias": "" }, @@ -2249,7 +2249,7 @@ "file": "./membershipCheckers/IMembershipChecker.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 5850, + "sourceUnit": 4695, "symbolAliases": [], "unitAlias": "" }, @@ -2262,7 +2262,7 @@ "file": "./nova/interfaces/INova.sol", "nameLocation": "-1:-1:-1", "scope": 1017, - "sourceUnit": 8109, + "sourceUnit": 6425, "symbolAliases": [], "unitAlias": "" }, @@ -2284,7 +2284,7 @@ "684:8:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62184, + "referencedDeclaration": 59486, "src": "684:8:0" }, "typeName": { @@ -2298,13 +2298,13 @@ "706:7:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62116, + "referencedDeclaration": 59418, "src": "697:16:0" }, - "referencedDeclaration": 62116, + "referencedDeclaration": 59418, "src": "697:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage_ptr", + "typeIdentifier": "t_struct$_Counter_$59418_storage_ptr", "typeString": "struct Counters.Counter" } } @@ -2328,7 +2328,7 @@ "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage", + "typeIdentifier": "t_struct$_Counter_$59418_storage", "typeString": "struct Counters.Counter" }, "typeName": { @@ -2342,13 +2342,13 @@ "745:7:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62116, + "referencedDeclaration": 59418, "src": "736:16:0" }, - "referencedDeclaration": 62116, + "referencedDeclaration": 59418, "src": "736:16:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage_ptr", + "typeIdentifier": "t_struct$_Counter_$59418_storage_ptr", "typeString": "struct Counters.Counter" } }, @@ -2794,7 +2794,7 @@ "name": "__ERC721_init", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57564, + "referencedDeclaration": 55555, "src": "1373:13:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", @@ -2848,7 +2848,7 @@ "name": "_setTrustedForwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56585, + "referencedDeclaration": 54576, "src": "1412:20:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", @@ -2891,7 +2891,7 @@ "1351:11:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 57419, + "referencedDeclaration": 55410, "src": "1351:11:0" }, "nodeType": "ModifierInvocation", @@ -4061,7 +4061,7 @@ "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57637, + "referencedDeclaration": 55628, "src": "2908:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", @@ -4439,10 +4439,10 @@ "name": "INovaMembership", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4566, + "referencedDeclaration": 3979, "src": "3108:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaMembership_$4566_$", + "typeIdentifier": "t_type$_t_contract$_INovaMembership_$3979_$", "typeString": "type(contract INovaMembership)" } }, @@ -4458,7 +4458,7 @@ "src": "3108:27:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaMembership_$4566", + "typeIdentifier": "t_contract$_INovaMembership_$3979", "typeString": "contract INovaMembership" } }, @@ -4470,7 +4470,7 @@ "memberLocation": "3136:7:0", "memberName": "canJoin", "nodeType": "MemberAccess", - "referencedDeclaration": 4565, + "referencedDeclaration": 3978, "src": "3108:35:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -4687,7 +4687,7 @@ "referencedDeclaration": 25, "src": "3283:9:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage", + "typeIdentifier": "t_struct$_Counter_$59418_storage", "typeString": "struct Counters.Counter storage ref" } }, @@ -4699,10 +4699,10 @@ "memberLocation": "3293:7:0", "memberName": "current", "nodeType": "MemberAccess", - "referencedDeclaration": 62128, + "referencedDeclaration": 59430, "src": "3283:17:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$62116_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$62116_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$59418_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$59418_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" } }, @@ -4789,10 +4789,10 @@ "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ - 58001, - 58030 + 55992, + 56021 ], - "referencedDeclaration": 58001, + "referencedDeclaration": 55992, "src": "3313:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", @@ -4862,7 +4862,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58634, + "referencedDeclaration": 56625, "src": "3355:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -5398,7 +5398,7 @@ "referencedDeclaration": 25, "src": "3651:9:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage", + "typeIdentifier": "t_struct$_Counter_$59418_storage", "typeString": "struct Counters.Counter storage ref" } }, @@ -5410,10 +5410,10 @@ "memberLocation": "3661:9:0", "memberName": "increment", "nodeType": "MemberAccess", - "referencedDeclaration": 62142, + "referencedDeclaration": 59444, "src": "3651:19:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$62116_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$62116_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$59418_storage_ptr_$returns$__$attached_to$_t_struct$_Counter_$59418_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)" } }, @@ -5523,10 +5523,10 @@ "name": "INovaMembershipSet", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4705, + "referencedDeclaration": 4094, "src": "3683:18:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaMembershipSet_$4705_$", + "typeIdentifier": "t_type$_t_contract$_INovaMembershipSet_$4094_$", "typeString": "type(contract INovaMembershipSet)" } }, @@ -5542,7 +5542,7 @@ "src": "3683:30:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaMembershipSet_$4705", + "typeIdentifier": "t_contract$_INovaMembershipSet_$4094", "typeString": "contract INovaMembershipSet" } }, @@ -5554,7 +5554,7 @@ "memberLocation": "3714:4:0", "memberName": "join", "nodeType": "MemberAccess", - "referencedDeclaration": 4704, + "referencedDeclaration": 4093, "src": "3683:35:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", @@ -6518,7 +6518,7 @@ "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57637, + "referencedDeclaration": 55628, "src": "4670:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", @@ -7074,10 +7074,10 @@ "name": "INovaCommitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4531, + "referencedDeclaration": 3944, "src": "5033:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaCommitment_$4531_$", + "typeIdentifier": "t_type$_t_contract$_INovaCommitment_$3944_$", "typeString": "type(contract INovaCommitment)" } }, @@ -7093,7 +7093,7 @@ "src": "5033:27:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaCommitment_$4531", + "typeIdentifier": "t_contract$_INovaCommitment_$3944", "typeString": "contract INovaCommitment" } }, @@ -7105,7 +7105,7 @@ "memberLocation": "5061:13:0", "memberName": "getCommitment", "nodeType": "MemberAccess", - "referencedDeclaration": 4530, + "referencedDeclaration": 3943, "src": "5033:41:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", @@ -7284,10 +7284,10 @@ "name": "INovaMembership", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4566, + "referencedDeclaration": 3979, "src": "5154:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaMembership_$4566_$", + "typeIdentifier": "t_type$_t_contract$_INovaMembership_$3979_$", "typeString": "type(contract INovaMembership)" } }, @@ -7303,7 +7303,7 @@ "src": "5154:27:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaMembership_$4566", + "typeIdentifier": "t_contract$_INovaMembership_$3979", "typeString": "contract INovaMembership" } }, @@ -7315,7 +7315,7 @@ "memberLocation": "5182:7:0", "memberName": "canJoin", "nodeType": "MemberAccess", - "referencedDeclaration": 4565, + "referencedDeclaration": 3978, "src": "5154:35:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -7804,10 +7804,10 @@ "name": "INovaMembershipSet", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4705, + "referencedDeclaration": 4094, "src": "5420:18:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaMembershipSet_$4705_$", + "typeIdentifier": "t_type$_t_contract$_INovaMembershipSet_$4094_$", "typeString": "type(contract INovaMembershipSet)" } }, @@ -7823,7 +7823,7 @@ "src": "5420:30:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaMembershipSet_$4705", + "typeIdentifier": "t_contract$_INovaMembershipSet_$4094", "typeString": "contract INovaMembershipSet" } }, @@ -7835,7 +7835,7 @@ "memberLocation": "5451:4:0", "memberName": "join", "nodeType": "MemberAccess", - "referencedDeclaration": 4704, + "referencedDeclaration": 4093, "src": "5420:35:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", @@ -9081,10 +9081,10 @@ "name": "INovaCommitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4531, + "referencedDeclaration": 3944, "src": "6416:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaCommitment_$4531_$", + "typeIdentifier": "t_type$_t_contract$_INovaCommitment_$3944_$", "typeString": "type(contract INovaCommitment)" } }, @@ -9100,7 +9100,7 @@ "src": "6416:27:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaCommitment_$4531", + "typeIdentifier": "t_contract$_INovaCommitment_$3944", "typeString": "contract INovaCommitment" } }, @@ -9112,7 +9112,7 @@ "memberLocation": "6444:13:0", "memberName": "getCommitment", "nodeType": "MemberAccess", - "referencedDeclaration": 4530, + "referencedDeclaration": 3943, "src": "6416:41:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", @@ -9601,7 +9601,7 @@ "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57637, + "referencedDeclaration": 55628, "src": "6793:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", @@ -9848,7 +9848,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58634, + "referencedDeclaration": 56625, "src": "6944:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -10057,7 +10057,7 @@ "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57637, + "referencedDeclaration": 55628, "src": "7365:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", @@ -10660,10 +10660,10 @@ "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8108, + "referencedDeclaration": 6424, "src": "8056:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INova_$8108_$", + "typeIdentifier": "t_type$_t_contract$_INova_$6424_$", "typeString": "type(contract INova)" } }, @@ -10679,7 +10679,7 @@ "src": "8056:12:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$8108", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, @@ -10691,7 +10691,7 @@ "memberLocation": "8069:13:0", "memberName": "getAllMembers", "nodeType": "MemberAccess", - "referencedDeclaration": 8033, + "referencedDeclaration": 6349, "src": "8056:26:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", @@ -12812,10 +12812,10 @@ "name": "INovaMembership", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4566, + "referencedDeclaration": 3979, "src": "9849:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaMembership_$4566_$", + "typeIdentifier": "t_type$_t_contract$_INovaMembership_$3979_$", "typeString": "type(contract INovaMembership)" } }, @@ -12831,7 +12831,7 @@ "src": "9849:21:0", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaMembership_$4566", + "typeIdentifier": "t_contract$_INovaMembership_$3979", "typeString": "contract INovaMembership" } }, @@ -12843,7 +12843,7 @@ "memberLocation": "9871:13:0", "memberName": "getAllMembers", "nodeType": "MemberAccess", - "referencedDeclaration": 4556, + "referencedDeclaration": 3969, "src": "9849:35:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", @@ -13619,7 +13619,7 @@ "referencedDeclaration": 25, "src": "10386:9:0", "typeDescriptions": { - "typeIdentifier": "t_struct$_Counter_$62116_storage", + "typeIdentifier": "t_struct$_Counter_$59418_storage", "typeString": "struct Counters.Counter storage ref" } }, @@ -13631,10 +13631,10 @@ "memberLocation": "10396:7:0", "memberName": "current", "nodeType": "MemberAccess", - "referencedDeclaration": 62128, + "referencedDeclaration": 59430, "src": "10386:17:0", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$62116_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$62116_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$59418_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Counter_$59418_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" } }, @@ -13816,7 +13816,7 @@ ] }, "baseFunctions": [ - 58231 + 56222 ], "documentation": { "id": 882, @@ -14031,7 +14031,7 @@ ] }, "baseFunctions": [ - 57934 + 55925 ], "documentation": { "id": 899, @@ -14199,10 +14199,10 @@ "name": "ERC2771Recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56661, + "referencedDeclaration": 54652, "src": "11172:16:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$56661_$", + "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$54652_$", "typeString": "type(contract ERC2771Recipient)" } }, @@ -14214,7 +14214,7 @@ "memberLocation": "11189:10:0", "memberName": "_msgSender", "nodeType": "MemberAccess", - "referencedDeclaration": 56626, + "referencedDeclaration": 54617, "src": "11172:27:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", @@ -14245,8 +14245,8 @@ ] }, "baseFunctions": [ - 56626, - 58967 + 54617, + 56958 ], "implemented": true, "kind": "function", @@ -14264,7 +14264,7 @@ "11099:18:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 58982, + "referencedDeclaration": 56973, "src": "11099:18:0" }, { @@ -14274,7 +14274,7 @@ "11119:16:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, + "referencedDeclaration": 54652, "src": "11119:16:0" } ], @@ -14347,10 +14347,10 @@ "name": "ERC2771Recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56661, + "referencedDeclaration": 54652, "src": "11337:16:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$56661_$", + "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$54652_$", "typeString": "type(contract ERC2771Recipient)" } }, @@ -14362,7 +14362,7 @@ "memberLocation": "11354:8:0", "memberName": "_msgData", "nodeType": "MemberAccess", - "referencedDeclaration": 56660, + "referencedDeclaration": 54651, "src": "11337:25:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$", @@ -14393,8 +14393,8 @@ ] }, "baseFunctions": [ - 56660, - 58976 + 54651, + 56967 ], "implemented": true, "kind": "function", @@ -14412,7 +14412,7 @@ "11257:18:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 58982, + "referencedDeclaration": 56973, "src": "11257:18:0" }, { @@ -14422,7 +14422,7 @@ "11277:16:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, + "referencedDeclaration": 54652, "src": "11277:16:0" } ], @@ -15389,7 +15389,7 @@ "618:16:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, + "referencedDeclaration": 54652, "src": "618:16:0" }, "id": 13, @@ -15404,7 +15404,7 @@ "636:27:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 58670, + "referencedDeclaration": 56661, "src": "636:27:0" }, "id": 15, @@ -15440,16 +15440,16 @@ "linearizedBaseContracts": [ 1016, 1194, - 58670, - 58391, - 58697, - 58525, - 59252, - 59264, - 58982, - 57499, 56661, - 57348 + 56382, + 56688, + 56516, + 57243, + 57255, + 56973, + 55490, + 54652, + 55339 ], "name": "AutID", "nameLocation": "609:5:0", diff --git a/out/BatchAdminAdd.t.sol/MembershipSets.json b/out/BatchAdminAdd.t.sol/MembershipSets.json index e5eced39..7d31e6d1 100644 --- a/out/BatchAdminAdd.t.sol/MembershipSets.json +++ b/out/BatchAdminAdd.t.sol/MembershipSets.json @@ -566,13 +566,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b50620133a280620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806385226c81146200017f578063916a17c614620001985780639572eff014620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000745565b60405162000130919062002cf9565b60405180910390f35b62000143620007a9565b60405162000130919062002d9c565b62000121620008f7565b6200012162000959565b62000170620009bb565b60405162000130919062002e62565b6200018962000aa5565b60405162000130919062002f19565b6200017062000b7f565b6200010b62000c69565b6200018962001cc8565b620001c062001da2565b604051901515815260200162000130565b6200012162001ecf565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062001f31565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062001f31565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062001f31565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062001f31565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062001f31565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d7919062002f97565b6001600160a01b031614604051806060016040528060288152602001620133456028913962001f31565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002fbc565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062001f31565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000540919062002f97565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062001f31565b565b6200058762001f7f565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b158015620005dc57600080fd5b505af1158015620005f1573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620006319260019260099291169060040162002fe0565b600060405180830381600087803b1580156200064c57600080fd5b505af115801562000661573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b158015620006ba57600080fd5b505af1158015620006cf573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf93506200070f9260019260099291169060040162002fe0565b600060405180830381600087803b1580156200072a57600080fd5b505af11580156200073f573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200079f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000780575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008d6578382906000526020600020018054620008429062003044565b80601f0160208091040260200160405190810160405280929190818152602001828054620008709062003044565b8015620008c15780601f106200089557610100808354040283529160200191620008c1565b820191906000526020600020905b815481529060010190602001808311620008a357829003601f168201915b50505050508152602001906001019062000820565b505050508152505081526020019060010190620007cd565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a4d5790505b50505050508152505081526020019060010190620009df565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462000aeb9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462000b199062003044565b801562000b6a5780601f1062000b3e5761010080835404028352916020019162000b6a565b820191906000526020600020905b81548152906001019060200180831162000b4c57829003601f168201915b50505050508152602001906001019062000ac9565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c5057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000c115790505b5050505050815250508152602001906001019062000ba3565b60248054602754604051630935e01b60e21b81526001600160a01b03918216600482015262000d209391909216916324d7806c91016020604051808303816000875af115801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062002fbc565b6040518060400160405280601781526020017f4167656e74322041646d696e2062792064656661756c7400000000000000000081525062002af8565b60248054602854604051630935e01b60e21b81526001600160a01b03918216600482015262000dd79391909216916324d7806c91016020604051808303816000875af115801562000d75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9b919062002fbc565b6040518060400160405280601781526020017f4167656e74332041646d696e2062792064656661756c7400000000000000000081525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b15801562000e2c57600080fd5b505af115801562000e41573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c4e6f7420616e2061646d696e2160981b604482015260008051602062013325833981519152925063f28dceb39150606401600060405180830381600087803b15801562000eab57600080fd5b505af115801562000ec0573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b15801562000f0d57600080fd5b505af115801562000f22573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f7b57600080fd5b505af115801562000f90573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260008051602062013325833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ff957600080fd5b505af11580156200100e573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b1580156200105b57600080fd5b505af115801562001070573d6000803e3d6000fd5b505060248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620011199550911692506324d7806c91016020604051808303816000875af1158015620010c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010ed919062002fbc565b6040518060400160405280600d81526020016c61646d696e20736f6d65686f7760981b81525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620011c39260019260099291169060040162002fe0565b600060405180830381600087803b158015620011de57600080fd5b505af1158015620011f3573d6000803e3d6000fd5b50506024805460295460405163288c314960e21b81526001600160a01b0391821660048201526200129895509116925063a230c5249101602060405180830381865afa15801562001248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126e919062002fbc565b6040518060400160405280600b81526020016a36b0b2329036b2b6b132b960a91b81525062001f31565b60248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620013409391909216916324d7806c91016020604051808303816000875af1158015620012ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001313919062002fbc565b6040518060400160405280600e81526020016d30b236b4b71039b7b6b2b437bb9960911b81525062002af8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620013a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013cc919062003080565b604080516318caf8e360e31b815265e8d4a5100100600482018190526024820192909252601060448201526f30b3b2b73a103737ba1036b2b6b132b960811b606482015291925090600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200144957600080fd5b505af11580156200145e573d6000803e3d6000fd5b5060009250600491506200146f9050565b60405190808252806020026020018201604052801562001499578160200160208202803683370190505b50905060608282600081518110620014b557620014b5620030b0565b6001600160a01b039283166020918202929092010152602954835191169083906001908110620014e957620014e9620030b0565b6001600160a01b0392831660209182029290920101526027548351911690839060029081106200151d576200151d620030b0565b6001600160a01b039283166020918202929092010152602854835191169083906003908110620015515762001551620030b0565b6001600160a01b039290921660209283029190910182015260405163f28dceb360e01b81526004810191909152600d60248201526c4e6f7420616e2061646d696e2160981b6044820152600080516020620133258339815191529063f28dceb390606401600060405180830381600087803b158015620015d057600080fd5b505af1158015620015e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b1580156200163e57600080fd5b505af115801562001653573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200168990859060040162002cf9565b6000604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016d39190810190620030c6565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b1580156200172957600080fd5b505af11580156200173e573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200177490859060040162002cf9565b6000604051808303816000875af115801562001794573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017be9190810190620030c6565b6024805460275460405163288c314960e21b81526001600160a01b039182166004820152939450620018659391169163a230c52491015b602060405180830381865afa15801562001813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001839919062002fbc565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062001f31565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620018a093919092169163a230c5249101620017f5565b60248054602854604051630935e01b60e21b81526001600160a01b0391821660048201526200194f9391909216916324d7806c91016020604051808303816000875af1158015620018f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200191b919062002fbc565b604051806040016040528060158152602001742099903737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60248054602754604051630935e01b60e21b81526001600160a01b039182166004820152620019f59391909216916324d7806c91016020604051808303816000875af1158015620019a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019ca919062002fbc565b6040518060400160405280600c81526020016b2099103737ba1030b236b4b760a11b81525062001f31565b60248054604051630935e01b60e21b81526001600160a01b03868116600483015262001aa0939216916324d7806c91016020604051808303816000875af115801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062002fbc565b6040518060400160405280601681526020017506e6f74206d656d6265722073686f756c6420736b69760541b81525062002af8565b60248054602954604051630935e01b60e21b81526001600160a01b03918216600482015262001b4e9391909216916324d7806c91016020604051808303816000875af115801562001af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1b919062002fbc565b6040518060400160405280601481526020017336b2b6b132b910313aba103737ba1030b236b4b760611b81525062001f31565b62001bb660006001600160a01b03168260008151811062001b735762001b73620030b0565b60200260200101516001600160a01b031614604051806040016040528060128152602001711b9bdb8b5b595b58995c881cdada5c1c195960721b81525062001f31565b602954815162001c2e916001600160a01b0316908390600190811062001be05762001be0620030b0565b60200260200101516001600160a01b0316146040518060400160405280601781526020017f6f757473696465722061646465642061732061646d696e00000000000000000081525062001f31565b602754815162001c9e916001600160a01b0316908390600290811062001c585762001c58620030b0565b60200260200101516001600160a01b031614604051806040016040528060158152602001743099103737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60285481516200073f916001600160a01b0316908390600390811062001c585762001c58620030b0565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462001d0e9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3c9062003044565b801562001d8d5780601f1062001d615761010080835404028352916020019162001d8d565b820191906000526020600020905b81548152906001019060200180831162001d6f57829003601f168201915b50505050508152602001906001019062001cec565b600754600090610100900460ff161562001dc55750600754610100900460ff1690565b6000600080516020620133258339815191523b1562001eca576040805160008051602062013325833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001e4c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003199565b60408051601f198184030181529082905262001e6891620031cc565b6000604051808303816000865af19150503d806000811462001ea7576040519150601f19603f3d011682016040523d82523d6000602084013e62001eac565b606091505b509150508080602001905181019062001ec6919062002fbc565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b8162001f7b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001f689190620031ea565b60405180910390a162001f7b8262002b05565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200201057600080fd5b505af115801562002025573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013325833981519152925063c657c7189150608401600060405180830381600087803b158015620020ba57600080fd5b505af1158015620020cf573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013325833981519152925063c657c7189150608401600060405180830381600087803b1580156200216457600080fd5b505af115801562002179573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200221a57600080fd5b505af11580156200222f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201332583398151915292506306447d569150602401600060405180830381600087803b1580156200228857600080fd5b505af11580156200229d573d6000803e3d6000fd5b50505050604051620022af9062002c89565b604051809103906000f080158015620022cc573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200235657600080fd5b505af11580156200236b573d6000803e3d6000fd5b505050506040516200237d9062002c97565b604051809103906000f0801580156200239a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200242357600080fd5b505af115801562002438573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b50505050604051620024ad9062002ca5565b604051809103906000f080158015620024ca573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200255057600080fd5b505af115801562002565573d6000803e3d6000fd5b50505050604051620025779062002cb3565b604051809103906000f08015801562002594573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200261e57600080fd5b505af115801562002633573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002654915062002cc1565b6001600160a01b039091168152602001604051809103906000f08015801562002681573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200271057600080fd5b505af115801562002725573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002746915062002ccf565b6001600160a01b039091168152602001604051809103906000f08015801562002773573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200280257600080fd5b505af115801562002817573d6000803e3d6000fd5b50505050604051620028299062002cdd565b604051809103906000f08015801562002846573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620028a657600080fd5b505af1158015620028bb573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b039384169450918316921690620028ec9062002ceb565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002931573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b158015620029be57600080fd5b505af1158015620029d3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562002a4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a75919062002f97565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013325833981519152916390c5013b9160048082019260009290919082900301818387803b15801562002adc57600080fd5b505af115801562002af1573d6000803e3d6000fd5b5050505050565b62001f7b82158262001f31565b8062002b7d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b6b9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162002b7d62002b80565b50565b600080516020620133258339815191523b1562002c78576040805160008051602062013325833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c13929160200162003199565b60408051601f198184030181529082905262002c2f91620031cc565b6000604051808303816000865af19150503d806000811462002c6e576040519150601f19603f3d011682016040523d82523d6000602084013e62002c73565b606091505b505050505b6007805461ff001916610100179055565b610120806200321c83390190565b610c72806200333c83390190565b6137238062003fae83390190565b6123c280620076d183390190565b6110db8062009a9383390190565b613043806200ab6e83390190565b6137d5806200dbb183390190565b611f9f806201138683390190565b6020808252825182820181905260009190848201906040850190845b8181101562002d3c5783516001600160a01b03168352928401929184019160010162002d15565b50909695505050505050565b60005b8381101562002d6557818101518382015260200162002d4b565b50506000910152565b6000815180845262002d8881602086016020860162002d48565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002e5257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002e3b57605f1989850301835262002e2884865162002d6e565b948e01949350918d019160010162002e09565b505050978a01979450509188019160010162002dc3565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002f0a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ef45783516001600160e01b0319168252928b019260019290920191908b019062002ec8565b50978a0197955050509187019160010162002e8a565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7257603f1988860301845262002f5f85835162002d6e565b9450928501929085019060010162002f40565b5092979650505050505050565b80516001600160a01b038116811462001eca57600080fd5b60006020828403121562002faa57600080fd5b62002fb58262002f7f565b9392505050565b60006020828403121562002fcf57600080fd5b8151801515811462002fb557600080fd5b60a0808252600d908201526c20b73730abb0b73730b132b4b760991b60c082015260e060208201819052600590820152641d5c9b1b1b60da1b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b600181811c908216806200305957607f821691505b6020821081036200307a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200309357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020808385031215620030da57600080fd5b825167ffffffffffffffff80821115620030f357600080fd5b818501915085601f8301126200310857600080fd5b8151818111156200311d576200311d6200309a565b8060051b604051601f19603f830116810181811085821117156200314557620031456200309a565b6040529182528482019250838101850191888311156200316457600080fd5b938501935b828510156200318d576200317d8562002f7f565b8452938501939285019262003169565b98975050505050505050565b6001600160e01b0319831681528151600090620031be81600485016020870162002d48565b919091016004019392505050565b60008251620031e081846020870162002d48565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002fb5608083018462002d6e56fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220bca9d002834ad6e6c909daebfb89c11fb147f28836d664e9fcaa3dd21cf97d7164736f6c63430008130033", - "sourceMap": "467:2268:113:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;467:2268:113;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201358380620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806385226c81146200017f578063916a17c614620001985780639572eff014620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000745565b60405162000130919062002cf9565b60405180910390f35b62000143620007a9565b60405162000130919062002d9c565b62000121620008f7565b6200012162000959565b62000170620009bb565b60405162000130919062002e62565b6200018962000aa5565b60405162000130919062002f19565b6200017062000b7f565b6200010b62000c69565b6200018962001cc8565b620001c062001da2565b604051901515815260200162000130565b6200012162001ecf565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062001f31565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062001f31565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062001f31565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062001f31565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062001f31565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d7919062002f97565b6001600160a01b031614604051806060016040528060288152602001620135266028913962001f31565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002fbc565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062001f31565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000540919062002f97565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062001f31565b565b6200058762001f7f565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b158015620005dc57600080fd5b505af1158015620005f1573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620006319260019260099291169060040162002fe0565b600060405180830381600087803b1580156200064c57600080fd5b505af115801562000661573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b158015620006ba57600080fd5b505af1158015620006cf573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf93506200070f9260019260099291169060040162002fe0565b600060405180830381600087803b1580156200072a57600080fd5b505af11580156200073f573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200079f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000780575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008d6578382906000526020600020018054620008429062003044565b80601f0160208091040260200160405190810160405280929190818152602001828054620008709062003044565b8015620008c15780601f106200089557610100808354040283529160200191620008c1565b820191906000526020600020905b815481529060010190602001808311620008a357829003601f168201915b50505050508152602001906001019062000820565b505050508152505081526020019060010190620007cd565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a4d5790505b50505050508152505081526020019060010190620009df565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462000aeb9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462000b199062003044565b801562000b6a5780601f1062000b3e5761010080835404028352916020019162000b6a565b820191906000526020600020905b81548152906001019060200180831162000b4c57829003601f168201915b50505050508152602001906001019062000ac9565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c5057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000c115790505b5050505050815250508152602001906001019062000ba3565b60248054602754604051630935e01b60e21b81526001600160a01b03918216600482015262000d209391909216916324d7806c91016020604051808303816000875af115801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062002fbc565b6040518060400160405280601781526020017f4167656e74322041646d696e2062792064656661756c7400000000000000000081525062002af8565b60248054602854604051630935e01b60e21b81526001600160a01b03918216600482015262000dd79391909216916324d7806c91016020604051808303816000875af115801562000d75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9b919062002fbc565b6040518060400160405280601781526020017f4167656e74332041646d696e2062792064656661756c7400000000000000000081525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b15801562000e2c57600080fd5b505af115801562000e41573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c4e6f7420616e2061646d696e2160981b604482015260008051602062013506833981519152925063f28dceb39150606401600060405180830381600087803b15801562000eab57600080fd5b505af115801562000ec0573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b15801562000f0d57600080fd5b505af115801562000f22573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f7b57600080fd5b505af115801562000f90573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260008051602062013506833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ff957600080fd5b505af11580156200100e573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b1580156200105b57600080fd5b505af115801562001070573d6000803e3d6000fd5b505060248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620011199550911692506324d7806c91016020604051808303816000875af1158015620010c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010ed919062002fbc565b6040518060400160405280600d81526020016c61646d696e20736f6d65686f7760981b81525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620011c39260019260099291169060040162002fe0565b600060405180830381600087803b158015620011de57600080fd5b505af1158015620011f3573d6000803e3d6000fd5b50506024805460295460405163288c314960e21b81526001600160a01b0391821660048201526200129895509116925063a230c5249101602060405180830381865afa15801562001248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126e919062002fbc565b6040518060400160405280600b81526020016a36b0b2329036b2b6b132b960a91b81525062001f31565b60248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620013409391909216916324d7806c91016020604051808303816000875af1158015620012ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001313919062002fbc565b6040518060400160405280600e81526020016d30b236b4b71039b7b6b2b437bb9960911b81525062002af8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620013a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013cc919062003080565b604080516318caf8e360e31b815265e8d4a5100100600482018190526024820192909252601060448201526f30b3b2b73a103737ba1036b2b6b132b960811b606482015291925090600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200144957600080fd5b505af11580156200145e573d6000803e3d6000fd5b5060009250600491506200146f9050565b60405190808252806020026020018201604052801562001499578160200160208202803683370190505b50905060608282600081518110620014b557620014b5620030b0565b6001600160a01b039283166020918202929092010152602954835191169083906001908110620014e957620014e9620030b0565b6001600160a01b0392831660209182029290920101526027548351911690839060029081106200151d576200151d620030b0565b6001600160a01b039283166020918202929092010152602854835191169083906003908110620015515762001551620030b0565b6001600160a01b039290921660209283029190910182015260405163f28dceb360e01b81526004810191909152600d60248201526c4e6f7420616e2061646d696e2160981b6044820152600080516020620135068339815191529063f28dceb390606401600060405180830381600087803b158015620015d057600080fd5b505af1158015620015e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b1580156200163e57600080fd5b505af115801562001653573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200168990859060040162002cf9565b6000604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016d39190810190620030c6565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b1580156200172957600080fd5b505af11580156200173e573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200177490859060040162002cf9565b6000604051808303816000875af115801562001794573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017be9190810190620030c6565b6024805460275460405163288c314960e21b81526001600160a01b039182166004820152939450620018659391169163a230c52491015b602060405180830381865afa15801562001813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001839919062002fbc565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062001f31565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620018a093919092169163a230c5249101620017f5565b60248054602854604051630935e01b60e21b81526001600160a01b0391821660048201526200194f9391909216916324d7806c91016020604051808303816000875af1158015620018f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200191b919062002fbc565b604051806040016040528060158152602001742099903737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60248054602754604051630935e01b60e21b81526001600160a01b039182166004820152620019f59391909216916324d7806c91016020604051808303816000875af1158015620019a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019ca919062002fbc565b6040518060400160405280600c81526020016b2099103737ba1030b236b4b760a11b81525062001f31565b60248054604051630935e01b60e21b81526001600160a01b03868116600483015262001aa0939216916324d7806c91016020604051808303816000875af115801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062002fbc565b6040518060400160405280601681526020017506e6f74206d656d6265722073686f756c6420736b69760541b81525062002af8565b60248054602954604051630935e01b60e21b81526001600160a01b03918216600482015262001b4e9391909216916324d7806c91016020604051808303816000875af115801562001af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1b919062002fbc565b6040518060400160405280601481526020017336b2b6b132b910313aba103737ba1030b236b4b760611b81525062001f31565b62001bb660006001600160a01b03168260008151811062001b735762001b73620030b0565b60200260200101516001600160a01b031614604051806040016040528060128152602001711b9bdb8b5b595b58995c881cdada5c1c195960721b81525062001f31565b602954815162001c2e916001600160a01b0316908390600190811062001be05762001be0620030b0565b60200260200101516001600160a01b0316146040518060400160405280601781526020017f6f757473696465722061646465642061732061646d696e00000000000000000081525062001f31565b602754815162001c9e916001600160a01b0316908390600290811062001c585762001c58620030b0565b60200260200101516001600160a01b031614604051806040016040528060158152602001743099103737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60285481516200073f916001600160a01b0316908390600390811062001c585762001c58620030b0565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462001d0e9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3c9062003044565b801562001d8d5780601f1062001d615761010080835404028352916020019162001d8d565b820191906000526020600020905b81548152906001019060200180831162001d6f57829003601f168201915b50505050508152602001906001019062001cec565b600754600090610100900460ff161562001dc55750600754610100900460ff1690565b6000600080516020620135068339815191523b1562001eca576040805160008051602062013506833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001e4c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003199565b60408051601f198184030181529082905262001e6891620031cc565b6000604051808303816000865af19150503d806000811462001ea7576040519150601f19603f3d011682016040523d82523d6000602084013e62001eac565b606091505b509150508080602001905181019062001ec6919062002fbc565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b8162001f7b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001f689190620031ea565b60405180910390a162001f7b8262002b05565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200201057600080fd5b505af115801562002025573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013506833981519152925063c657c7189150608401600060405180830381600087803b158015620020ba57600080fd5b505af1158015620020cf573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013506833981519152925063c657c7189150608401600060405180830381600087803b1580156200216457600080fd5b505af115801562002179573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200221a57600080fd5b505af11580156200222f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201350683398151915292506306447d569150602401600060405180830381600087803b1580156200228857600080fd5b505af11580156200229d573d6000803e3d6000fd5b50505050604051620022af9062002c89565b604051809103906000f080158015620022cc573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200235657600080fd5b505af11580156200236b573d6000803e3d6000fd5b505050506040516200237d9062002c97565b604051809103906000f0801580156200239a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200242357600080fd5b505af115801562002438573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b50505050604051620024ad9062002ca5565b604051809103906000f080158015620024ca573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200255057600080fd5b505af115801562002565573d6000803e3d6000fd5b50505050604051620025779062002cb3565b604051809103906000f08015801562002594573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200261e57600080fd5b505af115801562002633573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002654915062002cc1565b6001600160a01b039091168152602001604051809103906000f08015801562002681573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200271057600080fd5b505af115801562002725573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002746915062002ccf565b6001600160a01b039091168152602001604051809103906000f08015801562002773573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200280257600080fd5b505af115801562002817573d6000803e3d6000fd5b50505050604051620028299062002cdd565b604051809103906000f08015801562002846573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620028a657600080fd5b505af1158015620028bb573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b039384169450918316921690620028ec9062002ceb565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002931573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b158015620029be57600080fd5b505af1158015620029d3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562002a4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a75919062002f97565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013506833981519152916390c5013b9160048082019260009290919082900301818387803b15801562002adc57600080fd5b505af115801562002af1573d6000803e3d6000fd5b5050505050565b62001f7b82158262001f31565b8062002b7d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b6b9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162002b7d62002b80565b50565b600080516020620135068339815191523b1562002c78576040805160008051602062013506833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c13929160200162003199565b60408051601f198184030181529082905262002c2f91620031cc565b6000604051808303816000865af19150503d806000811462002c6e576040519150601f19603f3d011682016040523d82523d6000602084013e62002c73565b606091505b505050505b6007805461ff001916610100179055565b610120806200321c83390190565b610c72806200333c83390190565b6137238062003fae83390190565b6125a380620076d183390190565b6110db8062009c7483390190565b613043806200ad4f83390190565b6137d5806200dd9283390190565b611f9f806201156783390190565b6020808252825182820181905260009190848201906040850190845b8181101562002d3c5783516001600160a01b03168352928401929184019160010162002d15565b50909695505050505050565b60005b8381101562002d6557818101518382015260200162002d4b565b50506000910152565b6000815180845262002d8881602086016020860162002d48565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002e5257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002e3b57605f1989850301835262002e2884865162002d6e565b948e01949350918d019160010162002e09565b505050978a01979450509188019160010162002dc3565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002f0a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ef45783516001600160e01b0319168252928b019260019290920191908b019062002ec8565b50978a0197955050509187019160010162002e8a565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7257603f1988860301845262002f5f85835162002d6e565b9450928501929085019060010162002f40565b5092979650505050505050565b80516001600160a01b038116811462001eca57600080fd5b60006020828403121562002faa57600080fd5b62002fb58262002f7f565b9392505050565b60006020828403121562002fcf57600080fd5b8151801515811462002fb557600080fd5b60a0808252600d908201526c20b73730abb0b73730b132b4b760991b60c082015260e060208201819052600590820152641d5c9b1b1b60da1b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b600181811c908216806200305957607f821691505b6020821081036200307a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200309357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020808385031215620030da57600080fd5b825167ffffffffffffffff80821115620030f357600080fd5b818501915085601f8301126200310857600080fd5b8151818111156200311d576200311d6200309a565b8060051b604051601f19603f830116810181811085821117156200314557620031456200309a565b6040529182528482019250838101850191888311156200316457600080fd5b938501935b828510156200318d576200317d8562002f7f565b8452938501939285019262003169565b98975050505050505050565b6001600160e01b0319831681528151600090620031be81600485016020870162002d48565b919091016004019392505050565b60008251620031e081846020870162002d48565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002fb5608083018462002d6e56fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122041a83d786bf3491ce63d8d2444bd75ee2916ec36186aa84f64c1dfe3aa39b27164736f6c63430008130033", + "sourceMap": "467:2268:126:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;467:2268:126;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806385226c81146200017f578063916a17c614620001985780639572eff014620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000745565b60405162000130919062002cf9565b60405180910390f35b62000143620007a9565b60405162000130919062002d9c565b62000121620008f7565b6200012162000959565b62000170620009bb565b60405162000130919062002e62565b6200018962000aa5565b60405162000130919062002f19565b6200017062000b7f565b6200010b62000c69565b6200018962001cc8565b620001c062001da2565b604051901515815260200162000130565b6200012162001ecf565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062001f31565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062001f31565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062001f31565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062001f31565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062001f31565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d7919062002f97565b6001600160a01b031614604051806060016040528060288152602001620133456028913962001f31565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002fbc565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062001f31565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000540919062002f97565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062001f31565b565b6200058762001f7f565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b158015620005dc57600080fd5b505af1158015620005f1573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620006319260019260099291169060040162002fe0565b600060405180830381600087803b1580156200064c57600080fd5b505af115801562000661573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b158015620006ba57600080fd5b505af1158015620006cf573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf93506200070f9260019260099291169060040162002fe0565b600060405180830381600087803b1580156200072a57600080fd5b505af11580156200073f573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200079f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000780575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008d6578382906000526020600020018054620008429062003044565b80601f0160208091040260200160405190810160405280929190818152602001828054620008709062003044565b8015620008c15780601f106200089557610100808354040283529160200191620008c1565b820191906000526020600020905b815481529060010190602001808311620008a357829003601f168201915b50505050508152602001906001019062000820565b505050508152505081526020019060010190620007cd565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a4d5790505b50505050508152505081526020019060010190620009df565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462000aeb9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462000b199062003044565b801562000b6a5780601f1062000b3e5761010080835404028352916020019162000b6a565b820191906000526020600020905b81548152906001019060200180831162000b4c57829003601f168201915b50505050508152602001906001019062000ac9565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c5057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000c115790505b5050505050815250508152602001906001019062000ba3565b60248054602754604051630935e01b60e21b81526001600160a01b03918216600482015262000d209391909216916324d7806c91016020604051808303816000875af115801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062002fbc565b6040518060400160405280601781526020017f4167656e74322041646d696e2062792064656661756c7400000000000000000081525062002af8565b60248054602854604051630935e01b60e21b81526001600160a01b03918216600482015262000dd79391909216916324d7806c91016020604051808303816000875af115801562000d75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9b919062002fbc565b6040518060400160405280601781526020017f4167656e74332041646d696e2062792064656661756c7400000000000000000081525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b15801562000e2c57600080fd5b505af115801562000e41573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c4e6f7420616e2061646d696e2160981b604482015260008051602062013325833981519152925063f28dceb39150606401600060405180830381600087803b15801562000eab57600080fd5b505af115801562000ec0573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b15801562000f0d57600080fd5b505af115801562000f22573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f7b57600080fd5b505af115801562000f90573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260008051602062013325833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ff957600080fd5b505af11580156200100e573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b1580156200105b57600080fd5b505af115801562001070573d6000803e3d6000fd5b505060248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620011199550911692506324d7806c91016020604051808303816000875af1158015620010c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010ed919062002fbc565b6040518060400160405280600d81526020016c61646d696e20736f6d65686f7760981b81525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620011c39260019260099291169060040162002fe0565b600060405180830381600087803b158015620011de57600080fd5b505af1158015620011f3573d6000803e3d6000fd5b50506024805460295460405163288c314960e21b81526001600160a01b0391821660048201526200129895509116925063a230c5249101602060405180830381865afa15801562001248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126e919062002fbc565b6040518060400160405280600b81526020016a36b0b2329036b2b6b132b960a91b81525062001f31565b60248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620013409391909216916324d7806c91016020604051808303816000875af1158015620012ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001313919062002fbc565b6040518060400160405280600e81526020016d30b236b4b71039b7b6b2b437bb9960911b81525062002af8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620013a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013cc919062003080565b604080516318caf8e360e31b815265e8d4a5100100600482018190526024820192909252601060448201526f30b3b2b73a103737ba1036b2b6b132b960811b606482015291925090600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200144957600080fd5b505af11580156200145e573d6000803e3d6000fd5b5060009250600491506200146f9050565b60405190808252806020026020018201604052801562001499578160200160208202803683370190505b50905060608282600081518110620014b557620014b5620030b0565b6001600160a01b039283166020918202929092010152602954835191169083906001908110620014e957620014e9620030b0565b6001600160a01b0392831660209182029290920101526027548351911690839060029081106200151d576200151d620030b0565b6001600160a01b039283166020918202929092010152602854835191169083906003908110620015515762001551620030b0565b6001600160a01b039290921660209283029190910182015260405163f28dceb360e01b81526004810191909152600d60248201526c4e6f7420616e2061646d696e2160981b6044820152600080516020620133258339815191529063f28dceb390606401600060405180830381600087803b158015620015d057600080fd5b505af1158015620015e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013325833981519152925063ca669fa79150602401600060405180830381600087803b1580156200163e57600080fd5b505af115801562001653573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200168990859060040162002cf9565b6000604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016d39190810190620030c6565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620133258339815191529063ca669fa790602401600060405180830381600087803b1580156200172957600080fd5b505af11580156200173e573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200177490859060040162002cf9565b6000604051808303816000875af115801562001794573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017be9190810190620030c6565b6024805460275460405163288c314960e21b81526001600160a01b039182166004820152939450620018659391169163a230c52491015b602060405180830381865afa15801562001813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001839919062002fbc565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062001f31565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620018a093919092169163a230c5249101620017f5565b60248054602854604051630935e01b60e21b81526001600160a01b0391821660048201526200194f9391909216916324d7806c91016020604051808303816000875af1158015620018f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200191b919062002fbc565b604051806040016040528060158152602001742099903737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60248054602754604051630935e01b60e21b81526001600160a01b039182166004820152620019f59391909216916324d7806c91016020604051808303816000875af1158015620019a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019ca919062002fbc565b6040518060400160405280600c81526020016b2099103737ba1030b236b4b760a11b81525062001f31565b60248054604051630935e01b60e21b81526001600160a01b03868116600483015262001aa0939216916324d7806c91016020604051808303816000875af115801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062002fbc565b6040518060400160405280601681526020017506e6f74206d656d6265722073686f756c6420736b69760541b81525062002af8565b60248054602954604051630935e01b60e21b81526001600160a01b03918216600482015262001b4e9391909216916324d7806c91016020604051808303816000875af115801562001af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1b919062002fbc565b6040518060400160405280601481526020017336b2b6b132b910313aba103737ba1030b236b4b760611b81525062001f31565b62001bb660006001600160a01b03168260008151811062001b735762001b73620030b0565b60200260200101516001600160a01b031614604051806040016040528060128152602001711b9bdb8b5b595b58995c881cdada5c1c195960721b81525062001f31565b602954815162001c2e916001600160a01b0316908390600190811062001be05762001be0620030b0565b60200260200101516001600160a01b0316146040518060400160405280601781526020017f6f757473696465722061646465642061732061646d696e00000000000000000081525062001f31565b602754815162001c9e916001600160a01b0316908390600290811062001c585762001c58620030b0565b60200260200101516001600160a01b031614604051806040016040528060158152602001743099103737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60285481516200073f916001600160a01b0316908390600390811062001c585762001c58620030b0565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462001d0e9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3c9062003044565b801562001d8d5780601f1062001d615761010080835404028352916020019162001d8d565b820191906000526020600020905b81548152906001019060200180831162001d6f57829003601f168201915b50505050508152602001906001019062001cec565b600754600090610100900460ff161562001dc55750600754610100900460ff1690565b6000600080516020620133258339815191523b1562001eca576040805160008051602062013325833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001e4c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003199565b60408051601f198184030181529082905262001e6891620031cc565b6000604051808303816000865af19150503d806000811462001ea7576040519150601f19603f3d011682016040523d82523d6000602084013e62001eac565b606091505b509150508080602001905181019062001ec6919062002fbc565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b8162001f7b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001f689190620031ea565b60405180910390a162001f7b8262002b05565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200201057600080fd5b505af115801562002025573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013325833981519152925063c657c7189150608401600060405180830381600087803b158015620020ba57600080fd5b505af1158015620020cf573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013325833981519152925063c657c7189150608401600060405180830381600087803b1580156200216457600080fd5b505af115801562002179573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200221a57600080fd5b505af11580156200222f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201332583398151915292506306447d569150602401600060405180830381600087803b1580156200228857600080fd5b505af11580156200229d573d6000803e3d6000fd5b50505050604051620022af9062002c89565b604051809103906000f080158015620022cc573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200235657600080fd5b505af11580156200236b573d6000803e3d6000fd5b505050506040516200237d9062002c97565b604051809103906000f0801580156200239a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200242357600080fd5b505af115801562002438573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b50505050604051620024ad9062002ca5565b604051809103906000f080158015620024ca573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200255057600080fd5b505af115801562002565573d6000803e3d6000fd5b50505050604051620025779062002cb3565b604051809103906000f08015801562002594573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200261e57600080fd5b505af115801562002633573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002654915062002cc1565b6001600160a01b039091168152602001604051809103906000f08015801562002681573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200271057600080fd5b505af115801562002725573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002746915062002ccf565b6001600160a01b039091168152602001604051809103906000f08015801562002773573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b1580156200280257600080fd5b505af115801562002817573d6000803e3d6000fd5b50505050604051620028299062002cdd565b604051809103906000f08015801562002846573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620028a657600080fd5b505af1158015620028bb573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b039384169450918316921690620028ec9062002ceb565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002931573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620133258339815191529063c657c71890608401600060405180830381600087803b158015620029be57600080fd5b505af1158015620029d3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562002a4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a75919062002f97565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013325833981519152916390c5013b9160048082019260009290919082900301818387803b15801562002adc57600080fd5b505af115801562002af1573d6000803e3d6000fd5b5050505050565b62001f7b82158262001f31565b8062002b7d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b6b9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162002b7d62002b80565b50565b600080516020620133258339815191523b1562002c78576040805160008051602062013325833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c13929160200162003199565b60408051601f198184030181529082905262002c2f91620031cc565b6000604051808303816000865af19150503d806000811462002c6e576040519150601f19603f3d011682016040523d82523d6000602084013e62002c73565b606091505b505050505b6007805461ff001916610100179055565b610120806200321c83390190565b610c72806200333c83390190565b6137238062003fae83390190565b6123c280620076d183390190565b6110db8062009a9383390190565b613043806200ab6e83390190565b6137d5806200dbb183390190565b611f9f806201138683390190565b6020808252825182820181905260009190848201906040850190845b8181101562002d3c5783516001600160a01b03168352928401929184019160010162002d15565b50909695505050505050565b60005b8381101562002d6557818101518382015260200162002d4b565b50506000910152565b6000815180845262002d8881602086016020860162002d48565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002e5257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002e3b57605f1989850301835262002e2884865162002d6e565b948e01949350918d019160010162002e09565b505050978a01979450509188019160010162002dc3565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002f0a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ef45783516001600160e01b0319168252928b019260019290920191908b019062002ec8565b50978a0197955050509187019160010162002e8a565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7257603f1988860301845262002f5f85835162002d6e565b9450928501929085019060010162002f40565b5092979650505050505050565b80516001600160a01b038116811462001eca57600080fd5b60006020828403121562002faa57600080fd5b62002fb58262002f7f565b9392505050565b60006020828403121562002fcf57600080fd5b8151801515811462002fb557600080fd5b60a0808252600d908201526c20b73730abb0b73730b132b4b760991b60c082015260e060208201819052600590820152641d5c9b1b1b60da1b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b600181811c908216806200305957607f821691505b6020821081036200307a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200309357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020808385031215620030da57600080fd5b825167ffffffffffffffff80821115620030f357600080fd5b818501915085601f8301126200310857600080fd5b8151818111156200311d576200311d6200309a565b8060051b604051601f19603f830116810181811085821117156200314557620031456200309a565b6040529182528482019250838101850191888311156200316457600080fd5b938501935b828510156200318d576200317d8562002f7f565b8452938501939285019262003169565b98975050505050505050565b6001600160e01b0319831681528151600090620031be81600485016020870162002d48565b919091016004019392505050565b60008251620031e081846020870162002d48565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002fb5608083018462002d6e56fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220bca9d002834ad6e6c909daebfb89c11fb147f28836d664e9fcaa3dd21cf97d7164736f6c63430008130033", - "sourceMap": "467:2268:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;512:239:113;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;757:1976:113:-;;;:::i;2157:141:59:-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5504:14:121;;5497:22;5479:41;;5467:2;5452:18;1819:584:52;5339:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;6072:51:121;3476:66:114;;3487:3;;;;;:23;;6045:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;512:239:113:-;555:13;:11;:13::i;:::-;588:2;;579:12;;-1:-1:-1;;;579:12:113;;-1:-1:-1;;;;;588:2:113;;;579:12;;;6072:51:121;-1:-1:-1;;;;;;;;;;;579:8:113;;;6045:18:121;;579:12:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;601:3:113;;650:4;;601:55;;-1:-1:-1;;;601:55:113;;-1:-1:-1;;;;;601:3:113;;;;-1:-1:-1;601:8:113;;-1:-1:-1;601:55:113;;:3;;639:1;;650:4;;;601:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;676:2:113;;667:12;;-1:-1:-1;;;667:12:113;;-1:-1:-1;;;;;676:2:113;;;667:12;;;6072:51:121;-1:-1:-1;;;;;;;;;;;667:8:113;-1:-1:-1;667:8:113;;-1:-1:-1;6045:18:121;;667:12:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;689:3:113;;738:4;;689:55;;-1:-1:-1;;;689:55:113;;-1:-1:-1;;;;;689:3:113;;;;-1:-1:-1;689:8:113;;-1:-1:-1;689:55:113;;:3;;727:1;;738:4;;;689:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:239::o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:1976:113;815:4;;;828:2;;815:16;;-1:-1:-1;;;815:16:113;;-1:-1:-1;;;;;828:2:113;;;815:16;;;6072:51:121;803:56:113;;815:4;;;;;:12;;6045:18:121;815:16:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;803:56;;;;;;;;;;;;;;;;;:11;:56::i;:::-;881:4;;;894:2;;881:16;;-1:-1:-1;;;881:16:113;;-1:-1:-1;;;;;894:2:113;;;881:16;;;6072:51:121;869:56:113;;881:4;;;;;:12;;6045:18:121;881:16:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;869:56;;;;;;;;;;;;;;;;;:11;:56::i;:::-;945:11;;936:21;;-1:-1:-1;;;936:21:113;;-1:-1:-1;;;;;945:11:113;;;936:21;;;6072:51:121;-1:-1:-1;;;;;;;;;;;936:8:113;;;6045:18:121;;936:21:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;967:32:113;;-1:-1:-1;;;967:32:113;;7831:2:121;967:32:113;;;7813:21:121;7870:2;7850:18;;;7843:30;-1:-1:-1;;;7889:18:121;;;7882:43;-1:-1:-1;;;;;;;;;;;967:15:113;-1:-1:-1;967:15:113;;-1:-1:-1;7942:18:121;;967:32:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1009:4:113;;;1023:11;;1009:26;;-1:-1:-1;;;1009:26:113;;-1:-1:-1;;;;;1023:11:113;;;1009:26;;;6072:51:121;1009:4:113;;;-1:-1:-1;1009:13:113;;-1:-1:-1;6045:18:121;1009:26:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1055:2:113;;1046:12;;-1:-1:-1;;;1046:12:113;;-1:-1:-1;;;;;1055:2:113;;;1046:12;;;6072:51:121;-1:-1:-1;;;;;;;;;;;1046:8:113;-1:-1:-1;1046:8:113;;-1:-1:-1;6045:18:121;;1046:12:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1068:31:113;;-1:-1:-1;;;1068:31:113;;8172:2:121;1068:31:113;;;8154:21:121;8211:2;8191:18;;;8184:30;-1:-1:-1;;;8230:18:121;;;8223:42;-1:-1:-1;;;;;;;;;;;1068:15:113;-1:-1:-1;1068:15:113;;-1:-1:-1;8282:18:121;;1068:31:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1109:4:113;;;1123:11;;1109:26;;-1:-1:-1;;;1109:26:113;;-1:-1:-1;;;;;1123:11:113;;;1109:26;;;6072:51:121;1109:4:113;;;-1:-1:-1;1109:13:113;;-1:-1:-1;6045:18:121;1109:26:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1157:4:113;;;1170:11;;1157:25;;-1:-1:-1;;;1157:25:113;;-1:-1:-1;;;;;1170:11:113;;;1157:25;;;6072:51:121;1145:55:113;;-1:-1:-1;1157:4:113;;;-1:-1:-1;1157:12:113;;6045:18:121;1157:25:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1145:55;;;;;;;;;;;;;-1:-1:-1;;;1145:55:113;;;:11;:55::i;:::-;1220:11;;1211:21;;-1:-1:-1;;;1211:21:113;;-1:-1:-1;;;;;1220:11:113;;;1211:21;;;6072:51:121;-1:-1:-1;;;;;;;;;;;1211:8:113;;;6045:18:121;;1211:21:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1242:3:113;;1291:4;;1242:55;;-1:-1:-1;;;1242:55:113;;-1:-1:-1;;;;;1242:3:113;;;;-1:-1:-1;1242:8:113;;-1:-1:-1;1242:55:113;;:3;;1280:1;;1291:4;;;1242:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1319:4:113;;;1333:11;;1319:26;;-1:-1:-1;;;1319:26:113;;-1:-1:-1;;;;;1333:11:113;;;1319:26;;;6072:51:121;1308:53:113;;-1:-1:-1;1319:4:113;;;-1:-1:-1;1319:13:113;;6045:18:121;1319:26:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:53;;;;;;;;;;;;;-1:-1:-1;;;1308:53:113;;;:10;:53::i;:::-;1383:4;;;1396:11;;1383:25;;-1:-1:-1;;;1383:25:113;;-1:-1:-1;;;;;1396:11:113;;;1383:25;;;6072:51:121;1371:56:113;;1383:4;;;;;:12;;6045:18:121;1383:25:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1371:56;;;;;;;;;;;;;-1:-1:-1;;;1371:56:113;;;:11;:56::i;:::-;1438:14;317:28:53;309:37;;-1:-1:-1;;;;;1455:11:113;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1538:44;;;-1:-1:-1;;;1538:44:113;;1512:15;1538:44;;;8712:51:121;;;8779:18;;;8772:30;;;;8838:2;8818:18;;;8811:30;-1:-1:-1;;;8857:18:121;;;8850:46;1438:30:113;;-1:-1:-1;1512:15:113;-1:-1:-1;;;;;;;;;;;1538:8:113;;;8913:19:121;;1538:44:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1593:28:113;;-1:-1:-1;1638:1:113;;-1:-1:-1;1624:16:113;;-1:-1:-1;1624:16:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1624:16:113;;1593:47;;1650:34;1712:14;1695:11;1707:1;1695:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1695:31:113;;;:14;;;;;;;;;:31;1753:11;;1736:14;;1753:11;;;1736;;1753;;1736:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1736:28:113;;;:14;;;;;;;;;:28;1791:2;;1774:14;;1791:2;;;1774:11;;1786:1;;1774:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1774:19:113;;;:14;;;;;;;;;:19;1820:2;;1803:14;;1820:2;;;1803:11;;1815:1;;1803:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1803:19:113;;;;:14;;;;;;;;;;:19;1833:32;;-1:-1:-1;;;1833:32:113;;;;;7813:21:121;;;;7870:2;7850:18;;;7843:30;-1:-1:-1;;;7889:18:121;;;7882:43;-1:-1:-1;;;;;;;;;;;1833:15:113;;;7942:18:121;;1833:32:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1884:2:113;;1875:12;;-1:-1:-1;;;1875:12:113;;-1:-1:-1;;;;;1884:2:113;;;1875:12;;;6072:51:121;-1:-1:-1;;;;;;;;;;;1875:8:113;-1:-1:-1;1875:8:113;;-1:-1:-1;6045:18:121;;1875:12:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:4:113;;:27;;-1:-1:-1;;;1897:27:113;;-1:-1:-1;;;;;1897:4:113;;;;-1:-1:-1;1897:14:113;;-1:-1:-1;1897:27:113;;1912:11;;1897:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:27:113;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1944:2:113;;1935:12;;-1:-1:-1;;;1935:12:113;;-1:-1:-1;;;;;1944:2:113;;;1935:12;;;6072:51:121;-1:-1:-1;;;;;;;;;;;1935:8:113;;;6045:18:121;;1935:12:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1977:4:113;;:27;;-1:-1:-1;;;1977:27:113;;-1:-1:-1;;;;;1977:4:113;;;;-1:-1:-1;1977:14:113;;-1:-1:-1;1977:27:113;;1992:11;;1977:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1977:27:113;;;;;;;;;;;;:::i;:::-;2026:4;;;2040:2;;2026:17;;-1:-1:-1;;;2026:17:113;;-1:-1:-1;;;;;2040:2:113;;;2026:17;;;6072:51:121;1957:47:113;;-1:-1:-1;2015:46:113;;2026:4;;;:13;;6045:18:121;2026:17:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2015:46;;;;;;;;;;;;;-1:-1:-1;;;2015:46:113;;;:10;:46::i;:::-;2082:4;;;2096:2;;2082:17;;-1:-1:-1;;;2082:17:113;;-1:-1:-1;;;;;2096:2:113;;;2082:17;;;6072:51:121;2071:46:113;;2082:4;;;;;:13;;6045:18:121;2082:17:113;5926:203:121;2071:46:113;2139:4;;;2152:2;;2139:16;;-1:-1:-1;;;2139:16:113;;-1:-1:-1;;;;;2152:2:113;;;2139:16;;;6072:51:121;2128:53:113;;2139:4;;;;;:12;;6045:18:121;2139:16:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2128:53;;;;;;;;;;;;;-1:-1:-1;;;2128:53:113;;;:10;:53::i;:::-;2202:4;;;2215:2;;2202:16;;-1:-1:-1;;;2202:16:113;;-1:-1:-1;;;;;2215:2:113;;;2202:16;;;6072:51:121;2191:44:113;;2202:4;;;;;:12;;6045:18:121;2202:16:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2191:44;;;;;;;;;;;;;-1:-1:-1;;;2191:44:113;;;:10;:44::i;:::-;2258:4;;;:28;;-1:-1:-1;;;2258:28:113;;-1:-1:-1;;;;;6090:32:121;;;2258:28:113;;;6072:51:121;2246:67:113;;2258:4;;;:12;;6045:18:121;2258:28:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2246:67;;;;;;;;;;;;;-1:-1:-1;;;2246:67:113;;;:11;:67::i;:::-;2334:4;;;2347:11;;2334:25;;-1:-1:-1;;;2334:25:113;;-1:-1:-1;;;;;2347:11:113;;;2334:25;;;6072:51:121;2323:61:113;;2334:4;;;;;:12;;6045:18:121;2334:25:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2323:61;;;;;;;;;;;;;-1:-1:-1;;;2323:61:113;;;:10;:61::i;:::-;2395:68;2438:1;-1:-1:-1;;;;;2406:34:113;:17;2424:1;2406:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2406:34:113;;2395:68;;;;;;;;;;;;;-1:-1:-1;;;2395:68:113;;;:10;:68::i;:::-;2508:11;;2484:20;;2473:74;;-1:-1:-1;;;;;2508:11:113;;2484:17;;2508:11;;2484:20;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2484:35:113;;2473:74;;;;;;;;;;;;;;;;;:10;:74::i;:::-;2592:2;;2568:20;;2557:63;;-1:-1:-1;;;;;2592:2:113;;2568:17;;2586:1;;2568:20;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2568:26:113;;2557:63;;;;;;;;;;;;;-1:-1:-1;;;2557:63:113;;;:10;:63::i;:::-;2665:2;;2641:20;;2630:63;;-1:-1:-1;;;;;2665:2:113;;2641:17;;2659:1;;2641:20;;;;;;:::i;2157:141:59:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;10515:51:121;;;-1:-1:-1;;;10582:18:121;;;10575:34;2196:43:52;;;;;;;;;10488:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;11964:51:121;;;;12031:18;;;12024:30;12090:1;12070:18;;;12063:29;-1:-1:-1;;;12108:18:121;;;12101:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;12156:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;12398:51:121;;;;12465:18;;;12458:30;12524:1;12504:18;;;12497:29;-1:-1:-1;;;12542:18:121;;;12535:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;12590:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;12832:51:121;;;;12899:18;;;12892:30;12958:1;12938:18;;;12931:29;-1:-1:-1;;;12976:18:121;;;12969:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;13024:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;13266:51:121;13333:18;;;13326:30;13392:2;13372:18;;;13365:30;-1:-1:-1;;;13411:18:121;;;13404:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;13463:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;6072:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;6045:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;13705:51:121;;;;13772:18;;;13765:30;13831:2;13811:18;;;13804:30;-1:-1:-1;;;13850:18:121;;;13843:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;13900:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;14142:51:121;;;;14209:18;;;14202:30;14268:1;14248:18;;;14241:29;-1:-1:-1;;;14286:18:121;;;14279:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;14335:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;6072:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;6045:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;14577:51:121;;;;14644:18;;;14637:30;14703:1;14683:18;;;14676:29;-1:-1:-1;;;14721:18:121;;;14714:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;14767:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;15009:51:121;;;;15076:18;;;15069:30;15135:2;15115:18;;;15108:30;-1:-1:-1;;;15154:18:121;;;15147:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;15204:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;6090:32:121;;;6072:51;;6060:2;6045:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;15446:51:121;;;;15513:18;;;15506:30;15572:2;15552:18;;;15545:30;-1:-1:-1;;;15591:18:121;;;15584:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;15646:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;6090:32:121;;;6072:51;;6060:2;6045:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;15888:51:121;;;;15955:18;;;15948:30;16014:2;15994:18;;;15987:30;-1:-1:-1;;;16033:18:121;;;16026:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;16088:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;6072:51:121;;;;2573:3:114;;;;:22;;6045:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;16405:15:121;;;16387:34;;16457:15;;;16452:2;16437:18;;16430:43;16509:15;;;16504:2;16489:18;;16482:43;16561:15;;;16556:2;16541:18;;16534:43;16336:3;16321:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;16800:51:121;;;;16867:18;;;16860:30;16926:2;16906:18;;;16899:30;-1:-1:-1;;;16945:18:121;;;16938:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;16998:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;17284:25:121;;;17345:2;17325:18;;;17318:30;17384:2;17364:18;;;17357:30;-1:-1:-1;;;17403:19:121;;;17396:42;17490:18;;;17483:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;17455:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:55:-;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;17730:2:121;17712:21;;;17769:2;17749:18;;;17742:30;17808:25;17803:2;17788:18;;17781:53;17866:2;17851:18;;17528:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;18082:51:121;;;-1:-1:-1;;;18149:18:121;;;18142:34;;;;2712:4:52;18192:18:121;;;18185:34;2489:11:52;;1671:64;2586:43;;18055:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5531:177::-;5610:13;;-1:-1:-1;;;;;5652:31:121;;5642:42;;5632:70;;5698:1;5695;5688:12;5713:208;5783:6;5836:2;5824:9;5815:7;5811:23;5807:32;5804:52;;;5852:1;5849;5842:12;5804:52;5875:40;5905:9;5875:40;:::i;:::-;5865:50;5713:208;-1:-1:-1;;;5713:208:121:o;6134:277::-;6201:6;6254:2;6242:9;6233:7;6229:23;6225:32;6222:52;;;6270:1;6267;6260:12;6222:52;6302:9;6296:16;6355:5;6348:13;6341:21;6334:5;6331:32;6321:60;;6377:1;6374;6367:12;6416:824;6819:3;6801:22;;;6860:2;6839:19;;;6832:31;-1:-1:-1;;;6894:3:121;6879:19;;6872:44;6954:3;6947:4;6932:20;;6925:33;;;6995:1;6974:19;;;6967:30;-1:-1:-1;;;7028:3:121;7013:19;;7006:36;7109:2;7094:18;;7087:34;;;;-1:-1:-1;7137:18:121;;7130:34;;;;-1:-1:-1;;;;;7201:32:121;-1:-1:-1;7180:19:121;;7173:61;7074:3;7059:19;;6416:824::o;7245:380::-;7324:1;7320:12;;;;7367;;;7388:61;;7442:4;7434:6;7430:17;7420:27;;7388:61;7495:2;7487:6;7484:14;7464:18;7461:38;7458:161;;7541:10;7536:3;7532:20;7529:1;7522:31;7576:4;7573:1;7566:15;7604:4;7601:1;7594:15;7458:161;;7245:380;;;:::o;8311:184::-;8381:6;8434:2;8422:9;8413:7;8409:23;8405:32;8402:52;;;8450:1;8447;8440:12;8402:52;-1:-1:-1;8473:16:121;;8311:184;-1:-1:-1;8311:184:121:o;8943:127::-;9004:10;8999:3;8995:20;8992:1;8985:31;9035:4;9032:1;9025:15;9059:4;9056:1;9049:15;9075:127;9136:10;9131:3;9127:20;9124:1;9117:31;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9207:1129;9302:6;9333:2;9376;9364:9;9355:7;9351:23;9347:32;9344:52;;;9392:1;9389;9382:12;9344:52;9425:9;9419:16;9454:18;9495:2;9487:6;9484:14;9481:34;;;9511:1;9508;9501:12;9481:34;9549:6;9538:9;9534:22;9524:32;;9594:7;9587:4;9583:2;9579:13;9575:27;9565:55;;9616:1;9613;9606:12;9565:55;9645:2;9639:9;9667:2;9663;9660:10;9657:36;;;9673:18;;:::i;:::-;9719:2;9716:1;9712:10;9751:2;9745:9;9814:2;9810:7;9805:2;9801;9797:11;9793:25;9785:6;9781:38;9869:6;9857:10;9854:22;9849:2;9837:10;9834:18;9831:46;9828:72;;;9880:18;;:::i;:::-;9916:2;9909:22;9966:18;;;10000:15;;;;-1:-1:-1;10042:11:121;;;10038:20;;;10070:19;;;10067:39;;;10102:1;10099;10092:12;10067:39;10126:11;;;;10146:159;10162:6;10157:3;10154:15;10146:159;;;10228:34;10258:3;10228:34;:::i;:::-;10216:47;;10179:12;;;;10283;;;;10146:159;;;10324:6;9207:1129;-1:-1:-1;;;;;;;;9207:1129:121:o;10620:384::-;-1:-1:-1;;;;;;10805:33:121;;10793:46;;10862:13;;10775:3;;10884:74;10862:13;10947:1;10938:11;;10931:4;10919:17;;10884:74;:::i;:::-;10978:16;;;;10996:1;10974:24;;10620:384;-1:-1:-1;;;10620:384:121:o;11009:287::-;11138:3;11176:6;11170:13;11192:66;11251:6;11246:3;11239:4;11231:6;11227:17;11192:66;:::i;:::-;11274:16;;;;;11009:287;-1:-1:-1;;11009:287:121:o;11301:446::-;11551:2;11540:9;11533:21;11590:1;11585:2;11574:9;11570:18;11563:29;-1:-1:-1;;;11623:2:121;11612:9;11608:18;11601:35;11674:3;11667:4;11656:9;11652:20;11645:33;11514:4;11695:46;11736:3;11725:9;11721:19;11713:6;11695:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b806385226c81146200017f578063916a17c614620001985780639572eff014620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000745565b60405162000130919062002cf9565b60405180910390f35b62000143620007a9565b60405162000130919062002d9c565b62000121620008f7565b6200012162000959565b62000170620009bb565b60405162000130919062002e62565b6200018962000aa5565b60405162000130919062002f19565b6200017062000b7f565b6200010b62000c69565b6200018962001cc8565b620001c062001da2565b604051901515815260200162000130565b6200012162001ecf565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b119062001f31565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b119062001f31565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b119062001f31565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b119062001f31565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b119062001f31565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d7919062002f97565b6001600160a01b031614604051806060016040528060288152602001620135266028913962001f31565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002fbc565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062001f31565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000540919062002f97565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062001f31565b565b6200058762001f7f565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b158015620005dc57600080fd5b505af1158015620005f1573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620006319260019260099291169060040162002fe0565b600060405180830381600087803b1580156200064c57600080fd5b505af115801562000661573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b158015620006ba57600080fd5b505af1158015620006cf573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf93506200070f9260019260099291169060040162002fe0565b600060405180830381600087803b1580156200072a57600080fd5b505af11580156200073f573d6000803e3d6000fd5b50505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200079f57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000780575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008d6578382906000526020600020018054620008429062003044565b80601f0160208091040260200160405190810160405280929190818152602001828054620008709062003044565b8015620008c15780601f106200089557610100808354040283529160200191620008c1565b820191906000526020600020905b815481529060010190602001808311620008a357829003601f168201915b50505050508152602001906001019062000820565b505050508152505081526020019060010190620007cd565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a8c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a4d5790505b50505050508152505081526020019060010190620009df565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462000aeb9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462000b199062003044565b801562000b6a5780601f1062000b3e5761010080835404028352916020019162000b6a565b820191906000526020600020905b81548152906001019060200180831162000b4c57829003601f168201915b50505050508152602001906001019062000ac9565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ee5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c5057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000c115790505b5050505050815250508152602001906001019062000ba3565b60248054602754604051630935e01b60e21b81526001600160a01b03918216600482015262000d209391909216916324d7806c91016020604051808303816000875af115801562000cbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce4919062002fbc565b6040518060400160405280601781526020017f4167656e74322041646d696e2062792064656661756c7400000000000000000081525062002af8565b60248054602854604051630935e01b60e21b81526001600160a01b03918216600482015262000dd79391909216916324d7806c91016020604051808303816000875af115801562000d75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9b919062002fbc565b6040518060400160405280601781526020017f4167656e74332041646d696e2062792064656661756c7400000000000000000081525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b15801562000e2c57600080fd5b505af115801562000e41573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c4e6f7420616e2061646d696e2160981b604482015260008051602062013506833981519152925063f28dceb39150606401600060405180830381600087803b15801562000eab57600080fd5b505af115801562000ec0573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b15801562000f0d57600080fd5b505af115801562000f22573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f7b57600080fd5b505af115801562000f90573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260008051602062013506833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ff957600080fd5b505af11580156200100e573d6000803e3d6000fd5b505060248054602954604051637048027560e01b81526001600160a01b039182166004820152911693506370480275925001600060405180830381600087803b1580156200105b57600080fd5b505af115801562001070573d6000803e3d6000fd5b505060248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620011199550911692506324d7806c91016020604051808303816000875af1158015620010c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010ed919062002fbc565b6040518060400160405280600d81526020016c61646d696e20736f6d65686f7760981b81525062002af8565b60295460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf9350620011c39260019260099291169060040162002fe0565b600060405180830381600087803b158015620011de57600080fd5b505af1158015620011f3573d6000803e3d6000fd5b50506024805460295460405163288c314960e21b81526001600160a01b0391821660048201526200129895509116925063a230c5249101602060405180830381865afa15801562001248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126e919062002fbc565b6040518060400160405280600b81526020016a36b0b2329036b2b6b132b960a91b81525062001f31565b60248054602954604051630935e01b60e21b81526001600160a01b039182166004820152620013409391909216916324d7806c91016020604051808303816000875af1158015620012ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001313919062002fbc565b6040518060400160405280600e81526020016d30b236b4b71039b7b6b2b437bb9960911b81525062002af8565b60007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620013a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013cc919062003080565b604080516318caf8e360e31b815265e8d4a5100100600482018190526024820192909252601060448201526f30b3b2b73a103737ba1036b2b6b132b960811b606482015291925090600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200144957600080fd5b505af11580156200145e573d6000803e3d6000fd5b5060009250600491506200146f9050565b60405190808252806020026020018201604052801562001499578160200160208202803683370190505b50905060608282600081518110620014b557620014b5620030b0565b6001600160a01b039283166020918202929092010152602954835191169083906001908110620014e957620014e9620030b0565b6001600160a01b0392831660209182029290920101526027548351911690839060029081106200151d576200151d620030b0565b6001600160a01b039283166020918202929092010152602854835191169083906003908110620015515762001551620030b0565b6001600160a01b039290921660209283029190910182015260405163f28dceb360e01b81526004810191909152600d60248201526c4e6f7420616e2061646d696e2160981b6044820152600080516020620135068339815191529063f28dceb390606401600060405180830381600087803b158015620015d057600080fd5b505af1158015620015e5573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062013506833981519152925063ca669fa79150602401600060405180830381600087803b1580156200163e57600080fd5b505af115801562001653573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200168990859060040162002cf9565b6000604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016d39190810190620030c6565b5060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135068339815191529063ca669fa790602401600060405180830381600087803b1580156200172957600080fd5b505af11580156200173e573d6000803e3d6000fd5b505060245460405163271537d960e21b81526001600160a01b039091169250639c54df6491506200177490859060040162002cf9565b6000604051808303816000875af115801562001794573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017be9190810190620030c6565b6024805460275460405163288c314960e21b81526001600160a01b039182166004820152939450620018659391169163a230c52491015b602060405180830381865afa15801562001813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001839919062002fbc565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062001f31565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620018a093919092169163a230c5249101620017f5565b60248054602854604051630935e01b60e21b81526001600160a01b0391821660048201526200194f9391909216916324d7806c91016020604051808303816000875af1158015620018f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200191b919062002fbc565b604051806040016040528060158152602001742099903737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60248054602754604051630935e01b60e21b81526001600160a01b039182166004820152620019f59391909216916324d7806c91016020604051808303816000875af1158015620019a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019ca919062002fbc565b6040518060400160405280600c81526020016b2099103737ba1030b236b4b760a11b81525062001f31565b60248054604051630935e01b60e21b81526001600160a01b03868116600483015262001aa0939216916324d7806c91016020604051808303816000875af115801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062002fbc565b6040518060400160405280601681526020017506e6f74206d656d6265722073686f756c6420736b69760541b81525062002af8565b60248054602954604051630935e01b60e21b81526001600160a01b03918216600482015262001b4e9391909216916324d7806c91016020604051808303816000875af115801562001af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1b919062002fbc565b6040518060400160405280601481526020017336b2b6b132b910313aba103737ba1030b236b4b760611b81525062001f31565b62001bb660006001600160a01b03168260008151811062001b735762001b73620030b0565b60200260200101516001600160a01b031614604051806040016040528060128152602001711b9bdb8b5b595b58995c881cdada5c1c195960721b81525062001f31565b602954815162001c2e916001600160a01b0316908390600190811062001be05762001be0620030b0565b60200260200101516001600160a01b0316146040518060400160405280601781526020017f6f757473696465722061646465642061732061646d696e00000000000000000081525062001f31565b602754815162001c9e916001600160a01b0316908390600290811062001c585762001c58620030b0565b60200260200101516001600160a01b031614604051806040016040528060158152602001743099103737ba1030b23232b21030b99030b236b4b760591b81525062001f31565b60285481516200073f916001600160a01b0316908390600390811062001c585762001c58620030b0565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ee57838290600052602060002001805462001d0e9062003044565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3c9062003044565b801562001d8d5780601f1062001d615761010080835404028352916020019162001d8d565b820191906000526020600020905b81548152906001019060200180831162001d6f57829003601f168201915b50505050508152602001906001019062001cec565b600754600090610100900460ff161562001dc55750600754610100900460ff1690565b6000600080516020620135068339815191523b1562001eca576040805160008051602062013506833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001e4c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003199565b60408051601f198184030181529082905262001e6891620031cc565b6000604051808303816000865af19150503d806000811462001ea7576040519150601f19603f3d011682016040523d82523d6000602084013e62001eac565b606091505b509150508080602001905181019062001ec6919062002fbc565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200079f576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000780575050505050905090565b8162001f7b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001f689190620031ea565b60405180910390a162001f7b8262002b05565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200201057600080fd5b505af115801562002025573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062013506833981519152925063c657c7189150608401600060405180830381600087803b158015620020ba57600080fd5b505af1158015620020cf573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062013506833981519152925063c657c7189150608401600060405180830381600087803b1580156200216457600080fd5b505af115801562002179573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200221a57600080fd5b505af11580156200222f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201350683398151915292506306447d569150602401600060405180830381600087803b1580156200228857600080fd5b505af11580156200229d573d6000803e3d6000fd5b50505050604051620022af9062002c89565b604051809103906000f080158015620022cc573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200235657600080fd5b505af11580156200236b573d6000803e3d6000fd5b505050506040516200237d9062002c97565b604051809103906000f0801580156200239a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200242357600080fd5b505af115801562002438573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b50505050604051620024ad9062002ca5565b604051809103906000f080158015620024ca573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200255057600080fd5b505af115801562002565573d6000803e3d6000fd5b50505050604051620025779062002cb3565b604051809103906000f08015801562002594573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200261e57600080fd5b505af115801562002633573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062002654915062002cc1565b6001600160a01b039091168152602001604051809103906000f08015801562002681573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200271057600080fd5b505af115801562002725573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062002746915062002ccf565b6001600160a01b039091168152602001604051809103906000f08015801562002773573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b1580156200280257600080fd5b505af115801562002817573d6000803e3d6000fd5b50505050604051620028299062002cdd565b604051809103906000f08015801562002846573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620028a657600080fd5b505af1158015620028bb573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b039384169450918316921690620028ec9062002ceb565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002931573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620135068339815191529063c657c71890608401600060405180830381600087803b158015620029be57600080fd5b505af1158015620029d3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562002a4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a75919062002f97565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062013506833981519152916390c5013b9160048082019260009290919082900301818387803b15801562002adc57600080fd5b505af115801562002af1573d6000803e3d6000fd5b5050505050565b62001f7b82158262001f31565b8062002b7d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162002b6b9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162002b7d62002b80565b50565b600080516020620135068339815191523b1562002c78576040805160008051602062013506833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c13929160200162003199565b60408051601f198184030181529082905262002c2f91620031cc565b6000604051808303816000865af19150503d806000811462002c6e576040519150601f19603f3d011682016040523d82523d6000602084013e62002c73565b606091505b505050505b6007805461ff001916610100179055565b610120806200321c83390190565b610c72806200333c83390190565b6137238062003fae83390190565b6125a380620076d183390190565b6110db8062009c7483390190565b613043806200ad4f83390190565b6137d5806200dd9283390190565b611f9f806201156783390190565b6020808252825182820181905260009190848201906040850190845b8181101562002d3c5783516001600160a01b03168352928401929184019160010162002d15565b50909695505050505050565b60005b8381101562002d6557818101518382015260200162002d4b565b50506000910152565b6000815180845262002d8881602086016020860162002d48565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002e5257603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002e3b57605f1989850301835262002e2884865162002d6e565b948e01949350918d019160010162002e09565b505050978a01979450509188019160010162002dc3565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002f0a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ef45783516001600160e01b0319168252928b019260019290920191908b019062002ec8565b50978a0197955050509187019160010162002e8a565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7257603f1988860301845262002f5f85835162002d6e565b9450928501929085019060010162002f40565b5092979650505050505050565b80516001600160a01b038116811462001eca57600080fd5b60006020828403121562002faa57600080fd5b62002fb58262002f7f565b9392505050565b60006020828403121562002fcf57600080fd5b8151801515811462002fb557600080fd5b60a0808252600d908201526c20b73730abb0b73730b132b4b760991b60c082015260e060208201819052600590820152641d5c9b1b1b60da1b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b600181811c908216806200305957607f821691505b6020821081036200307a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200309357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020808385031215620030da57600080fd5b825167ffffffffffffffff80821115620030f357600080fd5b818501915085601f8301126200310857600080fd5b8151818111156200311d576200311d6200309a565b8060051b604051601f19603f830116810181811085821117156200314557620031456200309a565b6040529182528482019250838101850191888311156200316457600080fd5b938501935b828510156200318d576200317d8562002f7f565b8452938501939285019262003169565b98975050505050505050565b6001600160e01b0319831681528151600090620031be81600485016020870162002d48565b919091016004019392505050565b60008251620031e081846020870162002d48565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002fb5608083018462002d6e56fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122041a83d786bf3491ce63d8d2444bd75ee2916ec36186aa84f64c1dfe3aa39b27164736f6c63430008130033", + "sourceMap": "467:2268:126:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;512:239:126;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;757:1976:126:-;;;:::i;2157:141:72:-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5504:14:134;;5497:22;5479:41;;5467:2;5452:18;1819:584:65;5339:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;6072:51:134;3476:66:127;;3487:3;;;;;:23;;6045:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;512:239:126:-;555:13;:11;:13::i;:::-;588:2;;579:12;;-1:-1:-1;;;579:12:126;;-1:-1:-1;;;;;588:2:126;;;579:12;;;6072:51:134;-1:-1:-1;;;;;;;;;;;579:8:126;;;6045:18:134;;579:12:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;601:3:126;;650:4;;601:55;;-1:-1:-1;;;601:55:126;;-1:-1:-1;;;;;601:3:126;;;;-1:-1:-1;601:8:126;;-1:-1:-1;601:55:126;;:3;;639:1;;650:4;;;601:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;676:2:126;;667:12;;-1:-1:-1;;;667:12:126;;-1:-1:-1;;;;;676:2:126;;;667:12;;;6072:51:134;-1:-1:-1;;;;;;;;;;;667:8:126;-1:-1:-1;667:8:126;;-1:-1:-1;6045:18:134;;667:12:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;689:3:126;;738:4;;689:55;;-1:-1:-1;;;689:55:126;;-1:-1:-1;;;;;689:3:126;;;;-1:-1:-1;689:8:126;;-1:-1:-1;689:55:126;;:3;;727:1;;738:4;;;689:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:239::o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:1976:126;815:4;;;828:2;;815:16;;-1:-1:-1;;;815:16:126;;-1:-1:-1;;;;;828:2:126;;;815:16;;;6072:51:134;803:56:126;;815:4;;;;;:12;;6045:18:134;815:16:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;803:56;;;;;;;;;;;;;;;;;:11;:56::i;:::-;881:4;;;894:2;;881:16;;-1:-1:-1;;;881:16:126;;-1:-1:-1;;;;;894:2:126;;;881:16;;;6072:51:134;869:56:126;;881:4;;;;;:12;;6045:18:134;881:16:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;869:56;;;;;;;;;;;;;;;;;:11;:56::i;:::-;945:11;;936:21;;-1:-1:-1;;;936:21:126;;-1:-1:-1;;;;;945:11:126;;;936:21;;;6072:51:134;-1:-1:-1;;;;;;;;;;;936:8:126;;;6045:18:134;;936:21:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;967:32:126;;-1:-1:-1;;;967:32:126;;7831:2:134;967:32:126;;;7813:21:134;7870:2;7850:18;;;7843:30;-1:-1:-1;;;7889:18:134;;;7882:43;-1:-1:-1;;;;;;;;;;;967:15:126;-1:-1:-1;967:15:126;;-1:-1:-1;7942:18:134;;967:32:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1009:4:126;;;1023:11;;1009:26;;-1:-1:-1;;;1009:26:126;;-1:-1:-1;;;;;1023:11:126;;;1009:26;;;6072:51:134;1009:4:126;;;-1:-1:-1;1009:13:126;;-1:-1:-1;6045:18:134;1009:26:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1055:2:126;;1046:12;;-1:-1:-1;;;1046:12:126;;-1:-1:-1;;;;;1055:2:126;;;1046:12;;;6072:51:134;-1:-1:-1;;;;;;;;;;;1046:8:126;-1:-1:-1;1046:8:126;;-1:-1:-1;6045:18:134;;1046:12:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1068:31:126;;-1:-1:-1;;;1068:31:126;;8172:2:134;1068:31:126;;;8154:21:134;8211:2;8191:18;;;8184:30;-1:-1:-1;;;8230:18:134;;;8223:42;-1:-1:-1;;;;;;;;;;;1068:15:126;-1:-1:-1;1068:15:126;;-1:-1:-1;8282:18:134;;1068:31:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1109:4:126;;;1123:11;;1109:26;;-1:-1:-1;;;1109:26:126;;-1:-1:-1;;;;;1123:11:126;;;1109:26;;;6072:51:134;1109:4:126;;;-1:-1:-1;1109:13:126;;-1:-1:-1;6045:18:134;1109:26:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1157:4:126;;;1170:11;;1157:25;;-1:-1:-1;;;1157:25:126;;-1:-1:-1;;;;;1170:11:126;;;1157:25;;;6072:51:134;1145:55:126;;-1:-1:-1;1157:4:126;;;-1:-1:-1;1157:12:126;;6045:18:134;1157:25:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1145:55;;;;;;;;;;;;;-1:-1:-1;;;1145:55:126;;;:11;:55::i;:::-;1220:11;;1211:21;;-1:-1:-1;;;1211:21:126;;-1:-1:-1;;;;;1220:11:126;;;1211:21;;;6072:51:134;-1:-1:-1;;;;;;;;;;;1211:8:126;;;6045:18:134;;1211:21:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1242:3:126;;1291:4;;1242:55;;-1:-1:-1;;;1242:55:126;;-1:-1:-1;;;;;1242:3:126;;;;-1:-1:-1;1242:8:126;;-1:-1:-1;1242:55:126;;:3;;1280:1;;1291:4;;;1242:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1319:4:126;;;1333:11;;1319:26;;-1:-1:-1;;;1319:26:126;;-1:-1:-1;;;;;1333:11:126;;;1319:26;;;6072:51:134;1308:53:126;;-1:-1:-1;1319:4:126;;;-1:-1:-1;1319:13:126;;6045:18:134;1319:26:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:53;;;;;;;;;;;;;-1:-1:-1;;;1308:53:126;;;:10;:53::i;:::-;1383:4;;;1396:11;;1383:25;;-1:-1:-1;;;1383:25:126;;-1:-1:-1;;;;;1396:11:126;;;1383:25;;;6072:51:134;1371:56:126;;1383:4;;;;;:12;;6045:18:134;1383:25:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1371:56;;;;;;;;;;;;;-1:-1:-1;;;1371:56:126;;;:11;:56::i;:::-;1438:14;317:28:66;309:37;;-1:-1:-1;;;;;1455:11:126;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1538:44;;;-1:-1:-1;;;1538:44:126;;1512:15;1538:44;;;8712:51:134;;;8779:18;;;8772:30;;;;8838:2;8818:18;;;8811:30;-1:-1:-1;;;8857:18:134;;;8850:46;1438:30:126;;-1:-1:-1;1512:15:126;-1:-1:-1;;;;;;;;;;;1538:8:126;;;8913:19:134;;1538:44:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1593:28:126;;-1:-1:-1;1638:1:126;;-1:-1:-1;1624:16:126;;-1:-1:-1;1624:16:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1624:16:126;;1593:47;;1650:34;1712:14;1695:11;1707:1;1695:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1695:31:126;;;:14;;;;;;;;;:31;1753:11;;1736:14;;1753:11;;;1736;;1753;;1736:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1736:28:126;;;:14;;;;;;;;;:28;1791:2;;1774:14;;1791:2;;;1774:11;;1786:1;;1774:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1774:19:126;;;:14;;;;;;;;;:19;1820:2;;1803:14;;1820:2;;;1803:11;;1815:1;;1803:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1803:19:126;;;;:14;;;;;;;;;;:19;1833:32;;-1:-1:-1;;;1833:32:126;;;;;7813:21:134;;;;7870:2;7850:18;;;7843:30;-1:-1:-1;;;7889:18:134;;;7882:43;-1:-1:-1;;;;;;;;;;;1833:15:126;;;7942:18:134;;1833:32:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1884:2:126;;1875:12;;-1:-1:-1;;;1875:12:126;;-1:-1:-1;;;;;1884:2:126;;;1875:12;;;6072:51:134;-1:-1:-1;;;;;;;;;;;1875:8:126;-1:-1:-1;1875:8:126;;-1:-1:-1;6045:18:134;;1875:12:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:4:126;;:27;;-1:-1:-1;;;1897:27:126;;-1:-1:-1;;;;;1897:4:126;;;;-1:-1:-1;1897:14:126;;-1:-1:-1;1897:27:126;;1912:11;;1897:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:27:126;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1944:2:126;;1935:12;;-1:-1:-1;;;1935:12:126;;-1:-1:-1;;;;;1944:2:126;;;1935:12;;;6072:51:134;-1:-1:-1;;;;;;;;;;;1935:8:126;;;6045:18:134;;1935:12:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1977:4:126;;:27;;-1:-1:-1;;;1977:27:126;;-1:-1:-1;;;;;1977:4:126;;;;-1:-1:-1;1977:14:126;;-1:-1:-1;1977:27:126;;1992:11;;1977:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1977:27:126;;;;;;;;;;;;:::i;:::-;2026:4;;;2040:2;;2026:17;;-1:-1:-1;;;2026:17:126;;-1:-1:-1;;;;;2040:2:126;;;2026:17;;;6072:51:134;1957:47:126;;-1:-1:-1;2015:46:126;;2026:4;;;:13;;6045:18:134;2026:17:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2015:46;;;;;;;;;;;;;-1:-1:-1;;;2015:46:126;;;:10;:46::i;:::-;2082:4;;;2096:2;;2082:17;;-1:-1:-1;;;2082:17:126;;-1:-1:-1;;;;;2096:2:126;;;2082:17;;;6072:51:134;2071:46:126;;2082:4;;;;;:13;;6045:18:134;2082:17:126;5926:203:134;2071:46:126;2139:4;;;2152:2;;2139:16;;-1:-1:-1;;;2139:16:126;;-1:-1:-1;;;;;2152:2:126;;;2139:16;;;6072:51:134;2128:53:126;;2139:4;;;;;:12;;6045:18:134;2139:16:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2128:53;;;;;;;;;;;;;-1:-1:-1;;;2128:53:126;;;:10;:53::i;:::-;2202:4;;;2215:2;;2202:16;;-1:-1:-1;;;2202:16:126;;-1:-1:-1;;;;;2215:2:126;;;2202:16;;;6072:51:134;2191:44:126;;2202:4;;;;;:12;;6045:18:134;2202:16:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2191:44;;;;;;;;;;;;;-1:-1:-1;;;2191:44:126;;;:10;:44::i;:::-;2258:4;;;:28;;-1:-1:-1;;;2258:28:126;;-1:-1:-1;;;;;6090:32:134;;;2258:28:126;;;6072:51:134;2246:67:126;;2258:4;;;:12;;6045:18:134;2258:28:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2246:67;;;;;;;;;;;;;-1:-1:-1;;;2246:67:126;;;:11;:67::i;:::-;2334:4;;;2347:11;;2334:25;;-1:-1:-1;;;2334:25:126;;-1:-1:-1;;;;;2347:11:126;;;2334:25;;;6072:51:134;2323:61:126;;2334:4;;;;;:12;;6045:18:134;2334:25:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2323:61;;;;;;;;;;;;;-1:-1:-1;;;2323:61:126;;;:10;:61::i;:::-;2395:68;2438:1;-1:-1:-1;;;;;2406:34:126;:17;2424:1;2406:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2406:34:126;;2395:68;;;;;;;;;;;;;-1:-1:-1;;;2395:68:126;;;:10;:68::i;:::-;2508:11;;2484:20;;2473:74;;-1:-1:-1;;;;;2508:11:126;;2484:17;;2508:11;;2484:20;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2484:35:126;;2473:74;;;;;;;;;;;;;;;;;:10;:74::i;:::-;2592:2;;2568:20;;2557:63;;-1:-1:-1;;;;;2592:2:126;;2568:17;;2586:1;;2568:20;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2568:26:126;;2557:63;;;;;;;;;;;;;-1:-1:-1;;;2557:63:126;;;:10;:63::i;:::-;2665:2;;2641:20;;2630:63;;-1:-1:-1;;;;;2665:2:126;;2641:17;;2659:1;;2641:20;;;;;;:::i;2157:141:72:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;10515:51:134;;;-1:-1:-1;;;10582:18:134;;;10575:34;2196:43:65;;;;;;;;;10488:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;11964:51:134;;;;12031:18;;;12024:30;12090:1;12070:18;;;12063:29;-1:-1:-1;;;12108:18:134;;;12101:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;12156:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;12398:51:134;;;;12465:18;;;12458:30;12524:1;12504:18;;;12497:29;-1:-1:-1;;;12542:18:134;;;12535:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;12590:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;12832:51:134;;;;12899:18;;;12892:30;12958:1;12938:18;;;12931:29;-1:-1:-1;;;12976:18:134;;;12969:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;13024:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;13266:51:134;13333:18;;;13326:30;13392:2;13372:18;;;13365:30;-1:-1:-1;;;13411:18:134;;;13404:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;13463:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;6072:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;6045:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;13705:51:134;;;;13772:18;;;13765:30;13831:2;13811:18;;;13804:30;-1:-1:-1;;;13850:18:134;;;13843:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;13900:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;14142:51:134;;;;14209:18;;;14202:30;14268:1;14248:18;;;14241:29;-1:-1:-1;;;14286:18:134;;;14279:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;14335:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;6072:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;6045:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;14577:51:134;;;;14644:18;;;14637:30;14703:1;14683:18;;;14676:29;-1:-1:-1;;;14721:18:134;;;14714:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;14767:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;15009:51:134;;;;15076:18;;;15069:30;15135:2;15115:18;;;15108:30;-1:-1:-1;;;15154:18:134;;;15147:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;15204:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;6090:32:134;;;6072:51;;6060:2;6045:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;15446:51:134;;;;15513:18;;;15506:30;15572:2;15552:18;;;15545:30;-1:-1:-1;;;15591:18:134;;;15584:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;15646:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;6090:32:134;;;6072:51;;6060:2;6045:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;15888:51:134;;;;15955:18;;;15948:30;16014:2;15994:18;;;15987:30;-1:-1:-1;;;16033:18:134;;;16026:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;16088:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;6072:51:134;;;;2573:3:127;;;;:22;;6045:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;16405:15:134;;;16387:34;;16457:15;;;16452:2;16437:18;;16430:43;16509:15;;;16504:2;16489:18;;16482:43;16561:15;;;16556:2;16541:18;;16534:43;16336:3;16321:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;16800:51:134;;;;16867:18;;;16860:30;16926:2;16906:18;;;16899:30;-1:-1:-1;;;16945:18:134;;;16938:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;16998:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;17284:25:134;;;17345:2;17325:18;;;17318:30;17384:2;17364:18;;;17357:30;-1:-1:-1;;;17403:19:134;;;17396:42;17490:18;;;17483:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;17455:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:68:-;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;17730:2:134;17712:21;;;17769:2;17749:18;;;17742:30;17808:25;17803:2;17788:18;;17781:53;17866:2;17851:18;;17528:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;18082:51:134;;;-1:-1:-1;;;18149:18:134;;;18142:34;;;;2712:4:65;18192:18:134;;;18185:34;2489:11:65;;1671:64;2586:43;;18055:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5531:177::-;5610:13;;-1:-1:-1;;;;;5652:31:134;;5642:42;;5632:70;;5698:1;5695;5688:12;5713:208;5783:6;5836:2;5824:9;5815:7;5811:23;5807:32;5804:52;;;5852:1;5849;5842:12;5804:52;5875:40;5905:9;5875:40;:::i;:::-;5865:50;5713:208;-1:-1:-1;;;5713:208:134:o;6134:277::-;6201:6;6254:2;6242:9;6233:7;6229:23;6225:32;6222:52;;;6270:1;6267;6260:12;6222:52;6302:9;6296:16;6355:5;6348:13;6341:21;6334:5;6331:32;6321:60;;6377:1;6374;6367:12;6416:824;6819:3;6801:22;;;6860:2;6839:19;;;6832:31;-1:-1:-1;;;6894:3:134;6879:19;;6872:44;6954:3;6947:4;6932:20;;6925:33;;;6995:1;6974:19;;;6967:30;-1:-1:-1;;;7028:3:134;7013:19;;7006:36;7109:2;7094:18;;7087:34;;;;-1:-1:-1;7137:18:134;;7130:34;;;;-1:-1:-1;;;;;7201:32:134;-1:-1:-1;7180:19:134;;7173:61;7074:3;7059:19;;6416:824::o;7245:380::-;7324:1;7320:12;;;;7367;;;7388:61;;7442:4;7434:6;7430:17;7420:27;;7388:61;7495:2;7487:6;7484:14;7464:18;7461:38;7458:161;;7541:10;7536:3;7532:20;7529:1;7522:31;7576:4;7573:1;7566:15;7604:4;7601:1;7594:15;7458:161;;7245:380;;;:::o;8311:184::-;8381:6;8434:2;8422:9;8413:7;8409:23;8405:32;8402:52;;;8450:1;8447;8440:12;8402:52;-1:-1:-1;8473:16:134;;8311:184;-1:-1:-1;8311:184:134:o;8943:127::-;9004:10;8999:3;8995:20;8992:1;8985:31;9035:4;9032:1;9025:15;9059:4;9056:1;9049:15;9075:127;9136:10;9131:3;9127:20;9124:1;9117:31;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9207:1129;9302:6;9333:2;9376;9364:9;9355:7;9351:23;9347:32;9344:52;;;9392:1;9389;9382:12;9344:52;9425:9;9419:16;9454:18;9495:2;9487:6;9484:14;9481:34;;;9511:1;9508;9501:12;9481:34;9549:6;9538:9;9534:22;9524:32;;9594:7;9587:4;9583:2;9579:13;9575:27;9565:55;;9616:1;9613;9606:12;9565:55;9645:2;9639:9;9667:2;9663;9660:10;9657:36;;;9673:18;;:::i;:::-;9719:2;9716:1;9712:10;9751:2;9745:9;9814:2;9810:7;9805:2;9801;9797:11;9793:25;9785:6;9781:38;9869:6;9857:10;9854:22;9849:2;9837:10;9834:18;9831:46;9828:72;;;9880:18;;:::i;:::-;9916:2;9909:22;9966:18;;;10000:15;;;;-1:-1:-1;10042:11:134;;;10038:20;;;10070:19;;;10067:39;;;10102:1;10099;10092:12;10067:39;10126:11;;;;10146:159;10162:6;10157:3;10154:15;10146:159;;;10228:34;10258:3;10228:34;:::i;:::-;10216:47;;10179:12;;;;10283;;;;10146:159;;;10324:6;9207:1129;-1:-1:-1;;;;;;;;9207:1129:134:o;10620:384::-;-1:-1:-1;;;;;;10805:33:134;;10793:46;;10862:13;;10775:3;;10884:74;10862:13;10947:1;10938:11;;10931:4;10919:17;;10884:74;:::i;:::-;10978:16;;;;10996:1;10974:24;;10620:384;-1:-1:-1;;;10620:384:134:o;11009:287::-;11138:3;11176:6;11170:13;11192:66;11251:6;11246:3;11239:4;11231:6;11227:17;11192:66;:::i;:::-;11274:16;;;;;11009:287;-1:-1:-1;;11009:287:134:o;11301:446::-;11551:2;11540:9;11533:21;11590:1;11585:2;11574:9;11570:18;11563:29;-1:-1:-1;;;11623:2:134;11612:9;11608:18;11601:35;11674:3;11667:4;11656:9;11652:20;11645:33;11514:4;11695:46;11736:3;11725:9;11721:19;11713:6;11695:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -591,7 +591,7 @@ "testAreDeployedContracts()": "00036032", "testSetupAdminAdd()": "9572eff0" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetupAdminAdd\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/BatchAdminAdd.t.sol\":\"MembershipSets\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/quests/QuestsModule.sol\":{\"keccak256\":\"0xa4ac7312158965b3017c398895f754e5b8c8694b5611cc1121a7e961f5a1fd31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d9f35617c7657dcf06cdd732a16fade644a2f4603448b45460dad7e6a0d0458\",\"dweb:/ipfs/QmbkbTn71NKhgeE7pNzFtvtoHMpTxp3rZ84XkjkfaPjSgp\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/onboarding/QuestOnboardingPlugin.sol\":{\"keccak256\":\"0xbf9edbc2de07394a121b867dd3a0dc9ba1a527b9b44b07a948bceec415bda9ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af33e911246451057e3ecb43601d4bdecb1943e436b95ef6b7569e4c91c97258\",\"dweb:/ipfs/QmahBMB1VyLLHnR7BGPsMY3XGEor5nsREsjJK5L6XfCMFd\"]},\"contracts/plugins/quests/QuestPlugin.sol\":{\"keccak256\":\"0xd8c774ced9e28d3021133da06b23c82680bf81eafd2ebddd2737c23d7738a5f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://894fc9884e3140270342885c4a6e1fcd2e167322f07f695dcd7b6aced0674435\",\"dweb:/ipfs/QmTTzjm1hBU2wbC2HopBXynPVav1tbzbdqF8RyD2pbqwAn\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol\":{\"keccak256\":\"0xe1629227456959c713bc4f50cfbe6b433ec18d4bfc61777670a2d883d7d21323\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d34b0ae318417551e8e855129d93e2f430645b8e0c2ee2d552e1f9dc169292\",\"dweb:/ipfs/QmVqp1U5P13LEEMsrRooeAsv2C8cLpUPzzXt9YcEmEuDLa\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/BatchAdminAdd.t.sol\":{\"keccak256\":\"0x0e0f28aa8debddf51f5ce987b962d11a4575ce8c1f527a554275855886135c5a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9877f69f255829f1fc7310a3377f56c98e6ba7108fb1c0392be6bff7e7cb9890\",\"dweb:/ipfs/QmQ8dt39vJVyC2pvsBsuRRznMx24pt5ZrTeyieRpRdsC8u\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetupAdminAdd\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/BatchAdminAdd.t.sol\":\"MembershipSets\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/quests/QuestsModule.sol\":{\"keccak256\":\"0xa4ac7312158965b3017c398895f754e5b8c8694b5611cc1121a7e961f5a1fd31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d9f35617c7657dcf06cdd732a16fade644a2f4603448b45460dad7e6a0d0458\",\"dweb:/ipfs/QmbkbTn71NKhgeE7pNzFtvtoHMpTxp3rZ84XkjkfaPjSgp\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/onboarding/QuestOnboardingPlugin.sol\":{\"keccak256\":\"0xbf9edbc2de07394a121b867dd3a0dc9ba1a527b9b44b07a948bceec415bda9ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af33e911246451057e3ecb43601d4bdecb1943e436b95ef6b7569e4c91c97258\",\"dweb:/ipfs/QmahBMB1VyLLHnR7BGPsMY3XGEor5nsREsjJK5L6XfCMFd\"]},\"contracts/plugins/quests/QuestPlugin.sol\":{\"keccak256\":\"0xd8c774ced9e28d3021133da06b23c82680bf81eafd2ebddd2737c23d7738a5f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://894fc9884e3140270342885c4a6e1fcd2e167322f07f695dcd7b6aced0674435\",\"dweb:/ipfs/QmTTzjm1hBU2wbC2HopBXynPVav1tbzbdqF8RyD2pbqwAn\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol\":{\"keccak256\":\"0xe1629227456959c713bc4f50cfbe6b433ec18d4bfc61777670a2d883d7d21323\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d34b0ae318417551e8e855129d93e2f430645b8e0c2ee2d552e1f9dc169292\",\"dweb:/ipfs/QmVqp1U5P13LEEMsrRooeAsv2C8cLpUPzzXt9YcEmEuDLa\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/BatchAdminAdd.t.sol\":{\"keccak256\":\"0x0e0f28aa8debddf51f5ce987b962d11a4575ce8c1f527a554275855886135c5a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9877f69f255829f1fc7310a3377f56c98e6ba7108fb1c0392be6bff7e7cb9890\",\"dweb:/ipfs/QmQ8dt39vJVyC2pvsBsuRRznMx24pt5ZrTeyieRpRdsC8u\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1234,6 +1234,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1298,6 +1306,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1427,10 +1443,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1975,34 +1991,34 @@ }, "ast": { "absolutePath": "test/BatchAdminAdd.t.sol", - "id": 69730, + "id": 70516, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "MembershipSets": [ - 69729 + 70515 ], "OffchainVerifiedTaskPlugin": [ - 9356 + 10107 ], "QuestOnboardingPlugin": [ - 7643 + 8394 ], "QuestPlugin": [ - 8675 + 9426 ], "console": [ - 32435 + 33186 ] }, "nodeType": "SourceUnit", - "src": "39:2697:113", + "src": "39:2697:126", "nodes": [ { - "id": 69391, + "id": 70177, "nodeType": "PragmaDirective", - "src": "39:23:113", + "src": "39:23:126", "nodes": [], "literals": [ "solidity", @@ -2011,24 +2027,24 @@ ] }, { - "id": 69393, + "id": 70179, "nodeType": "ImportDirective", - "src": "64:48:113", + "src": "64:48:126", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 69730, - "sourceUnit": 70241, + "scope": 70516, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 69392, + "id": 70178, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:113", + "referencedDeclaration": 71026, + "src": "72:11:126", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2037,24 +2053,24 @@ "unitAlias": "" }, { - "id": 69395, + "id": 70181, "nodeType": "ImportDirective", - "src": "114:96:113", + "src": "114:96:126", "nodes": [], "absolutePath": "contracts/plugins/onboarding/QuestOnboardingPlugin.sol", "file": "../contracts/plugins/onboarding/QuestOnboardingPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 69730, - "sourceUnit": 7644, + "scope": 70516, + "sourceUnit": 8395, "symbolAliases": [ { "foreign": { - "id": 69394, + "id": 70180, "name": "QuestOnboardingPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7643, - "src": "122:21:113", + "referencedDeclaration": 8394, + "src": "122:21:126", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2063,24 +2079,24 @@ "unitAlias": "" }, { - "id": 69397, + "id": 70183, "nodeType": "ImportDirective", - "src": "211:72:113", + "src": "211:72:126", "nodes": [], "absolutePath": "contracts/plugins/quests/QuestPlugin.sol", "file": "../contracts/plugins/quests/QuestPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 69730, - "sourceUnit": 8676, + "scope": 70516, + "sourceUnit": 9427, "symbolAliases": [ { "foreign": { - "id": 69396, + "id": 70182, "name": "QuestPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8675, - "src": "219:11:113", + "referencedDeclaration": 9426, + "src": "219:11:126", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2089,24 +2105,24 @@ "unitAlias": "" }, { - "id": 69399, + "id": 70185, "nodeType": "ImportDirective", - "src": "285:101:113", + "src": "285:101:126", "nodes": [], "absolutePath": "contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol", "file": "../contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 69730, - "sourceUnit": 9357, + "scope": 70516, + "sourceUnit": 10108, "symbolAliases": [ { "foreign": { - "id": 69398, + "id": 70184, "name": "OffchainVerifiedTaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9356, - "src": "293:26:113", + "referencedDeclaration": 10107, + "src": "293:26:126", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2115,32 +2131,32 @@ "unitAlias": "" }, { - "id": 69400, + "id": 70186, "nodeType": "ImportDirective", - "src": "387:31:113", + "src": "387:31:126", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 69730, - "sourceUnit": 32436, + "scope": 70516, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 69729, + "id": 70515, "nodeType": "ContractDefinition", - "src": "467:2268:113", + "src": "467:2268:126", "nodes": [ { - "id": 69450, + "id": 70236, "nodeType": "FunctionDefinition", - "src": "512:239:113", + "src": "512:239:126", "nodes": [], "body": { - "id": 69449, + "id": 70235, "nodeType": "Block", - "src": "545:206:113", + "src": "545:206:126", "nodes": [], "statements": [ { @@ -2149,33 +2165,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 69406, + "id": 70192, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "555:5:113", + "src": "555:5:126", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MembershipSets_$69729_$", + "typeIdentifier": "t_type$_t_super$_MembershipSets_$70515_$", "typeString": "type(contract super MembershipSets)" } }, - "id": 69408, + "id": 70194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "561:5:113", + "memberLocation": "561:5:126", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "555:11:113", + "referencedDeclaration": 70929, + "src": "555:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 69409, + "id": 70195, "isConstant": false, "isLValue": false, "isPure": false, @@ -2184,27 +2200,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "555:13:113", + "src": "555:13:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69410, + "id": 70196, "nodeType": "ExpressionStatement", - "src": "555:13:113" + "src": "555:13:126" }, { "expression": { "arguments": [ { - "id": 69414, + "id": 70200, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "588:2:113", + "referencedDeclaration": 70591, + "src": "588:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2219,33 +2235,33 @@ } ], "expression": { - "id": 69411, + "id": 70197, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "579:2:113", + "referencedDeclaration": 13541, + "src": "579:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69413, + "id": 70199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "582:5:113", + "memberLocation": "582:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "579:8:113", + "referencedDeclaration": 24720, + "src": "579:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69415, + "id": 70201, "isConstant": false, "isLValue": false, "isPure": false, @@ -2254,30 +2270,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "579:12:113", + "src": "579:12:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69416, + "id": 70202, "nodeType": "ExpressionStatement", - "src": "579:12:113" + "src": "579:12:126" }, { "expression": { "arguments": [ { "hexValue": "416e6e6157616e6e616265696e", - "id": 69420, + "id": 70206, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "610:15:113", + "src": "610:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_12eb85e176ad25e7ae73f2080b893607223ad8e5d99e22504f5fb675b97ee445", "typeString": "literal_string \"AnnaWannabein\"" @@ -2286,14 +2302,14 @@ }, { "hexValue": "75726c6c6c", - "id": 69421, + "id": 70207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "627:7:113", + "src": "627:7:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -2302,14 +2318,14 @@ }, { "hexValue": "31", - "id": 69422, + "id": 70208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "636:1:113", + "src": "636:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -2318,14 +2334,14 @@ }, { "hexValue": "39", - "id": 69423, + "id": 70209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "639:1:113", + "src": "639:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" @@ -2335,14 +2351,14 @@ { "arguments": [ { - "id": 69426, + "id": 70212, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "650:4:113", + "referencedDeclaration": 70573, + "src": "650:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2350,30 +2366,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 69425, + "id": 70211, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "642:7:113", + "src": "642:7:126", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69424, + "id": 70210, "name": "address", "nodeType": "ElementaryTypeName", - "src": "642:7:113", + "src": "642:7:126", "typeDescriptions": {} } }, - "id": 69427, + "id": 70213, "isConstant": false, "isLValue": false, "isPure": false, @@ -2382,7 +2398,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "642:13:113", + "src": "642:13:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2414,33 +2430,33 @@ } ], "expression": { - "id": 69417, + "id": 70203, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "601:3:113", + "referencedDeclaration": 70549, + "src": "601:3:126", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 69419, + "id": 70205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "605:4:113", + "memberLocation": "605:4:126", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "601:8:113", + "src": "601:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 69428, + "id": 70214, "isConstant": false, "isLValue": false, "isPure": false, @@ -2449,27 +2465,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "601:55:113", + "src": "601:55:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69429, + "id": 70215, "nodeType": "ExpressionStatement", - "src": "601:55:113" + "src": "601:55:126" }, { "expression": { "arguments": [ { - "id": 69433, + "id": 70219, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "676:2:113", + "referencedDeclaration": 70593, + "src": "676:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2484,33 +2500,33 @@ } ], "expression": { - "id": 69430, + "id": 70216, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "667:2:113", + "referencedDeclaration": 13541, + "src": "667:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69432, + "id": 70218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "670:5:113", + "memberLocation": "670:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "667:8:113", + "referencedDeclaration": 24720, + "src": "667:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69434, + "id": 70220, "isConstant": false, "isLValue": false, "isPure": false, @@ -2519,30 +2535,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "667:12:113", + "src": "667:12:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69435, + "id": 70221, "nodeType": "ExpressionStatement", - "src": "667:12:113" + "src": "667:12:126" }, { "expression": { "arguments": [ { "hexValue": "416e6e6157616e6e616265696e", - "id": 69439, + "id": 70225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "698:15:113", + "src": "698:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_12eb85e176ad25e7ae73f2080b893607223ad8e5d99e22504f5fb675b97ee445", "typeString": "literal_string \"AnnaWannabein\"" @@ -2551,14 +2567,14 @@ }, { "hexValue": "75726c6c6c", - "id": 69440, + "id": 70226, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "715:7:113", + "src": "715:7:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -2567,14 +2583,14 @@ }, { "hexValue": "31", - "id": 69441, + "id": 70227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "724:1:113", + "src": "724:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -2583,14 +2599,14 @@ }, { "hexValue": "39", - "id": 69442, + "id": 70228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "727:1:113", + "src": "727:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" @@ -2600,14 +2616,14 @@ { "arguments": [ { - "id": 69445, + "id": 70231, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "738:4:113", + "referencedDeclaration": 70573, + "src": "738:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2615,30 +2631,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 69444, + "id": 70230, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "730:7:113", + "src": "730:7:126", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69443, + "id": 70229, "name": "address", "nodeType": "ElementaryTypeName", - "src": "730:7:113", + "src": "730:7:126", "typeDescriptions": {} } }, - "id": 69446, + "id": 70232, "isConstant": false, "isLValue": false, "isPure": false, @@ -2647,7 +2663,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "730:13:113", + "src": "730:13:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2679,33 +2695,33 @@ } ], "expression": { - "id": 69436, + "id": 70222, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "689:3:113", + "referencedDeclaration": 70549, + "src": "689:3:126", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 69438, + "id": 70224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "693:4:113", + "memberLocation": "693:4:126", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "689:8:113", + "src": "689:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 69447, + "id": 70233, "isConstant": false, "isLValue": false, "isPure": false, @@ -2714,60 +2730,60 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "689:55:113", + "src": "689:55:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69448, + "id": 70234, "nodeType": "ExpressionStatement", - "src": "689:55:113" + "src": "689:55:126" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "521:5:113", + "nameLocation": "521:5:126", "overrides": { - "id": 69404, + "id": 70190, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "536:8:113" + "src": "536:8:126" }, "parameters": { - "id": 69403, + "id": 70189, "nodeType": "ParameterList", "parameters": [], - "src": "526:2:113" + "src": "526:2:126" }, "returnParameters": { - "id": 69405, + "id": 70191, "nodeType": "ParameterList", "parameters": [], - "src": "545:0:113" + "src": "545:0:126" }, - "scope": 69729, + "scope": 70515, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 69728, + "id": 70514, "nodeType": "FunctionDefinition", - "src": "757:1976:113", + "src": "757:1976:126", "nodes": [], "body": { - "id": 69727, + "id": 70513, "nodeType": "Block", - "src": "793:1940:113", + "src": "793:1940:126", "nodes": [], "statements": [ { @@ -2776,12 +2792,12 @@ { "arguments": [ { - "id": 69456, + "id": 70242, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "828:2:113", + "referencedDeclaration": 70591, + "src": "828:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2796,33 +2812,33 @@ } ], "expression": { - "id": 69454, + "id": 70240, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "815:4:113", + "referencedDeclaration": 70573, + "src": "815:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69455, + "id": 70241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "820:7:113", + "memberLocation": "820:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "815:12:113", + "referencedDeclaration": 6336, + "src": "815:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69457, + "id": 70243, "isConstant": false, "isLValue": false, "isPure": false, @@ -2831,7 +2847,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "815:16:113", + "src": "815:16:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2840,14 +2856,14 @@ }, { "hexValue": "4167656e74322041646d696e2062792064656661756c74", - "id": 69458, + "id": 70244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "833:25:113", + "src": "833:25:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9bf1c22fb2b56f4e0c3b9201002e5e69435c60d8d5abc2c1ca952b2ec416bd3", "typeString": "literal_string \"Agent2 Admin by default\"" @@ -2866,21 +2882,21 @@ "typeString": "literal_string \"Agent2 Admin by default\"" } ], - "id": 69453, + "id": 70239, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "803:11:113", + "referencedDeclaration": 13679, + "src": "803:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69459, + "id": 70245, "isConstant": false, "isLValue": false, "isPure": false, @@ -2889,16 +2905,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "803:56:113", + "src": "803:56:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69460, + "id": 70246, "nodeType": "ExpressionStatement", - "src": "803:56:113" + "src": "803:56:126" }, { "expression": { @@ -2906,12 +2922,12 @@ { "arguments": [ { - "id": 69464, + "id": 70250, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "894:2:113", + "referencedDeclaration": 70593, + "src": "894:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2926,33 +2942,33 @@ } ], "expression": { - "id": 69462, + "id": 70248, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "881:4:113", + "referencedDeclaration": 70573, + "src": "881:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69463, + "id": 70249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "886:7:113", + "memberLocation": "886:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "881:12:113", + "referencedDeclaration": 6336, + "src": "881:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69465, + "id": 70251, "isConstant": false, "isLValue": false, "isPure": false, @@ -2961,7 +2977,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "881:16:113", + "src": "881:16:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2970,14 +2986,14 @@ }, { "hexValue": "4167656e74332041646d696e2062792064656661756c74", - "id": 69466, + "id": 70252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "899:25:113", + "src": "899:25:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_891ba378bf5abadf6260b236b51adbc0374048a9cf44f569b61c8cb2b06ec293", "typeString": "literal_string \"Agent3 Admin by default\"" @@ -2996,21 +3012,21 @@ "typeString": "literal_string \"Agent3 Admin by default\"" } ], - "id": 69461, + "id": 70247, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "869:11:113", + "referencedDeclaration": 13679, + "src": "869:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69467, + "id": 70253, "isConstant": false, "isLValue": false, "isPure": false, @@ -3019,27 +3035,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "869:56:113", + "src": "869:56:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69468, + "id": 70254, "nodeType": "ExpressionStatement", - "src": "869:56:113" + "src": "869:56:126" }, { "expression": { "arguments": [ { - "id": 69472, + "id": 70258, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "945:11:113", + "referencedDeclaration": 70595, + "src": "945:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3054,33 +3070,33 @@ } ], "expression": { - "id": 69469, + "id": 70255, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "936:2:113", + "referencedDeclaration": 13541, + "src": "936:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69471, + "id": 70257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "939:5:113", + "memberLocation": "939:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "936:8:113", + "referencedDeclaration": 24720, + "src": "936:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69473, + "id": 70259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3089,30 +3105,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "936:21:113", + "src": "936:21:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69474, + "id": 70260, "nodeType": "ExpressionStatement", - "src": "936:21:113" + "src": "936:21:126" }, { "expression": { "arguments": [ { "hexValue": "4e6f7420616e2061646d696e21", - "id": 69478, + "id": 70264, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "983:15:113", + "src": "983:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_54d282f6b755960bf9c8150e1829f2d124f3a3d668ba726f61ef80f83ac6b48a", "typeString": "literal_string \"Not an admin!\"" @@ -3128,33 +3144,33 @@ } ], "expression": { - "id": 69475, + "id": 70261, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "967:2:113", + "referencedDeclaration": 13541, + "src": "967:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69477, + "id": 70263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "970:12:113", + "memberLocation": "970:12:126", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "967:15:113", + "referencedDeclaration": 24776, + "src": "967:15:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 69479, + "id": 70265, "isConstant": false, "isLValue": false, "isPure": false, @@ -3163,27 +3179,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "967:32:113", + "src": "967:32:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69480, + "id": 70266, "nodeType": "ExpressionStatement", - "src": "967:32:113" + "src": "967:32:126" }, { "expression": { "arguments": [ { - "id": 69484, + "id": 70270, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1023:11:113", + "referencedDeclaration": 70595, + "src": "1023:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3198,33 +3214,33 @@ } ], "expression": { - "id": 69481, + "id": 70267, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1009:4:113", + "referencedDeclaration": 70573, + "src": "1009:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69483, + "id": 70269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1014:8:113", + "memberLocation": "1014:8:126", "memberName": "addAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5499, - "src": "1009:13:113", + "referencedDeclaration": 6250, + "src": "1009:13:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69485, + "id": 70271, "isConstant": false, "isLValue": false, "isPure": false, @@ -3233,27 +3249,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1009:26:113", + "src": "1009:26:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69486, + "id": 70272, "nodeType": "ExpressionStatement", - "src": "1009:26:113" + "src": "1009:26:126" }, { "expression": { "arguments": [ { - "id": 69490, + "id": 70276, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1055:2:113", + "referencedDeclaration": 70587, + "src": "1055:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3268,33 +3284,33 @@ } ], "expression": { - "id": 69487, + "id": 70273, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1046:2:113", + "referencedDeclaration": 13541, + "src": "1046:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69489, + "id": 70275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1049:5:113", + "memberLocation": "1049:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1046:8:113", + "referencedDeclaration": 24720, + "src": "1046:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69491, + "id": 70277, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,30 +3319,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1046:12:113", + "src": "1046:12:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69492, + "id": 70278, "nodeType": "ExpressionStatement", - "src": "1046:12:113" + "src": "1046:12:126" }, { "expression": { "arguments": [ { "hexValue": "4e6f742061206d656d626572", - "id": 69496, + "id": 70282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1084:14:113", + "src": "1084:14:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8cfc078b32cffb255e9e243136e6cde5d6a128600e2bb8733edd3b242e99fb55", "typeString": "literal_string \"Not a member\"" @@ -3342,33 +3358,33 @@ } ], "expression": { - "id": 69493, + "id": 70279, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1068:2:113", + "referencedDeclaration": 13541, + "src": "1068:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69495, + "id": 70281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1071:12:113", + "memberLocation": "1071:12:126", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "1068:15:113", + "referencedDeclaration": 24776, + "src": "1068:15:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 69497, + "id": 70283, "isConstant": false, "isLValue": false, "isPure": false, @@ -3377,27 +3393,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1068:31:113", + "src": "1068:31:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69498, + "id": 70284, "nodeType": "ExpressionStatement", - "src": "1068:31:113" + "src": "1068:31:126" }, { "expression": { "arguments": [ { - "id": 69502, + "id": 70288, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1123:11:113", + "referencedDeclaration": 70595, + "src": "1123:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3412,33 +3428,33 @@ } ], "expression": { - "id": 69499, + "id": 70285, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1109:4:113", + "referencedDeclaration": 70573, + "src": "1109:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69501, + "id": 70287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1114:8:113", + "memberLocation": "1114:8:126", "memberName": "addAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5499, - "src": "1109:13:113", + "referencedDeclaration": 6250, + "src": "1109:13:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69503, + "id": 70289, "isConstant": false, "isLValue": false, "isPure": false, @@ -3447,16 +3463,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1109:26:113", + "src": "1109:26:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69504, + "id": 70290, "nodeType": "ExpressionStatement", - "src": "1109:26:113" + "src": "1109:26:126" }, { "expression": { @@ -3464,12 +3480,12 @@ { "arguments": [ { - "id": 69508, + "id": 70294, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1170:11:113", + "referencedDeclaration": 70595, + "src": "1170:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3484,33 +3500,33 @@ } ], "expression": { - "id": 69506, + "id": 70292, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1157:4:113", + "referencedDeclaration": 70573, + "src": "1157:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69507, + "id": 70293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1162:7:113", + "memberLocation": "1162:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "1157:12:113", + "referencedDeclaration": 6336, + "src": "1157:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69509, + "id": 70295, "isConstant": false, "isLValue": false, "isPure": false, @@ -3519,7 +3535,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1157:25:113", + "src": "1157:25:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3528,14 +3544,14 @@ }, { "hexValue": "61646d696e20736f6d65686f77", - "id": 69510, + "id": 70296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1184:15:113", + "src": "1184:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2214dff14e9ad4e0a53c02dc1ab6b84b19332c0703422196a785799484b4d75f", "typeString": "literal_string \"admin somehow\"" @@ -3554,21 +3570,21 @@ "typeString": "literal_string \"admin somehow\"" } ], - "id": 69505, + "id": 70291, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1145:11:113", + "referencedDeclaration": 13679, + "src": "1145:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69511, + "id": 70297, "isConstant": false, "isLValue": false, "isPure": false, @@ -3577,27 +3593,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1145:55:113", + "src": "1145:55:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69512, + "id": 70298, "nodeType": "ExpressionStatement", - "src": "1145:55:113" + "src": "1145:55:126" }, { "expression": { "arguments": [ { - "id": 69516, + "id": 70302, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1220:11:113", + "referencedDeclaration": 70595, + "src": "1220:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3612,33 +3628,33 @@ } ], "expression": { - "id": 69513, + "id": 70299, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1211:2:113", + "referencedDeclaration": 13541, + "src": "1211:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69515, + "id": 70301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1214:5:113", + "memberLocation": "1214:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1211:8:113", + "referencedDeclaration": 24720, + "src": "1211:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69517, + "id": 70303, "isConstant": false, "isLValue": false, "isPure": false, @@ -3647,30 +3663,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1211:21:113", + "src": "1211:21:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69518, + "id": 70304, "nodeType": "ExpressionStatement", - "src": "1211:21:113" + "src": "1211:21:126" }, { "expression": { "arguments": [ { "hexValue": "416e6e6157616e6e616265696e", - "id": 69522, + "id": 70308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1251:15:113", + "src": "1251:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_12eb85e176ad25e7ae73f2080b893607223ad8e5d99e22504f5fb675b97ee445", "typeString": "literal_string \"AnnaWannabein\"" @@ -3679,14 +3695,14 @@ }, { "hexValue": "75726c6c6c", - "id": 69523, + "id": 70309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1268:7:113", + "src": "1268:7:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -3695,14 +3711,14 @@ }, { "hexValue": "31", - "id": 69524, + "id": 70310, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1277:1:113", + "src": "1277:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3711,14 +3727,14 @@ }, { "hexValue": "39", - "id": 69525, + "id": 70311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1280:1:113", + "src": "1280:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" @@ -3728,14 +3744,14 @@ { "arguments": [ { - "id": 69528, + "id": 70314, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1291:4:113", + "referencedDeclaration": 70573, + "src": "1291:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3743,30 +3759,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 69527, + "id": 70313, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1283:7:113", + "src": "1283:7:126", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69526, + "id": 70312, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1283:7:113", + "src": "1283:7:126", "typeDescriptions": {} } }, - "id": 69529, + "id": 70315, "isConstant": false, "isLValue": false, "isPure": false, @@ -3775,7 +3791,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1283:13:113", + "src": "1283:13:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3807,33 +3823,33 @@ } ], "expression": { - "id": 69519, + "id": 70305, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1242:3:113", + "referencedDeclaration": 70549, + "src": "1242:3:126", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 69521, + "id": 70307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1246:4:113", + "memberLocation": "1246:4:126", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1242:8:113", + "src": "1242:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 69530, + "id": 70316, "isConstant": false, "isLValue": false, "isPure": false, @@ -3842,16 +3858,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1242:55:113", + "src": "1242:55:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69531, + "id": 70317, "nodeType": "ExpressionStatement", - "src": "1242:55:113" + "src": "1242:55:126" }, { "expression": { @@ -3859,12 +3875,12 @@ { "arguments": [ { - "id": 69535, + "id": 70321, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1333:11:113", + "referencedDeclaration": 70595, + "src": "1333:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3879,33 +3895,33 @@ } ], "expression": { - "id": 69533, + "id": 70319, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1319:4:113", + "referencedDeclaration": 70573, + "src": "1319:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69534, + "id": 70320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1324:8:113", + "memberLocation": "1324:8:126", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "1319:13:113", + "referencedDeclaration": 6323, + "src": "1319:13:126", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69536, + "id": 70322, "isConstant": false, "isLValue": false, "isPure": false, @@ -3914,7 +3930,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1319:26:113", + "src": "1319:26:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3923,14 +3939,14 @@ }, { "hexValue": "6d616465206d656d626572", - "id": 69537, + "id": 70323, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1347:13:113", + "src": "1347:13:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_92f63ea2a46a18f069976e9378213ad4f90573487503d0ab4069883266ec39cf", "typeString": "literal_string \"made member\"" @@ -3949,21 +3965,21 @@ "typeString": "literal_string \"made member\"" } ], - "id": 69532, + "id": 70318, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1308:10:113", + "referencedDeclaration": 11481, + "src": "1308:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69538, + "id": 70324, "isConstant": false, "isLValue": false, "isPure": false, @@ -3972,16 +3988,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1308:53:113", + "src": "1308:53:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69539, + "id": 70325, "nodeType": "ExpressionStatement", - "src": "1308:53:113" + "src": "1308:53:126" }, { "expression": { @@ -3989,12 +4005,12 @@ { "arguments": [ { - "id": 69543, + "id": 70329, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1396:11:113", + "referencedDeclaration": 70595, + "src": "1396:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4009,33 +4025,33 @@ } ], "expression": { - "id": 69541, + "id": 70327, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1383:4:113", + "referencedDeclaration": 70573, + "src": "1383:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69542, + "id": 70328, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1388:7:113", + "memberLocation": "1388:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "1383:12:113", + "referencedDeclaration": 6336, + "src": "1383:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69544, + "id": 70330, "isConstant": false, "isLValue": false, "isPure": false, @@ -4044,7 +4060,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1383:25:113", + "src": "1383:25:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4053,14 +4069,14 @@ }, { "hexValue": "61646d696e20736f6d65686f7732", - "id": 69545, + "id": 70331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:16:113", + "src": "1410:16:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_52b2418cfe2c18c04fc4f284f4ff029b1ae9d1796a2b3c159ffb2827519972fd", "typeString": "literal_string \"admin somehow2\"" @@ -4079,21 +4095,21 @@ "typeString": "literal_string \"admin somehow2\"" } ], - "id": 69540, + "id": 70326, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1371:11:113", + "referencedDeclaration": 13679, + "src": "1371:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69546, + "id": 70332, "isConstant": false, "isLValue": false, "isPure": false, @@ -4102,31 +4118,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1371:56:113", + "src": "1371:56:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69547, + "id": 70333, "nodeType": "ExpressionStatement", - "src": "1371:56:113" + "src": "1371:56:126" }, { "assignments": [ - 69549 + 70335 ], "declarations": [ { "constant": false, - "id": 69549, + "id": 70335, "mutability": "mutable", "name": "snapid", - "nameLocation": "1446:6:113", + "nameLocation": "1446:6:126", "nodeType": "VariableDeclaration", - "scope": 69727, - "src": "1438:14:113", + "scope": 70513, + "src": "1438:14:126", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4134,10 +4150,10 @@ "typeString": "uint256" }, "typeName": { - "id": 69548, + "id": 70334, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1438:7:113", + "src": "1438:7:126", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4146,39 +4162,39 @@ "visibility": "internal" } ], - "id": 69553, + "id": 70339, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 69550, + "id": 70336, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1455:2:113", + "referencedDeclaration": 13541, + "src": "1455:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69551, + "id": 70337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1458:8:113", + "memberLocation": "1458:8:126", "memberName": "snapshot", "nodeType": "MemberAccess", - "referencedDeclaration": 24216, - "src": "1455:11:113", + "referencedDeclaration": 24967, + "src": "1455:11:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 69552, + "id": 70338, "isConstant": false, "isLValue": false, "isPure": false, @@ -4187,7 +4203,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1455:13:113", + "src": "1455:13:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4195,22 +4211,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1438:30:113" + "src": "1438:30:126" }, { "assignments": [ - 69555 + 70341 ], "declarations": [ { "constant": false, - "id": 69555, + "id": 70341, "mutability": "mutable", "name": "agentNotMember", - "nameLocation": "1487:14:113", + "nameLocation": "1487:14:126", "nodeType": "VariableDeclaration", - "scope": 69727, - "src": "1479:22:113", + "scope": 70513, + "src": "1479:22:126", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4218,10 +4234,10 @@ "typeString": "address" }, "typeName": { - "id": 69554, + "id": 70340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1479:7:113", + "src": "1479:7:126", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4231,19 +4247,19 @@ "visibility": "internal" } ], - "id": 69560, + "id": 70346, "initialValue": { "arguments": [ { "hexValue": "323536303030303030303030323536", - "id": 69558, + "id": 70344, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1512:15:113", + "src": "1512:15:126", "typeDescriptions": { "typeIdentifier": "t_rational_256000000000256_by_1", "typeString": "int_const 256000000000256" @@ -4258,26 +4274,26 @@ "typeString": "int_const 256000000000256" } ], - "id": 69557, + "id": 70343, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1504:7:113", + "src": "1504:7:126", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69556, + "id": 70342, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1504:7:113", + "src": "1504:7:126", "typeDescriptions": {} } }, - "id": 69559, + "id": 70345, "isConstant": false, "isLValue": false, "isPure": true, @@ -4286,7 +4302,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1504:24:113", + "src": "1504:24:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4294,18 +4310,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1479:49:113" + "src": "1479:49:126" }, { "expression": { "arguments": [ { - "id": 69564, + "id": 70350, "name": "agentNotMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69555, - "src": "1547:14:113", + "referencedDeclaration": 70341, + "src": "1547:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4313,14 +4329,14 @@ }, { "hexValue": "6167656e74206e6f74206d656d626572", - "id": 69565, + "id": 70351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1563:18:113", + "src": "1563:18:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6fc58e918a53ddc7b7e54a2f52f7b28bfbc5a7dd9da78393ed0c48fd83d262f0", "typeString": "literal_string \"agent not member\"" @@ -4340,33 +4356,33 @@ } ], "expression": { - "id": 69561, + "id": 70347, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1538:2:113", + "referencedDeclaration": 13541, + "src": "1538:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69563, + "id": 70349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1541:5:113", + "memberLocation": "1541:5:126", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1538:8:113", + "referencedDeclaration": 23909, + "src": "1538:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69566, + "id": 70352, "isConstant": false, "isLValue": false, "isPure": false, @@ -4375,31 +4391,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1538:44:113", + "src": "1538:44:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69567, + "id": 70353, "nodeType": "ExpressionStatement", - "src": "1538:44:113" + "src": "1538:44:126" }, { "assignments": [ - 69572 + 70358 ], "declarations": [ { "constant": false, - "id": 69572, + "id": 70358, "mutability": "mutable", "name": "adminsToAdd", - "nameLocation": "1610:11:113", + "nameLocation": "1610:11:126", "nodeType": "VariableDeclaration", - "scope": 69727, - "src": "1593:28:113", + "scope": 70513, + "src": "1593:28:126", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4408,18 +4424,18 @@ }, "typeName": { "baseType": { - "id": 69570, + "id": 70356, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1593:7:113", + "src": "1593:7:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69571, + "id": 70357, "nodeType": "ArrayTypeName", - "src": "1593:9:113", + "src": "1593:9:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4428,19 +4444,19 @@ "visibility": "internal" } ], - "id": 69578, + "id": 70364, "initialValue": { "arguments": [ { "hexValue": "34", - "id": 69576, + "id": 70362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1638:1:113", + "src": "1638:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -4455,39 +4471,39 @@ "typeString": "int_const 4" } ], - "id": 69575, + "id": 70361, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1624:13:113", + "src": "1624:13:126", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 69573, + "id": 70359, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1628:7:113", + "src": "1628:7:126", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69574, + "id": 70360, "nodeType": "ArrayTypeName", - "src": "1628:9:113", + "src": "1628:9:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 69577, + "id": 70363, "isConstant": false, "isLValue": false, "isPure": true, @@ -4496,7 +4512,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1624:16:113", + "src": "1624:16:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -4504,22 +4520,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1593:47:113" + "src": "1593:47:126" }, { "assignments": [ - 69583 + 70369 ], "declarations": [ { "constant": false, - "id": 69583, + "id": 70369, "mutability": "mutable", "name": "adminListReturned", - "nameLocation": "1667:17:113", + "nameLocation": "1667:17:126", "nodeType": "VariableDeclaration", - "scope": 69727, - "src": "1650:34:113", + "scope": 70513, + "src": "1650:34:126", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4528,18 +4544,18 @@ }, "typeName": { "baseType": { - "id": 69581, + "id": 70367, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1650:7:113", + "src": "1650:7:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69582, + "id": 70368, "nodeType": "ArrayTypeName", - "src": "1650:9:113", + "src": "1650:9:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4548,41 +4564,41 @@ "visibility": "internal" } ], - "id": 69584, + "id": 70370, "nodeType": "VariableDeclarationStatement", - "src": "1650:34:113" + "src": "1650:34:126" }, { "expression": { - "id": 69589, + "id": 70375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69585, + "id": 70371, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1695:11:113", + "referencedDeclaration": 70358, + "src": "1695:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69587, + "id": 70373, "indexExpression": { "hexValue": "30", - "id": 69586, + "id": 70372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1707:1:113", + "src": "1707:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4594,7 +4610,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1695:14:113", + "src": "1695:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4603,58 +4619,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69588, + "id": 70374, "name": "agentNotMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69555, - "src": "1712:14:113", + "referencedDeclaration": 70341, + "src": "1712:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1695:31:113", + "src": "1695:31:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69590, + "id": 70376, "nodeType": "ExpressionStatement", - "src": "1695:31:113" + "src": "1695:31:126" }, { "expression": { - "id": 69595, + "id": 70381, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69591, + "id": 70377, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1736:11:113", + "referencedDeclaration": 70358, + "src": "1736:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69593, + "id": 70379, "indexExpression": { "hexValue": "31", - "id": 69592, + "id": 70378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1748:1:113", + "src": "1748:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4666,7 +4682,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1736:14:113", + "src": "1736:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4675,58 +4691,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69594, + "id": 70380, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1753:11:113", + "referencedDeclaration": 70595, + "src": "1753:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1736:28:113", + "src": "1736:28:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69596, + "id": 70382, "nodeType": "ExpressionStatement", - "src": "1736:28:113" + "src": "1736:28:126" }, { "expression": { - "id": 69601, + "id": 70387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69597, + "id": 70383, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1774:11:113", + "referencedDeclaration": 70358, + "src": "1774:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69599, + "id": 70385, "indexExpression": { "hexValue": "32", - "id": 69598, + "id": 70384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1786:1:113", + "src": "1786:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -4738,7 +4754,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1774:14:113", + "src": "1774:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4747,58 +4763,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69600, + "id": 70386, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1791:2:113", + "referencedDeclaration": 70591, + "src": "1791:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1774:19:113", + "src": "1774:19:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69602, + "id": 70388, "nodeType": "ExpressionStatement", - "src": "1774:19:113" + "src": "1774:19:126" }, { "expression": { - "id": 69607, + "id": 70393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 69603, + "id": 70389, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1803:11:113", + "referencedDeclaration": 70358, + "src": "1803:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69605, + "id": 70391, "indexExpression": { "hexValue": "33", - "id": 69604, + "id": 70390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1815:1:113", + "src": "1815:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -4810,7 +4826,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1803:14:113", + "src": "1803:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4819,40 +4835,40 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 69606, + "id": 70392, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1820:2:113", + "referencedDeclaration": 70593, + "src": "1820:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1803:19:113", + "src": "1803:19:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69608, + "id": 70394, "nodeType": "ExpressionStatement", - "src": "1803:19:113" + "src": "1803:19:126" }, { "expression": { "arguments": [ { "hexValue": "4e6f7420616e2061646d696e21", - "id": 69612, + "id": 70398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1849:15:113", + "src": "1849:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_54d282f6b755960bf9c8150e1829f2d124f3a3d668ba726f61ef80f83ac6b48a", "typeString": "literal_string \"Not an admin!\"" @@ -4868,33 +4884,33 @@ } ], "expression": { - "id": 69609, + "id": 70395, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1833:2:113", + "referencedDeclaration": 13541, + "src": "1833:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69611, + "id": 70397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1836:12:113", + "memberLocation": "1836:12:126", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "1833:15:113", + "referencedDeclaration": 24776, + "src": "1833:15:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 69613, + "id": 70399, "isConstant": false, "isLValue": false, "isPure": false, @@ -4903,27 +4919,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1833:32:113", + "src": "1833:32:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69614, + "id": 70400, "nodeType": "ExpressionStatement", - "src": "1833:32:113" + "src": "1833:32:126" }, { "expression": { "arguments": [ { - "id": 69618, + "id": 70404, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1884:2:113", + "referencedDeclaration": 70593, + "src": "1884:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4938,33 +4954,33 @@ } ], "expression": { - "id": 69615, + "id": 70401, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1875:2:113", + "referencedDeclaration": 13541, + "src": "1875:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69617, + "id": 70403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1878:5:113", + "memberLocation": "1878:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1875:8:113", + "referencedDeclaration": 24720, + "src": "1875:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69619, + "id": 70405, "isConstant": false, "isLValue": false, "isPure": false, @@ -4973,27 +4989,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1875:12:113", + "src": "1875:12:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69620, + "id": 70406, "nodeType": "ExpressionStatement", - "src": "1875:12:113" + "src": "1875:12:126" }, { "expression": { "arguments": [ { - "id": 69624, + "id": 70410, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1912:11:113", + "referencedDeclaration": 70358, + "src": "1912:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -5008,33 +5024,33 @@ } ], "expression": { - "id": 69621, + "id": 70407, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1897:4:113", + "referencedDeclaration": 70573, + "src": "1897:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69623, + "id": 70409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1902:9:113", + "memberLocation": "1902:9:126", "memberName": "addAdmins", "nodeType": "MemberAccess", - "referencedDeclaration": 5508, - "src": "1897:14:113", + "referencedDeclaration": 6259, + "src": "1897:14:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (address[] memory) external returns (address[] memory)" } }, - "id": 69625, + "id": 70411, "isConstant": false, "isLValue": false, "isPure": false, @@ -5043,27 +5059,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1897:27:113", + "src": "1897:27:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69626, + "id": 70412, "nodeType": "ExpressionStatement", - "src": "1897:27:113" + "src": "1897:27:126" }, { "expression": { "arguments": [ { - "id": 69630, + "id": 70416, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1944:2:113", + "referencedDeclaration": 70587, + "src": "1944:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5078,33 +5094,33 @@ } ], "expression": { - "id": 69627, + "id": 70413, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1935:2:113", + "referencedDeclaration": 13541, + "src": "1935:2:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69629, + "id": 70415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1938:5:113", + "memberLocation": "1938:5:126", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1935:8:113", + "referencedDeclaration": 24720, + "src": "1935:8:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69631, + "id": 70417, "isConstant": false, "isLValue": false, "isPure": false, @@ -5113,31 +5129,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1935:12:113", + "src": "1935:12:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69632, + "id": 70418, "nodeType": "ExpressionStatement", - "src": "1935:12:113" + "src": "1935:12:126" }, { "expression": { - "id": 69638, + "id": 70424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69633, + "id": 70419, "name": "adminListReturned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69583, - "src": "1957:17:113", + "referencedDeclaration": 70369, + "src": "1957:17:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -5148,12 +5164,12 @@ "rightHandSide": { "arguments": [ { - "id": 69636, + "id": 70422, "name": "adminsToAdd", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69572, - "src": "1992:11:113", + "referencedDeclaration": 70358, + "src": "1992:11:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -5168,33 +5184,33 @@ } ], "expression": { - "id": 69634, + "id": 70420, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1977:4:113", + "referencedDeclaration": 70573, + "src": "1977:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69635, + "id": 70421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1982:9:113", + "memberLocation": "1982:9:126", "memberName": "addAdmins", "nodeType": "MemberAccess", - "referencedDeclaration": 5508, - "src": "1977:14:113", + "referencedDeclaration": 6259, + "src": "1977:14:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (address[] memory) external returns (address[] memory)" } }, - "id": 69637, + "id": 70423, "isConstant": false, "isLValue": false, "isPure": false, @@ -5203,22 +5219,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1977:27:113", + "src": "1977:27:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1957:47:113", + "src": "1957:47:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69639, + "id": 70425, "nodeType": "ExpressionStatement", - "src": "1957:47:113" + "src": "1957:47:126" }, { "expression": { @@ -5226,12 +5242,12 @@ { "arguments": [ { - "id": 69643, + "id": 70429, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "2040:2:113", + "referencedDeclaration": 70591, + "src": "2040:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5246,33 +5262,33 @@ } ], "expression": { - "id": 69641, + "id": 70427, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2026:4:113", + "referencedDeclaration": 70573, + "src": "2026:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69642, + "id": 70428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2031:8:113", + "memberLocation": "2031:8:126", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "2026:13:113", + "referencedDeclaration": 6323, + "src": "2026:13:126", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69644, + "id": 70430, "isConstant": false, "isLValue": false, "isPure": false, @@ -5281,7 +5297,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2026:17:113", + "src": "2026:17:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5290,14 +5306,14 @@ }, { "hexValue": "4132206e6f74206d656d626572", - "id": 69645, + "id": 70431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2045:15:113", + "src": "2045:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_acfd8628d31a1b3e5a3830e8f2e8a5b2f406eddf6d122ba8be6f17d12ceb265e", "typeString": "literal_string \"A2 not member\"" @@ -5316,21 +5332,21 @@ "typeString": "literal_string \"A2 not member\"" } ], - "id": 69640, + "id": 70426, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2015:10:113", + "referencedDeclaration": 11481, + "src": "2015:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69646, + "id": 70432, "isConstant": false, "isLValue": false, "isPure": false, @@ -5339,16 +5355,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2015:46:113", + "src": "2015:46:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69647, + "id": 70433, "nodeType": "ExpressionStatement", - "src": "2015:46:113" + "src": "2015:46:126" }, { "expression": { @@ -5356,12 +5372,12 @@ { "arguments": [ { - "id": 69651, + "id": 70437, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "2096:2:113", + "referencedDeclaration": 70593, + "src": "2096:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5376,33 +5392,33 @@ } ], "expression": { - "id": 69649, + "id": 70435, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2082:4:113", + "referencedDeclaration": 70573, + "src": "2082:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69650, + "id": 70436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2087:8:113", + "memberLocation": "2087:8:126", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "2082:13:113", + "referencedDeclaration": 6323, + "src": "2082:13:126", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 69652, + "id": 70438, "isConstant": false, "isLValue": false, "isPure": false, @@ -5411,7 +5427,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2082:17:113", + "src": "2082:17:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5420,14 +5436,14 @@ }, { "hexValue": "4132206e6f74206d656d626572", - "id": 69653, + "id": 70439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2101:15:113", + "src": "2101:15:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_acfd8628d31a1b3e5a3830e8f2e8a5b2f406eddf6d122ba8be6f17d12ceb265e", "typeString": "literal_string \"A2 not member\"" @@ -5446,21 +5462,21 @@ "typeString": "literal_string \"A2 not member\"" } ], - "id": 69648, + "id": 70434, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2071:10:113", + "referencedDeclaration": 11481, + "src": "2071:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69654, + "id": 70440, "isConstant": false, "isLValue": false, "isPure": false, @@ -5469,16 +5485,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2071:46:113", + "src": "2071:46:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69655, + "id": 70441, "nodeType": "ExpressionStatement", - "src": "2071:46:113" + "src": "2071:46:126" }, { "expression": { @@ -5486,12 +5502,12 @@ { "arguments": [ { - "id": 69659, + "id": 70445, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "2152:2:113", + "referencedDeclaration": 70593, + "src": "2152:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5506,33 +5522,33 @@ } ], "expression": { - "id": 69657, + "id": 70443, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2139:4:113", + "referencedDeclaration": 70573, + "src": "2139:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69658, + "id": 70444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2144:7:113", + "memberLocation": "2144:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "2139:12:113", + "referencedDeclaration": 6336, + "src": "2139:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69660, + "id": 70446, "isConstant": false, "isLValue": false, "isPure": false, @@ -5541,7 +5557,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2139:16:113", + "src": "2139:16:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5550,14 +5566,14 @@ }, { "hexValue": "4133206e6f742061646465642061732061646d696e", - "id": 69661, + "id": 70447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2157:23:113", + "src": "2157:23:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2dc2a6765069fac0e551de51dda0db0315aaca3b9d52d7b5add1f94703be5ee6", "typeString": "literal_string \"A3 not added as admin\"" @@ -5576,21 +5592,21 @@ "typeString": "literal_string \"A3 not added as admin\"" } ], - "id": 69656, + "id": 70442, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2128:10:113", + "referencedDeclaration": 11481, + "src": "2128:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69662, + "id": 70448, "isConstant": false, "isLValue": false, "isPure": false, @@ -5599,16 +5615,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2128:53:113", + "src": "2128:53:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69663, + "id": 70449, "nodeType": "ExpressionStatement", - "src": "2128:53:113" + "src": "2128:53:126" }, { "expression": { @@ -5616,12 +5632,12 @@ { "arguments": [ { - "id": 69667, + "id": 70453, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "2215:2:113", + "referencedDeclaration": 70591, + "src": "2215:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5636,33 +5652,33 @@ } ], "expression": { - "id": 69665, + "id": 70451, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2202:4:113", + "referencedDeclaration": 70573, + "src": "2202:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69666, + "id": 70452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2207:7:113", + "memberLocation": "2207:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "2202:12:113", + "referencedDeclaration": 6336, + "src": "2202:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69668, + "id": 70454, "isConstant": false, "isLValue": false, "isPure": false, @@ -5671,7 +5687,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2202:16:113", + "src": "2202:16:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5680,14 +5696,14 @@ }, { "hexValue": "4132206e6f742061646d696e", - "id": 69669, + "id": 70455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2220:14:113", + "src": "2220:14:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cd10e2f3838f4e9dd33144acc0fcd447069d45f848fcb121efe0dd6367c32860", "typeString": "literal_string \"A2 not admin\"" @@ -5706,21 +5722,21 @@ "typeString": "literal_string \"A2 not admin\"" } ], - "id": 69664, + "id": 70450, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2191:10:113", + "referencedDeclaration": 11481, + "src": "2191:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69670, + "id": 70456, "isConstant": false, "isLValue": false, "isPure": false, @@ -5729,16 +5745,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2191:44:113", + "src": "2191:44:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69671, + "id": 70457, "nodeType": "ExpressionStatement", - "src": "2191:44:113" + "src": "2191:44:126" }, { "expression": { @@ -5746,12 +5762,12 @@ { "arguments": [ { - "id": 69675, + "id": 70461, "name": "agentNotMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69555, - "src": "2271:14:113", + "referencedDeclaration": 70341, + "src": "2271:14:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5766,33 +5782,33 @@ } ], "expression": { - "id": 69673, + "id": 70459, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2258:4:113", + "referencedDeclaration": 70573, + "src": "2258:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69674, + "id": 70460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2263:7:113", + "memberLocation": "2263:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "2258:12:113", + "referencedDeclaration": 6336, + "src": "2258:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69676, + "id": 70462, "isConstant": false, "isLValue": false, "isPure": false, @@ -5801,7 +5817,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2258:28:113", + "src": "2258:28:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5810,14 +5826,14 @@ }, { "hexValue": "6e6f74206d656d6265722073686f756c6420736b6970", - "id": 69677, + "id": 70463, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2288:24:113", + "src": "2288:24:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_edf7e3dd3ae4e606e21a4f2ca9c3b9f953b2bb1de745ad601a9d643b436c2778", "typeString": "literal_string \"not member should skip\"" @@ -5836,21 +5852,21 @@ "typeString": "literal_string \"not member should skip\"" } ], - "id": 69672, + "id": 70458, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "2246:11:113", + "referencedDeclaration": 13679, + "src": "2246:11:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69678, + "id": 70464, "isConstant": false, "isLValue": false, "isPure": false, @@ -5859,16 +5875,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2246:67:113", + "src": "2246:67:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69679, + "id": 70465, "nodeType": "ExpressionStatement", - "src": "2246:67:113" + "src": "2246:67:126" }, { "expression": { @@ -5876,12 +5892,12 @@ { "arguments": [ { - "id": 69683, + "id": 70469, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "2347:11:113", + "referencedDeclaration": 70595, + "src": "2347:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5896,33 +5912,33 @@ } ], "expression": { - "id": 69681, + "id": 70467, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2334:4:113", + "referencedDeclaration": 70573, + "src": "2334:4:126", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 69682, + "id": 70468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2339:7:113", + "memberLocation": "2339:7:126", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "2334:12:113", + "referencedDeclaration": 6336, + "src": "2334:12:126", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 69684, + "id": 70470, "isConstant": false, "isLValue": false, "isPure": false, @@ -5931,7 +5947,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2334:25:113", + "src": "2334:25:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5940,14 +5956,14 @@ }, { "hexValue": "6d656d62657220627574206e6f742061646d696e", - "id": 69685, + "id": 70471, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2361:22:113", + "src": "2361:22:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9c804adebd90764257506fe0dfdf252d03535a1e00d8e127ca80ae7f82c83504", "typeString": "literal_string \"member but not admin\"" @@ -5966,21 +5982,21 @@ "typeString": "literal_string \"member but not admin\"" } ], - "id": 69680, + "id": 70466, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2323:10:113", + "referencedDeclaration": 11481, + "src": "2323:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69686, + "id": 70472, "isConstant": false, "isLValue": false, "isPure": false, @@ -5989,16 +6005,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2323:61:113", + "src": "2323:61:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69687, + "id": 70473, "nodeType": "ExpressionStatement", - "src": "2323:61:113" + "src": "2323:61:126" }, { "expression": { @@ -6008,35 +6024,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69696, + "id": 70482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 69689, + "id": 70475, "name": "adminListReturned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69583, - "src": "2406:17:113", + "referencedDeclaration": 70369, + "src": "2406:17:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69691, + "id": 70477, "indexExpression": { "hexValue": "30", - "id": 69690, + "id": 70476, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2424:1:113", + "src": "2424:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6048,7 +6064,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2406:20:113", + "src": "2406:20:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6060,14 +6076,14 @@ "arguments": [ { "hexValue": "30", - "id": 69694, + "id": 70480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2438:1:113", + "src": "2438:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6082,26 +6098,26 @@ "typeString": "int_const 0" } ], - "id": 69693, + "id": 70479, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2430:7:113", + "src": "2430:7:126", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69692, + "id": 70478, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2430:7:113", + "src": "2430:7:126", "typeDescriptions": {} } }, - "id": 69695, + "id": 70481, "isConstant": false, "isLValue": false, "isPure": true, @@ -6110,14 +6126,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2430:10:113", + "src": "2430:10:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2406:34:113", + "src": "2406:34:126", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6125,14 +6141,14 @@ }, { "hexValue": "6e6f6e2d6d656d62657220736b6970706564", - "id": 69697, + "id": 70483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2442:20:113", + "src": "2442:20:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_588d8821aae08505a2cb077079852fb68d434517c6f1452e21a4bef8fbc1fa8b", "typeString": "literal_string \"non-member skipped\"" @@ -6151,21 +6167,21 @@ "typeString": "literal_string \"non-member skipped\"" } ], - "id": 69688, + "id": 70474, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2395:10:113", + "referencedDeclaration": 11481, + "src": "2395:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69698, + "id": 70484, "isConstant": false, "isLValue": false, "isPure": false, @@ -6174,16 +6190,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2395:68:113", + "src": "2395:68:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69699, + "id": 70485, "nodeType": "ExpressionStatement", - "src": "2395:68:113" + "src": "2395:68:126" }, { "expression": { @@ -6193,35 +6209,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69705, + "id": 70491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 69701, + "id": 70487, "name": "adminListReturned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69583, - "src": "2484:17:113", + "referencedDeclaration": 70369, + "src": "2484:17:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69703, + "id": 70489, "indexExpression": { "hexValue": "31", - "id": 69702, + "id": 70488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2502:1:113", + "src": "2502:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6233,7 +6249,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2484:20:113", + "src": "2484:20:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6242,18 +6258,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 69704, + "id": 70490, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "2508:11:113", + "referencedDeclaration": 70595, + "src": "2508:11:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2484:35:113", + "src": "2484:35:126", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6261,14 +6277,14 @@ }, { "hexValue": "6f757473696465722061646465642061732061646d696e", - "id": 69706, + "id": 70492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2521:25:113", + "src": "2521:25:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_63cdf5bce38780c3b69aadd3121b18a07230fa52f803aab0b892bb9c74449dd0", "typeString": "literal_string \"outsider added as admin\"" @@ -6287,21 +6303,21 @@ "typeString": "literal_string \"outsider added as admin\"" } ], - "id": 69700, + "id": 70486, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2473:10:113", + "referencedDeclaration": 11481, + "src": "2473:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69707, + "id": 70493, "isConstant": false, "isLValue": false, "isPure": false, @@ -6310,16 +6326,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2473:74:113", + "src": "2473:74:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69708, + "id": 70494, "nodeType": "ExpressionStatement", - "src": "2473:74:113" + "src": "2473:74:126" }, { "expression": { @@ -6329,35 +6345,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69714, + "id": 70500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 69710, + "id": 70496, "name": "adminListReturned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69583, - "src": "2568:17:113", + "referencedDeclaration": 70369, + "src": "2568:17:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69712, + "id": 70498, "indexExpression": { "hexValue": "32", - "id": 69711, + "id": 70497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2586:1:113", + "src": "2586:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -6369,7 +6385,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2568:20:113", + "src": "2568:20:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6378,18 +6394,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 69713, + "id": 70499, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "2592:2:113", + "referencedDeclaration": 70591, + "src": "2592:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2568:26:113", + "src": "2568:26:126", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6397,14 +6413,14 @@ }, { "hexValue": "6132206e6f742061646465642061732061646d696e", - "id": 69715, + "id": 70501, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2596:23:113", + "src": "2596:23:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6b6be38ec7b7b013504eb394fbb62dbd04719a69488e086648c89ea059e9e033", "typeString": "literal_string \"a2 not added as admin\"" @@ -6423,21 +6439,21 @@ "typeString": "literal_string \"a2 not added as admin\"" } ], - "id": 69709, + "id": 70495, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2557:10:113", + "referencedDeclaration": 11481, + "src": "2557:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69716, + "id": 70502, "isConstant": false, "isLValue": false, "isPure": false, @@ -6446,16 +6462,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2557:63:113", + "src": "2557:63:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69717, + "id": 70503, "nodeType": "ExpressionStatement", - "src": "2557:63:113" + "src": "2557:63:126" }, { "expression": { @@ -6465,35 +6481,35 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 69723, + "id": 70509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 69719, + "id": 70505, "name": "adminListReturned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69583, - "src": "2641:17:113", + "referencedDeclaration": 70369, + "src": "2641:17:126", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 69721, + "id": 70507, "indexExpression": { "hexValue": "33", - "id": 69720, + "id": 70506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2659:1:113", + "src": "2659:1:126", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -6505,7 +6521,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2641:20:113", + "src": "2641:20:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6514,18 +6530,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 69722, + "id": 70508, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "2665:2:113", + "referencedDeclaration": 70593, + "src": "2665:2:126", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2641:26:113", + "src": "2641:26:126", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6533,14 +6549,14 @@ }, { "hexValue": "6132206e6f742061646465642061732061646d696e", - "id": 69724, + "id": 70510, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2669:23:113", + "src": "2669:23:126", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6b6be38ec7b7b013504eb394fbb62dbd04719a69488e086648c89ea059e9e033", "typeString": "literal_string \"a2 not added as admin\"" @@ -6559,21 +6575,21 @@ "typeString": "literal_string \"a2 not added as admin\"" } ], - "id": 69718, + "id": 70504, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2630:10:113", + "referencedDeclaration": 11481, + "src": "2630:10:126", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 69725, + "id": 70511, "isConstant": false, "isLValue": false, "isPure": false, @@ -6582,16 +6598,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2630:63:113", + "src": "2630:63:126", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69726, + "id": 70512, "nodeType": "ExpressionStatement", - "src": "2630:63:113" + "src": "2630:63:126" } ] }, @@ -6600,20 +6616,20 @@ "kind": "function", "modifiers": [], "name": "testSetupAdminAdd", - "nameLocation": "766:17:113", + "nameLocation": "766:17:126", "parameters": { - "id": 69451, + "id": 70237, "nodeType": "ParameterList", "parameters": [], - "src": "783:2:113" + "src": "783:2:126" }, "returnParameters": { - "id": 69452, + "id": 70238, "nodeType": "ParameterList", "parameters": [], - "src": "793:0:113" + "src": "793:0:126" }, - "scope": 69729, + "scope": 70515, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -6623,54 +6639,54 @@ "baseContracts": [ { "baseName": { - "id": 69401, + "id": 70187, "name": "DeploysInit", "nameLocations": [ - "494:11:113" + "494:11:126" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "494:11:113" + "referencedDeclaration": 71026, + "src": "494:11:126" }, - "id": 69402, + "id": 70188, "nodeType": "InheritanceSpecifier", - "src": "494:11:113" + "src": "494:11:126" } ], "canonicalName": "MembershipSets", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 69729, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 70515, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "MembershipSets", - "nameLocation": "476:14:113", - "scope": 69730, + "nameLocation": "476:14:126", + "scope": 70516, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 113 + "id": 126 } \ No newline at end of file diff --git a/out/DAOExpander.sol/DAOExpander.json b/out/DAOExpander.sol/DAOExpander.json index 143fb88e..83c45dc2 100644 --- a/out/DAOExpander.sol/DAOExpander.json +++ b/out/DAOExpander.sol/DAOExpander.json @@ -610,12 +610,12 @@ ], "bytecode": { "object": "0x60806040523480156200001157600080fd5b50604051620029193803806200291983398101604081905262000034916200063f565b6001600160a01b038516620000905760405162461bcd60e51b815260206004820152601360248201527f4d697373696e672044414f20416464726573730000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038716620000e85760405162461bcd60e51b815260206004820152601960248201527f4d697373696e672044414f205479706573206164647265737300000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526000906001600160a01b0389169063979a607e90602401602060405180830381865afa15801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000157919062000775565b6001600160a01b031603620001af5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d656d626572736869702074797065000000000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526001600160a01b0388169063979a607e90602401602060405180830381865afa158015620001f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021b919062000775565b6040516307358f4160e31b81526001600160a01b0387811660048301528b8116602483015291909116906339ac7a0890604401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029291906200079a565b620002e05760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640162000087565b6040805180820182528781526001600160a01b038781166020928301819052898455604180546001600160a01b031990811690921790558c82166000818152600d909452938320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180548316909317909255604280549091169189169190911790556200038a84620003d5565b600080546001600160a01b0319166001600160a01b038a16179055620003b08262000461565b620003bb83620004eb565b620003c6816200056c565b5050505050505050506200094e565b600081118015620003e65750600481105b620004255760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640162000087565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff70906020015b60405180910390a150565b600081118015620004725750600b81105b620004b55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640162000087565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb469060200162000456565b60008151116200052c5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640162000087565b601e6200053a82826200084d565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a9778160405162000456919062000919565b6001600160a01b038116620005c45760405162461bcd60e51b815260206004820152601660248201527f696e76616c696420706c7567696e526567697374727900000000000000000000604482015260640162000087565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620005fe57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006365781810151838201526020016200061c565b50506000910152565b60008060008060008060008060006101208a8c0312156200065f57600080fd5b6200066a8a620005e6565b98506200067a60208b01620005e6565b97506200068a60408b01620005e6565b965060608a01519550620006a160808b01620005e6565b60a08b015160c08c015191965094506001600160401b0380821115620006c657600080fd5b818c0191508c601f830112620006db57600080fd5b815181811115620006f057620006f062000603565b604051601f8201601f19908116603f011681019083821181831017156200071b576200071b62000603565b816040528281528f60208487010111156200073557600080fd5b6200074883602083016020880162000619565b809750505050505060e08a01519150620007666101008b01620005e6565b90509295985092959850929598565b6000602082840312156200078857600080fd5b6200079382620005e6565b9392505050565b600060208284031215620007ad57600080fd5b815180151581146200079357600080fd5b600181811c90821680620007d357607f821691505b602082108103620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084857600081815260208120601f850160051c81016020861015620008235750805b601f850160051c820191505b8181101562000844578281556001016200082f565b5050505b505050565b81516001600160401b0381111562000869576200086962000603565b62000881816200087a8454620007be565b84620007fa565b602080601f831160018114620008b95760008415620008a05750858301515b600019600386901b1c1916600185901b17855562000844565b600085815260208120601f198616915b82811015620008ea57888601518255948401946001909101908401620008c9565b5085821015620009095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200093a81604085016020870162000619565b601f01601f19169190910160400192915050565b611fbb806200095e6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806369130c8d116100f95780639c54df6411610097578063be9cd05211610071578063be9cd052146103c1578063cd29c71a146103d4578063d103449c146103e9578063db83814e146103fc57600080fd5b80639c54df6414610378578063a230c5241461038b578063b5a8a3a1146103ae57600080fd5b806380f55605116100d357806380f5560514610338578063810e8c041461034157806388098e3a146103545780638e99076a1461036557600080fd5b806369130c8d1461030a578063704802751461031d5780637c0f6b351461033057600080fd5b806324d7806c116101665780633b4da69f116101405780633b4da69f146102be57806341dcea91146102d15780635daf08ca146102e457806368839d28146102f757600080fd5b806324d7806c1461027e5780632a79c611146102a157806331ae450b146102a957600080fd5b806311aee380116101a257806311aee3801461021957806314bfd6d01461022b5780631785f53c14610256578063206110db1461026957600080fd5b806303ffe330146101c957806310972e90146101f15780631130630c14610204575b600080fd5b6101dc6101d73660046118e4565b61044f565b60405190151581526020015b60405180910390f35b6101dc6101ff366004611910565b610659565b6102176102123660046119c1565b6106af565b005b600a545b6040519081526020016101e8565b61023e610239366004611910565b6106f3565b6040516001600160a01b0390911681526020016101e8565b610217610264366004611a41565b61071d565b61027161083f565b6040516101e89190611ab5565b6101dc61028c366004611a41565b600d6020526000908152604090205460ff1681565b60285461021d565b6102b1610918565b6040516101e89190611b17565b6102176102cc3660046118e4565b61097a565b603c5461023e906001600160a01b031681565b61023e6102f2366004611910565b610a13565b6101dc6103053660046119c1565b610a23565b610217610318366004611910565b610aa2565b61021761032b366004611a41565b610ada565b6102b1610ccf565b61021d60325481565b61021761034f3660046119c1565b610d2f565b6000546001600160a01b031661023e565b6101dc610373366004611a41565b610d67565b6102b1610386366004611b64565b610e4e565b6101dc610399366004611a41565b600b6020526000908152604090205460ff1681565b6102176103bc366004611a41565b61104b565b6102176103cf366004611910565b61109c565b6103dc6110d4565b6040516101e89190611c16565b6102176103f73660046119c1565b611162565b604080518082018252600080825260209182015281518083018352915482526041546001600160a01b03169082015260408051825181526020928301516001600160a01b031692810192909252016101e8565b6043546000906001600160a01b03166105815761046b83610d67565b8061057a57506043546001600160a01b0316158015906104fd5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190611c29565b801561057a5750604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c7906044015b602060405180830381865afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611c29565b9050610653565b6043546001600160a01b03161580159061060d5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c29565b1561061a57506000610653565b604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401610539565b92915050565b6000805b603d548110156106a65782603d828154811061067b5761067b611c4b565b9060005260206000200154036106945750600192915050565b8061069e81611c77565b91505061065d565b50600092915050565b336000908152600d602052604090205460ff166106e75760405162461bcd60e51b81526004016106de90611c90565b60405180910390fd5b6106f08161119a565b50565b600c818154811061070357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600d602052604090205460ff1661074c5760405162461bcd60e51b81526004016106de90611c90565b60005b600c548110156107e657816001600160a01b0316600c828154811061077657610776611c4b565b6000918252602090912001546001600160a01b0316036107d4576000600c82815481106107a5576107a5611c4b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107de81611c77565b91505061074f565b506001600160a01b0381166000818152600d6020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606014805480602002602001604051908101604052809291908181526020016000905b8282101561090f57838290600052602060002001805461088290611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90611cb7565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b505050505081526020019060010190610863565b50505050905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561097057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610952575b5050505050905090565b6000546001600160a01b031633146109c15760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6109cb828261044f565b610a055760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106de565b610a0f8282611215565b5050565b600a818154811061070357600080fd5b6014546000908103610a3757506000919050565b81516020808401919091206000818152601590925260409091205415610a605750600192915050565b806014600081548110610a7557610a75611c4b565b90600052602060002001604051610a8c9190611cf1565b6040518091039020036106a65750600192915050565b336000908152600d602052604090205460ff16610ad15760405162461bcd60e51b81526004016106de90611c90565b6106f081611348565b336000908152600d602052604090205460ff16610b095760405162461bcd60e51b81526004016106de90611c90565b6001600160a01b0381166000908152600b602052604090205460ff16158015610bfd5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190611d67565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190611d84565b155b15610c395760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106de565b6001600160a01b0381166000818152600d60209081526040808320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610834565b6060600a805480602002602001604051908101604052809291908181526020018280548015610970576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610952575050505050905090565b336000908152600d602052604090205460ff16610d5e5760405162461bcd60e51b81526004016106de90611c90565b6106f0816114d5565b604254604080549051634bcd303f60e11b815260048101919091526000916001600160a01b03169063979a607e90602401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190611d67565b6041546040516307358f4160e31b81526001600160a01b03918216600482015284821660248201529116906339ac7a0890604401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611c29565b336000908152600d602052604090205460609060ff16610e805760405162461bcd60e51b81526004016106de90611c90565b60005b825181101561104457600b6000848381518110610ea257610ea2611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ef457828181518110610edf57610edf611c4b565b60006020918202929092010152600101610e83565b600d6000848381518110610f0a57610f0a611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661103c57600c838281518110610f4957610f49611c4b565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091600d91869085908110610f9d57610f9d611c4b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec83828151811061100f5761100f611c4b565b602002602001015160405161103391906001600160a01b0391909116815260200190565b60405180910390a15b600101610e83565b5090919050565b336000908152600d602052604090205460ff1661107a5760405162461bcd60e51b81526004016106de90611c90565b604380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff166110cb5760405162461bcd60e51b81526004016106de90611c90565b6106f0816116d5565b601e80546110e190611cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90611cb7565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505081565b336000908152600d602052604090205460ff166111915760405162461bcd60e51b81526004016106de90611c90565b6106f08161175b565b60008151116111d95760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106de565b601e6111e58282611dec565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108349190611c16565b6000546001600160a01b0316331461125c5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6001600160a01b0382166000908152600b602052604090205460ff16156112b85760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106de565b6001600160a01b0382166000818152600b6020526040808220805460ff19166001908117909155600a8054918201815583527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190611d67565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114299190810190611eac565b5151116114695760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106de565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b6114de81610a23565b61151d5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106de565b80516020808301919091206000818152601590925260409091205460145461154790600190611f5c565b811461165857601480546000919061156190600190611f5c565b8154811061157157611571611c4b565b90600052602060002001805461158690611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290611cb7565b80156115ff5780601f106115d4576101008083540402835291602001916115ff565b820191906000526020600020905b8154815290600101906020018083116115e257829003601f168201915b50505050509050600081805190602001209050826015600083815260200190815260200160002081905550816014848154811061163e5761163e611c4b565b9060005260206000200190816116549190611dec565b5050505b601480548061166957611669611f6f565b6001900381819060005260206000200160006116859190611881565b905560008281526015602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad09906116c8908590611c16565b60405180910390a1505050565b6000811180156116e55750600b81105b6117265760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106de565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610834565b80516020820120601454600090156117c3576000828152601560205260409020541515806117ba575081601460008154811061179957611799611c4b565b906000526020600020016040516117b09190611cf1565b6040518091039020145b156117c3575060015b80156118065760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106de565b601480546000848152601560205260408120829055600182018355919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec016118518482611dec565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516116c89190611c16565b50805461188d90611cb7565b6000825580601f1061189d575050565b601f0160209004906000526020600020908101906106f091905b808211156118cb57600081556001016118b7565b5090565b6001600160a01b03811681146106f057600080fd5b600080604083850312156118f757600080fd5b8235611902816118cf565b946020939093013593505050565b60006020828403121561192257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196257611962611929565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199157611991611929565b604052919050565b600067ffffffffffffffff8211156119b3576119b3611929565b50601f01601f191660200190565b6000602082840312156119d357600080fd5b813567ffffffffffffffff8111156119ea57600080fd5b8201601f810184136119fb57600080fd5b8035611a0e611a0982611999565b611968565b818152856020838501011115611a2357600080fd5b81602084016020830137600091810160200191909152949350505050565b600060208284031215611a5357600080fd5b8135611a5e816118cf565b9392505050565b60005b83811015611a80578181015183820152602001611a68565b50506000910152565b60008151808452611aa1816020860160208601611a65565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b0a57603f19888603018452611af8858351611a89565b94509285019290850190600101611adc565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611b585783516001600160a01b031683529284019291840191600101611b33565b50909695505050505050565b60006020808385031215611b7757600080fd5b823567ffffffffffffffff80821115611b8f57600080fd5b818501915085601f830112611ba357600080fd5b813581811115611bb557611bb5611929565b8060051b9150611bc6848301611968565b8181529183018401918481019088841115611be057600080fd5b938501935b83851015611c0a5784359250611bfa836118cf565b8282529385019390850190611be5565b98975050505050505050565b602081526000611a5e6020830184611a89565b600060208284031215611c3b57600080fd5b81518015158114611a5e57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c8957611c89611c61565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c90821680611ccb57607f821691505b602082108103611ceb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808354611cff81611cb7565b60018281168015611d175760018114611d2c57611d5b565b60ff1984168752821515830287019450611d5b565b8760005260208060002060005b85811015611d525781548a820152908401908201611d39565b50505082870194505b50929695505050505050565b600060208284031215611d7957600080fd5b8151611a5e816118cf565b600060208284031215611d9657600080fd5b5051919050565b601f821115611de757600081815260208120601f850160051c81016020861015611dc45750805b601f850160051c820191505b81811015611de357828155600101611dd0565b5050505b505050565b815167ffffffffffffffff811115611e0657611e06611929565b611e1a81611e148454611cb7565b84611d9d565b602080601f831160018114611e4f5760008415611e375750858301515b600019600386901b1c1916600185901b178555611de3565b600085815260208120601f198616915b82811015611e7e57888601518255948401946001909101908401611e5f565b5085821015611e9c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808385031215611ebf57600080fd5b825167ffffffffffffffff80821115611ed757600080fd5b9084019060408287031215611eeb57600080fd5b611ef361193f565b825182811115611f0257600080fd5b83019150601f82018713611f1557600080fd5b8151611f23611a0982611999565b8181528886838601011115611f3757600080fd5b611f4682878301888701611a65565b8252509183015192820192909252949350505050565b8181038181111561065357610653611c61565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a58bd4de25921d046aa808afa80a61eae3b6dfe021e8731928b91bc18eb4bc2064736f6c63430008130033", - "sourceMap": "887:4626:31:-:0;;;1879:1124;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2167:22:31;;2159:54;;;;-1:-1:-1;;;2159:54:31;;2301:2:167;2159:54:31;;;2283:21:167;2340:2;2320:18;;;2313:30;2379:21;2359:18;;;2352:49;2418:18;;2159:54:31;;;;;;;;;-1:-1:-1;;;;;2231:32:31;;2223:70;;;;-1:-1:-1;;;2223:70:31;;2649:2:167;2223:70:31;;;2631:21:167;2688:2;2668:18;;;2661:30;2727:27;2707:18;;;2700:55;2772:18;;2223:70:31;2447:349:167;2223:70:31;2311:58;;-1:-1:-1;;;2311:58:31;;;;;2947:25:167;;;2381:1:31;;-1:-1:-1;;;;;2311:48:31;;;;;2920:18:167;;2311:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2311:72:31;;2303:108;;;;-1:-1:-1;;;2303:108:31;;3398:2:167;2303:108:31;;;3380:21:167;3437:2;3417:18;;;3410:30;3476:25;3456:18;;;3449:53;3519:18;;2303:108:31;3196:347:167;2303:108:31;2461:58;;-1:-1:-1;;;2461:58:31;;;;;2947:25:167;;;-1:-1:-1;;;;;2461:48:31;;;;;2920:18:167;;2461:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2442:108;;-1:-1:-1;;;2442:108:31;;-1:-1:-1;;;;;3778:15:167;;;2442:108:31;;;3760:34:167;3830:15;;;3810:18;;;3803:43;2442:87:31;;;;;;;3695:18:167;;2442:108:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2421:187;;;;-1:-1:-1;;;2421:187:31;;4341:2:167;2421:187:31;;;4323:21:167;;;4360:18;;;4353:30;4419:34;4399:18;;;4392:62;4471:18;;2421:187:31;4139:356:167;2421:187:31;2628:37;;;;;;;;;;;-1:-1:-1;;;;;2628:37:31;;;;;;;;;;2618:47;;;;;;-1:-1:-1;;;;;;2618:47:31;;;;;;;;2676:18;;;-1:-1:-1;2676:18:31;;;:7;:18;;;;;;:25;;-1:-1:-1;;2676:25:31;-1:-1:-1;2676:25:31;;;;;;2711:6;:22;;;;;;;;;;;;;;;;;;;;;;;;2743:8;:31;;;;;;;;;;;;;;2785:25;2802:7;2785:16;:25::i;:::-;697:6:5;:29;;-1:-1:-1;;;;;;697:29:5;-1:-1:-1;;;;;697:29:5;;;;;2870:33:31;2891:11;2870:20;:33::i;:::-;2913:32;2935:9;2913:21;:32::i;:::-;2955:41;2980:15;2955:24;:41::i;:::-;1879:1124;;;;;;;;;887:4626;;350:176:8;424:1;414:7;:11;:26;;;;;439:1;429:7;:11;414:26;406:53;;;;-1:-1:-1;;;406:53:8;;4702:2:167;406:53:8;;;4684:21:167;4741:2;4721:18;;;4714:30;-1:-1:-1;;;4760:18:167;;;4753:44;4814:18;;406:53:8;4500:338:167;406:53:8;470:6;:16;;;501:18;;2947:25:167;;;501:18:8;;2935:2:167;2920:18;501::8;;;;;;;;350:176;:::o;355:209:7:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:7;;5045:2:167;418:64:7;;;5027:21:167;5084:2;5064:18;;;5057:30;-1:-1:-1;;;5103:18:167;;;5096:48;5161:18;;418:64:7;4843:342:167;418:64:7;493:11;:24;;;532:25;;2947::167;;;532::7;;2935:2:167;2920:18;532:25:7;2801:177:167;366:213:10;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:10;;5392:2:167;443:51:10;;;5374:21:167;5431:2;5411:18;;;5404:30;-1:-1:-1;;;5450:18:167;;;5443:41;5501:18;;443:51:10;5190:335:167;443:51:10;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;600:185:11:-;-1:-1:-1;;;;;680:29:11;;672:64;;;;-1:-1:-1;;;672:64:11;;8722:2:167;672:64:11;;;8704:21:167;8761:2;8741:18;;;8734:30;8800:24;8780:18;;;8773:52;8842:18;;672:64:11;8520:346:167;672:64:11;746:14;:32;;-1:-1:-1;;;;;;746:32:11;-1:-1:-1;;;;;746:32:11;;;;;;;;;;600:185::o;14:177:167:-;93:13;;-1:-1:-1;;;;;135:31:167;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:167;552:16;;545:27;328:250::o;583:1511::-;735:6;743;751;759;767;775;783;791;799;852:3;840:9;831:7;827:23;823:33;820:53;;;869:1;866;859:12;820:53;892:40;922:9;892:40;:::i;:::-;882:50;;951:49;996:2;985:9;981:18;951:49;:::i;:::-;941:59;;1019:49;1064:2;1053:9;1049:18;1019:49;:::i;:::-;1009:59;;1108:2;1097:9;1093:18;1087:25;1077:35;;1131:50;1176:3;1165:9;1161:19;1131:50;:::i;:::-;1221:3;1206:19;;1200:26;1270:3;1255:19;;1249:26;1121:60;;-1:-1:-1;1200:26:167;-1:-1:-1;;;;;;1324:14:167;;;1321:34;;;1351:1;1348;1341:12;1321:34;1389:6;1378:9;1374:22;1364:32;;1434:7;1427:4;1423:2;1419:13;1415:27;1405:55;;1456:1;1453;1446:12;1405:55;1485:2;1479:9;1507:2;1503;1500:10;1497:36;;;1513:18;;:::i;:::-;1588:2;1582:9;1556:2;1642:13;;-1:-1:-1;;1638:22:167;;;1662:2;1634:31;1630:40;1618:53;;;1686:18;;;1706:22;;;1683:46;1680:72;;;1732:18;;:::i;:::-;1772:10;1768:2;1761:22;1807:2;1799:6;1792:18;1847:7;1842:2;1837;1833;1829:11;1825:20;1822:33;1819:53;;;1868:1;1865;1858:12;1819:53;1881:68;1946:2;1941;1933:6;1929:15;1924:2;1920;1916:11;1881:68;:::i;:::-;1968:6;1958:16;;;;;;;2014:3;2003:9;1999:19;1993:26;1983:36;;2038:50;2083:3;2072:9;2068:19;2038:50;:::i;:::-;2028:60;;583:1511;;;;;;;;;;;:::o;2983:208::-;3053:6;3106:2;3094:9;3085:7;3081:23;3077:32;3074:52;;;3122:1;3119;3112:12;3074:52;3145:40;3175:9;3145:40;:::i;:::-;3135:50;2983:208;-1:-1:-1;;;2983:208:167:o;3857:277::-;3924:6;3977:2;3965:9;3956:7;3952:23;3948:32;3945:52;;;3993:1;3990;3983:12;3945:52;4025:9;4019:16;4078:5;4071:13;4064:21;4057:5;4054:32;4044:60;;4100:1;4097;4090:12;5530:380;5609:1;5605:12;;;;5652;;;5673:61;;5727:4;5719:6;5715:17;5705:27;;5673:61;5780:2;5772:6;5769:14;5749:18;5746:38;5743:161;;5826:10;5821:3;5817:20;5814:1;5807:31;5861:4;5858:1;5851:15;5889:4;5886:1;5879:15;5743:161;;5530:380;;;:::o;6041:545::-;6143:2;6138:3;6135:11;6132:448;;;6179:1;6204:5;6200:2;6193:17;6249:4;6245:2;6235:19;6319:2;6307:10;6303:19;6300:1;6296:27;6290:4;6286:38;6355:4;6343:10;6340:20;6337:47;;;-1:-1:-1;6378:4:167;6337:47;6433:2;6428:3;6424:12;6421:1;6417:20;6411:4;6407:31;6397:41;;6488:82;6506:2;6499:5;6496:13;6488:82;;;6551:17;;;6532:1;6521:13;6488:82;;;6492:3;;;6132:448;6041:545;;;:::o;6762:1352::-;6882:10;;-1:-1:-1;;;;;6904:30:167;;6901:56;;;6937:18;;:::i;:::-;6966:97;7056:6;7016:38;7048:4;7042:11;7016:38;:::i;:::-;7010:4;6966:97;:::i;:::-;7118:4;;7182:2;7171:14;;7199:1;7194:663;;;;7901:1;7918:6;7915:89;;;-1:-1:-1;7970:19:167;;;7964:26;7915:89;-1:-1:-1;;6719:1:167;6715:11;;;6711:24;6707:29;6697:40;6743:1;6739:11;;;6694:57;8017:81;;7164:944;;7194:663;5988:1;5981:14;;;6025:4;6012:18;;-1:-1:-1;;7230:20:167;;;7348:236;7362:7;7359:1;7356:14;7348:236;;;7451:19;;;7445:26;7430:42;;7543:27;;;;7511:1;7499:14;;;;7378:19;;7348:236;;;7352:3;7612:6;7603:7;7600:19;7597:201;;;7673:19;;;7667:26;-1:-1:-1;;7756:1:167;7752:14;;;7768:3;7748:24;7744:37;7740:42;7725:58;7710:74;;7597:201;-1:-1:-1;;;;;7844:1:167;7828:14;;;7824:22;7811:36;;-1:-1:-1;6762:1352:167:o;8119:396::-;8268:2;8257:9;8250:21;8231:4;8300:6;8294:13;8343:6;8338:2;8327:9;8323:18;8316:34;8359:79;8431:6;8426:2;8415:9;8411:18;8406:2;8398:6;8394:15;8359:79;:::i;:::-;8499:2;8478:15;-1:-1:-1;;8474:29:167;8459:45;;;;8506:2;8455:54;;8119:396;-1:-1:-1;;8119:396:167:o;8520:346::-;887:4626:31;;;;;;", + "sourceMap": "887:4626:27:-:0;;;1879:1124;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2167:22:27;;2159:54;;;;-1:-1:-1;;;2159:54:27;;2301:2:134;2159:54:27;;;2283:21:134;2340:2;2320:18;;;2313:30;2379:21;2359:18;;;2352:49;2418:18;;2159:54:27;;;;;;;;;-1:-1:-1;;;;;2231:32:27;;2223:70;;;;-1:-1:-1;;;2223:70:27;;2649:2:134;2223:70:27;;;2631:21:134;2688:2;2668:18;;;2661:30;2727:27;2707:18;;;2700:55;2772:18;;2223:70:27;2447:349:134;2223:70:27;2311:58;;-1:-1:-1;;;2311:58:27;;;;;2947:25:134;;;2381:1:27;;-1:-1:-1;;;;;2311:48:27;;;;;2920:18:134;;2311:58:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2311:72:27;;2303:108;;;;-1:-1:-1;;;2303:108:27;;3398:2:134;2303:108:27;;;3380:21:134;3437:2;3417:18;;;3410:30;3476:25;3456:18;;;3449:53;3519:18;;2303:108:27;3196:347:134;2303:108:27;2461:58;;-1:-1:-1;;;2461:58:27;;;;;2947:25:134;;;-1:-1:-1;;;;;2461:48:27;;;;;2920:18:134;;2461:58:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2442:108;;-1:-1:-1;;;2442:108:27;;-1:-1:-1;;;;;3778:15:134;;;2442:108:27;;;3760:34:134;3830:15;;;3810:18;;;3803:43;2442:87:27;;;;;;;3695:18:134;;2442:108:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2421:187;;;;-1:-1:-1;;;2421:187:27;;4341:2:134;2421:187:27;;;4323:21:134;;;4360:18;;;4353:30;4419:34;4399:18;;;4392:62;4471:18;;2421:187:27;4139:356:134;2421:187:27;2628:37;;;;;;;;;;;-1:-1:-1;;;;;2628:37:27;;;;;;;;;;2618:47;;;;;;-1:-1:-1;;;;;;2618:47:27;;;;;;;;2676:18;;;-1:-1:-1;2676:18:27;;;:7;:18;;;;;;:25;;-1:-1:-1;;2676:25:27;-1:-1:-1;2676:25:27;;;;;;2711:6;:22;;;;;;;;;;;;;;;;;;;;;;;;2743:8;:31;;;;;;;;;;;;;;2785:25;2802:7;2785:16;:25::i;:::-;697:6:4;:29;;-1:-1:-1;;;;;;697:29:4;-1:-1:-1;;;;;697:29:4;;;;;2870:33:27;2891:11;2870:20;:33::i;:::-;2913:32;2935:9;2913:21;:32::i;:::-;2955:41;2980:15;2955:24;:41::i;:::-;1879:1124;;;;;;;;;887:4626;;350:176:7;424:1;414:7;:11;:26;;;;;439:1;429:7;:11;414:26;406:53;;;;-1:-1:-1;;;406:53:7;;4702:2:134;406:53:7;;;4684:21:134;4741:2;4721:18;;;4714:30;-1:-1:-1;;;4760:18:134;;;4753:44;4814:18;;406:53:7;4500:338:134;406:53:7;470:6;:16;;;501:18;;2947:25:134;;;501:18:7;;2935:2:134;2920:18;501::7;;;;;;;;350:176;:::o;355:209:6:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:6;;5045:2:134;418:64:6;;;5027:21:134;5084:2;5064:18;;;5057:30;-1:-1:-1;;;5103:18:134;;;5096:48;5161:18;;418:64:6;4843:342:134;418:64:6;493:11;:24;;;532:25;;2947::134;;;532::6;;2935:2:134;2920:18;532:25:6;2801:177:134;366:213:9;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:9;;5392:2:134;443:51:9;;;5374:21:134;5431:2;5411:18;;;5404:30;-1:-1:-1;;;5450:18:134;;;5443:41;5501:18;;443:51:9;5190:335:134;443:51:9;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;600:185:10:-;-1:-1:-1;;;;;680:29:10;;672:64;;;;-1:-1:-1;;;672:64:10;;8722:2:134;672:64:10;;;8704:21:134;8761:2;8741:18;;;8734:30;8800:24;8780:18;;;8773:52;8842:18;;672:64:10;8520:346:134;672:64:10;746:14;:32;;-1:-1:-1;;;;;;746:32:10;-1:-1:-1;;;;;746:32:10;;;;;;;;;;600:185::o;14:177:134:-;93:13;;-1:-1:-1;;;;;135:31:134;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:134;552:16;;545:27;328:250::o;583:1511::-;735:6;743;751;759;767;775;783;791;799;852:3;840:9;831:7;827:23;823:33;820:53;;;869:1;866;859:12;820:53;892:40;922:9;892:40;:::i;:::-;882:50;;951:49;996:2;985:9;981:18;951:49;:::i;:::-;941:59;;1019:49;1064:2;1053:9;1049:18;1019:49;:::i;:::-;1009:59;;1108:2;1097:9;1093:18;1087:25;1077:35;;1131:50;1176:3;1165:9;1161:19;1131:50;:::i;:::-;1221:3;1206:19;;1200:26;1270:3;1255:19;;1249:26;1121:60;;-1:-1:-1;1200:26:134;-1:-1:-1;;;;;;1324:14:134;;;1321:34;;;1351:1;1348;1341:12;1321:34;1389:6;1378:9;1374:22;1364:32;;1434:7;1427:4;1423:2;1419:13;1415:27;1405:55;;1456:1;1453;1446:12;1405:55;1485:2;1479:9;1507:2;1503;1500:10;1497:36;;;1513:18;;:::i;:::-;1588:2;1582:9;1556:2;1642:13;;-1:-1:-1;;1638:22:134;;;1662:2;1634:31;1630:40;1618:53;;;1686:18;;;1706:22;;;1683:46;1680:72;;;1732:18;;:::i;:::-;1772:10;1768:2;1761:22;1807:2;1799:6;1792:18;1847:7;1842:2;1837;1833;1829:11;1825:20;1822:33;1819:53;;;1868:1;1865;1858:12;1819:53;1881:68;1946:2;1941;1933:6;1929:15;1924:2;1920;1916:11;1881:68;:::i;:::-;1968:6;1958:16;;;;;;;2014:3;2003:9;1999:19;1993:26;1983:36;;2038:50;2083:3;2072:9;2068:19;2038:50;:::i;:::-;2028:60;;583:1511;;;;;;;;;;;:::o;2983:208::-;3053:6;3106:2;3094:9;3085:7;3081:23;3077:32;3074:52;;;3122:1;3119;3112:12;3074:52;3145:40;3175:9;3145:40;:::i;:::-;3135:50;2983:208;-1:-1:-1;;;2983:208:134:o;3857:277::-;3924:6;3977:2;3965:9;3956:7;3952:23;3948:32;3945:52;;;3993:1;3990;3983:12;3945:52;4025:9;4019:16;4078:5;4071:13;4064:21;4057:5;4054:32;4044:60;;4100:1;4097;4090:12;5530:380;5609:1;5605:12;;;;5652;;;5673:61;;5727:4;5719:6;5715:17;5705:27;;5673:61;5780:2;5772:6;5769:14;5749:18;5746:38;5743:161;;5826:10;5821:3;5817:20;5814:1;5807:31;5861:4;5858:1;5851:15;5889:4;5886:1;5879:15;5743:161;;5530:380;;;:::o;6041:545::-;6143:2;6138:3;6135:11;6132:448;;;6179:1;6204:5;6200:2;6193:17;6249:4;6245:2;6235:19;6319:2;6307:10;6303:19;6300:1;6296:27;6290:4;6286:38;6355:4;6343:10;6340:20;6337:47;;;-1:-1:-1;6378:4:134;6337:47;6433:2;6428:3;6424:12;6421:1;6417:20;6411:4;6407:31;6397:41;;6488:82;6506:2;6499:5;6496:13;6488:82;;;6551:17;;;6532:1;6521:13;6488:82;;;6492:3;;;6132:448;6041:545;;;:::o;6762:1352::-;6882:10;;-1:-1:-1;;;;;6904:30:134;;6901:56;;;6937:18;;:::i;:::-;6966:97;7056:6;7016:38;7048:4;7042:11;7016:38;:::i;:::-;7010:4;6966:97;:::i;:::-;7118:4;;7182:2;7171:14;;7199:1;7194:663;;;;7901:1;7918:6;7915:89;;;-1:-1:-1;7970:19:134;;;7964:26;7915:89;-1:-1:-1;;6719:1:134;6715:11;;;6711:24;6707:29;6697:40;6743:1;6739:11;;;6694:57;8017:81;;7164:944;;7194:663;5988:1;5981:14;;;6025:4;6012:18;;-1:-1:-1;;7230:20:134;;;7348:236;7362:7;7359:1;7356:14;7348:236;;;7451:19;;;7445:26;7430:42;;7543:27;;;;7511:1;7499:14;;;;7378:19;;7348:236;;;7352:3;7612:6;7603:7;7600:19;7597:201;;;7673:19;;;7667:26;-1:-1:-1;;7756:1:134;7752:14;;;7768:3;7748:24;7744:37;7740:42;7725:58;7710:74;;7597:201;-1:-1:-1;;;;;7844:1:134;7828:14;;;7824:22;7811:36;;-1:-1:-1;6762:1352:134:o;8119:396::-;8268:2;8257:9;8250:21;8231:4;8300:6;8294:13;8343:6;8338:2;8327:9;8323:18;8316:34;8359:79;8431:6;8426:2;8415:9;8411:18;8406:2;8398:6;8394:15;8359:79;:::i;:::-;8499:2;8478:15;-1:-1:-1;;8474:29:134;8459:45;;;;8506:2;8455:54;;8119:396;-1:-1:-1;;8119:396:134:o;8520:346::-;887:4626:27;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806369130c8d116100f95780639c54df6411610097578063be9cd05211610071578063be9cd052146103c1578063cd29c71a146103d4578063d103449c146103e9578063db83814e146103fc57600080fd5b80639c54df6414610378578063a230c5241461038b578063b5a8a3a1146103ae57600080fd5b806380f55605116100d357806380f5560514610338578063810e8c041461034157806388098e3a146103545780638e99076a1461036557600080fd5b806369130c8d1461030a578063704802751461031d5780637c0f6b351461033057600080fd5b806324d7806c116101665780633b4da69f116101405780633b4da69f146102be57806341dcea91146102d15780635daf08ca146102e457806368839d28146102f757600080fd5b806324d7806c1461027e5780632a79c611146102a157806331ae450b146102a957600080fd5b806311aee380116101a257806311aee3801461021957806314bfd6d01461022b5780631785f53c14610256578063206110db1461026957600080fd5b806303ffe330146101c957806310972e90146101f15780631130630c14610204575b600080fd5b6101dc6101d73660046118e4565b61044f565b60405190151581526020015b60405180910390f35b6101dc6101ff366004611910565b610659565b6102176102123660046119c1565b6106af565b005b600a545b6040519081526020016101e8565b61023e610239366004611910565b6106f3565b6040516001600160a01b0390911681526020016101e8565b610217610264366004611a41565b61071d565b61027161083f565b6040516101e89190611ab5565b6101dc61028c366004611a41565b600d6020526000908152604090205460ff1681565b60285461021d565b6102b1610918565b6040516101e89190611b17565b6102176102cc3660046118e4565b61097a565b603c5461023e906001600160a01b031681565b61023e6102f2366004611910565b610a13565b6101dc6103053660046119c1565b610a23565b610217610318366004611910565b610aa2565b61021761032b366004611a41565b610ada565b6102b1610ccf565b61021d60325481565b61021761034f3660046119c1565b610d2f565b6000546001600160a01b031661023e565b6101dc610373366004611a41565b610d67565b6102b1610386366004611b64565b610e4e565b6101dc610399366004611a41565b600b6020526000908152604090205460ff1681565b6102176103bc366004611a41565b61104b565b6102176103cf366004611910565b61109c565b6103dc6110d4565b6040516101e89190611c16565b6102176103f73660046119c1565b611162565b604080518082018252600080825260209182015281518083018352915482526041546001600160a01b03169082015260408051825181526020928301516001600160a01b031692810192909252016101e8565b6043546000906001600160a01b03166105815761046b83610d67565b8061057a57506043546001600160a01b0316158015906104fd5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190611c29565b801561057a5750604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c7906044015b602060405180830381865afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611c29565b9050610653565b6043546001600160a01b03161580159061060d5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c29565b1561061a57506000610653565b604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401610539565b92915050565b6000805b603d548110156106a65782603d828154811061067b5761067b611c4b565b9060005260206000200154036106945750600192915050565b8061069e81611c77565b91505061065d565b50600092915050565b336000908152600d602052604090205460ff166106e75760405162461bcd60e51b81526004016106de90611c90565b60405180910390fd5b6106f08161119a565b50565b600c818154811061070357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600d602052604090205460ff1661074c5760405162461bcd60e51b81526004016106de90611c90565b60005b600c548110156107e657816001600160a01b0316600c828154811061077657610776611c4b565b6000918252602090912001546001600160a01b0316036107d4576000600c82815481106107a5576107a5611c4b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107de81611c77565b91505061074f565b506001600160a01b0381166000818152600d6020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606014805480602002602001604051908101604052809291908181526020016000905b8282101561090f57838290600052602060002001805461088290611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90611cb7565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b505050505081526020019060010190610863565b50505050905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561097057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610952575b5050505050905090565b6000546001600160a01b031633146109c15760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6109cb828261044f565b610a055760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106de565b610a0f8282611215565b5050565b600a818154811061070357600080fd5b6014546000908103610a3757506000919050565b81516020808401919091206000818152601590925260409091205415610a605750600192915050565b806014600081548110610a7557610a75611c4b565b90600052602060002001604051610a8c9190611cf1565b6040518091039020036106a65750600192915050565b336000908152600d602052604090205460ff16610ad15760405162461bcd60e51b81526004016106de90611c90565b6106f081611348565b336000908152600d602052604090205460ff16610b095760405162461bcd60e51b81526004016106de90611c90565b6001600160a01b0381166000908152600b602052604090205460ff16158015610bfd5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190611d67565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190611d84565b155b15610c395760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106de565b6001600160a01b0381166000818152600d60209081526040808320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610834565b6060600a805480602002602001604051908101604052809291908181526020018280548015610970576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610952575050505050905090565b336000908152600d602052604090205460ff16610d5e5760405162461bcd60e51b81526004016106de90611c90565b6106f0816114d5565b604254604080549051634bcd303f60e11b815260048101919091526000916001600160a01b03169063979a607e90602401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190611d67565b6041546040516307358f4160e31b81526001600160a01b03918216600482015284821660248201529116906339ac7a0890604401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611c29565b336000908152600d602052604090205460609060ff16610e805760405162461bcd60e51b81526004016106de90611c90565b60005b825181101561104457600b6000848381518110610ea257610ea2611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ef457828181518110610edf57610edf611c4b565b60006020918202929092010152600101610e83565b600d6000848381518110610f0a57610f0a611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661103c57600c838281518110610f4957610f49611c4b565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091600d91869085908110610f9d57610f9d611c4b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec83828151811061100f5761100f611c4b565b602002602001015160405161103391906001600160a01b0391909116815260200190565b60405180910390a15b600101610e83565b5090919050565b336000908152600d602052604090205460ff1661107a5760405162461bcd60e51b81526004016106de90611c90565b604380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff166110cb5760405162461bcd60e51b81526004016106de90611c90565b6106f0816116d5565b601e80546110e190611cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90611cb7565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505081565b336000908152600d602052604090205460ff166111915760405162461bcd60e51b81526004016106de90611c90565b6106f08161175b565b60008151116111d95760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106de565b601e6111e58282611dec565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108349190611c16565b6000546001600160a01b0316331461125c5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6001600160a01b0382166000908152600b602052604090205460ff16156112b85760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106de565b6001600160a01b0382166000818152600b6020526040808220805460ff19166001908117909155600a8054918201815583527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190611d67565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114299190810190611eac565b5151116114695760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106de565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b6114de81610a23565b61151d5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106de565b80516020808301919091206000818152601590925260409091205460145461154790600190611f5c565b811461165857601480546000919061156190600190611f5c565b8154811061157157611571611c4b565b90600052602060002001805461158690611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290611cb7565b80156115ff5780601f106115d4576101008083540402835291602001916115ff565b820191906000526020600020905b8154815290600101906020018083116115e257829003601f168201915b50505050509050600081805190602001209050826015600083815260200190815260200160002081905550816014848154811061163e5761163e611c4b565b9060005260206000200190816116549190611dec565b5050505b601480548061166957611669611f6f565b6001900381819060005260206000200160006116859190611881565b905560008281526015602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad09906116c8908590611c16565b60405180910390a1505050565b6000811180156116e55750600b81105b6117265760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106de565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610834565b80516020820120601454600090156117c3576000828152601560205260409020541515806117ba575081601460008154811061179957611799611c4b565b906000526020600020016040516117b09190611cf1565b6040518091039020145b156117c3575060015b80156118065760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106de565b601480546000848152601560205260408120829055600182018355919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec016118518482611dec565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516116c89190611c16565b50805461188d90611cb7565b6000825580601f1061189d575050565b601f0160209004906000526020600020908101906106f091905b808211156118cb57600081556001016118b7565b5090565b6001600160a01b03811681146106f057600080fd5b600080604083850312156118f757600080fd5b8235611902816118cf565b946020939093013593505050565b60006020828403121561192257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196257611962611929565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199157611991611929565b604052919050565b600067ffffffffffffffff8211156119b3576119b3611929565b50601f01601f191660200190565b6000602082840312156119d357600080fd5b813567ffffffffffffffff8111156119ea57600080fd5b8201601f810184136119fb57600080fd5b8035611a0e611a0982611999565b611968565b818152856020838501011115611a2357600080fd5b81602084016020830137600091810160200191909152949350505050565b600060208284031215611a5357600080fd5b8135611a5e816118cf565b9392505050565b60005b83811015611a80578181015183820152602001611a68565b50506000910152565b60008151808452611aa1816020860160208601611a65565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b0a57603f19888603018452611af8858351611a89565b94509285019290850190600101611adc565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611b585783516001600160a01b031683529284019291840191600101611b33565b50909695505050505050565b60006020808385031215611b7757600080fd5b823567ffffffffffffffff80821115611b8f57600080fd5b818501915085601f830112611ba357600080fd5b813581811115611bb557611bb5611929565b8060051b9150611bc6848301611968565b8181529183018401918481019088841115611be057600080fd5b938501935b83851015611c0a5784359250611bfa836118cf565b8282529385019390850190611be5565b98975050505050505050565b602081526000611a5e6020830184611a89565b600060208284031215611c3b57600080fd5b81518015158114611a5e57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c8957611c89611c61565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c90821680611ccb57607f821691505b602082108103611ceb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808354611cff81611cb7565b60018281168015611d175760018114611d2c57611d5b565b60ff1984168752821515830287019450611d5b565b8760005260208060002060005b85811015611d525781548a820152908401908201611d39565b50505082870194505b50929695505050505050565b600060208284031215611d7957600080fd5b8151611a5e816118cf565b600060208284031215611d9657600080fd5b5051919050565b601f821115611de757600081815260208120601f850160051c81016020861015611dc45750805b601f850160051c820191505b81811015611de357828155600101611dd0565b5050505b505050565b815167ffffffffffffffff811115611e0657611e06611929565b611e1a81611e148454611cb7565b84611d9d565b602080601f831160018114611e4f5760008415611e375750858301515b600019600386901b1c1916600185901b178555611de3565b600085815260208120601f198616915b82811015611e7e57888601518255948401946001909101908401611e5f565b5085821015611e9c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808385031215611ebf57600080fd5b825167ffffffffffffffff80821115611ed757600080fd5b9084019060408287031215611eeb57600080fd5b611ef361193f565b825182811115611f0257600080fd5b83019150601f82018713611f1557600080fd5b8151611f23611a0982611999565b8181528886838601011115611f3757600080fd5b611f4682878301888701611a65565b8252509183015192820192909252949350505050565b8181038181111561065357610653611c61565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a58bd4de25921d046aa808afa80a61eae3b6dfe021e8731928b91bc18eb4bc2064736f6c63430008130033", - "sourceMap": "887:4626:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4189:640;;;;;;:::i;:::-;;:::i;:::-;;;635:14:167;;628:22;610:41;;598:2;583:18;4189:640:31;;;;;;;;1167:246:11;;;;;;:::i;:::-;;:::i;5393:118:31:-;;;;;;:::i;:::-;;:::i;:::-;;3630:91:9;3700:7;:14;3630:91;;;2537:25:167;;;2525:2;2510:18;3630:91:9;2391:177:167;742:23:9;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2737:32:167;;;2719:51;;2707:2;2692:18;742:23:9;2573:203:167;3218:301:9;;;;;;:::i;:::-;;:::i;2041:94:13:-;;;:::i;:::-;;;;;;;:::i;818:48:9:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;570:99:7;651:11;;570:99;;3525::9;;;:::i;:::-;;;;;;;:::i;3139:175:31:-;;;;;;:::i;:::-;;:::i;389:38:11:-;;;;;-1:-1:-1;;;;;389:38:11;;;617:24:9;;;;;;:::i;:::-;;:::i;2379:313:13:-;;;;;;:::i;:::-;;:::i;4835:110:31:-;;;;;;:::i;:::-;;:::i;1826:361:9:-;;;;;;:::i;:::-;;:::i;1563:104::-;;;:::i;313:30:8:-;;;;;;5169:98:31;;;;;;:::i;:::-;;:::i;520:105:5:-;577:7;611:6;-1:-1:-1;;;;;611:6:5;520:105;;3624:255:31;;;;;;:::i;:::-;;:::i;2534:678:9:-;;;;;;:::i;:::-;;:::i;648:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3009:124:31;;;;;;:::i;:::-;;:::i;5273:114::-;;;;;;:::i;:::-;;:::i;325:34:10:-;;;:::i;:::-;;;;;;;:::i;5071:92:31:-;;;;;;:::i;:::-;;:::i;4951:114::-;-1:-1:-1;;;;;;;;;;;;;;;;;5044:14:31;;;;;;;;;;;;;-1:-1:-1;;;;;5044:14:31;;;;;4951:114;;;6520:13:167;;6502:32;;6594:4;6582:17;;;6576:24;-1:-1:-1;;;;;6572:50:167;6550:20;;;6543:80;;;;6475:18;4951:114:31;6286:343:167;4189:640:31;4303:14;;4283:4;;-1:-1:-1;;;;;4303:14:31;4299:524;;4354:29;4376:6;4354:21;:29::i;:::-;:250;;;-1:-1:-1;4425:14:31;;-1:-1:-1;;;;;4425:14:31;:28;;;;:75;;;4474:14;;;;;;;;;-1:-1:-1;;;;;4474:14:31;-1:-1:-1;;;;;4457:41:31;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4425:161;;;;-1:-1:-1;4545:14:31;;4528:58;;-1:-1:-1;;;4528:58:31;;-1:-1:-1;;;;;7108:32:167;;;4528:58:31;;;7090:51:167;7157:18;;;7150:34;;;4545:14:31;;;;4528:44;;7063:18:167;;4528:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4347:257;;;;4299:524;4639:14;;-1:-1:-1;;;;;4639:14:31;:28;;;;:75;;;4688:14;;;;;;;;;-1:-1:-1;;;;;4688:14:31;-1:-1:-1;;;;;4671:41:31;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4635:177;;;-1:-1:-1;4723:5:31;4716:12;;4635:177;4771:14;;4754:58;;-1:-1:-1;;;4754:58:31;;-1:-1:-1;;;;;7108:32:167;;;4754:58:31;;;7090:51:167;7157:18;;;7150:34;;;4771:14:31;;;;4754:44;;7063:18:167;;4754:58:31;6916:274:167;4635:177:31;4189:640;;;;:::o;1167:246:11:-;1242:4;;1258:127;1282:16;:23;1278:27;;1258:127;;;1353:8;1330:16;1347:1;1330:19;;;;;;;;:::i;:::-;;;;;;;;;:31;1326:48;;-1:-1:-1;1370:4:11;;1167:246;-1:-1:-1;;1167:246:11:o;1326:48::-;1307:3;;;;:::i;:::-;;;;1258:127;;;-1:-1:-1;1401:5:11;;1167:246;-1:-1:-1;;1167:246:11:o;5393:118:31:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;;;;;;;;;5479:25:31::1;5495:8;5479:15;:25::i;:::-;5393:118:::0;:::o;742:23:9:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;742:23:9;;-1:-1:-1;742:23:9;:::o;3218:301::-;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;3296:9:::1;3291:148;3315:6;:13:::0;3311:17;::::1;3291:148;;;3366:6;-1:-1:-1::0;;;;;3353:19:9::1;:6;3360:1;3353:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;3353:9:9::1;:19:::0;3349:80:::1;;3412:1;3392:6;3399:1;3392:9;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;;-1:-1:-1::0;;;;;3392:22:9::1;;;;;-1:-1:-1::0;;;;;3392:22:9::1;;;;;;3349:80;3330:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3291:148;;;-1:-1:-1::0;;;;;;3448:15:9;::::1;3466:5;3448:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;-1:-1:-1;;3448:23:9::1;::::0;;3486:26;;2719:51:167;;;3486:26:9::1;::::0;2692:18:167;3486:26:9::1;;;;;;;;3218:301:::0;:::o;2041:94:13:-;2090:15;2124:4;2117:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2041:94;:::o;3525:99:9:-;3576:16;3611:6;3604:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3604:13:9;;;;;;;;;;;;;;;;;;;;;;;3525:99;:::o;3139:175:31:-;474:6:5;;-1:-1:-1;;;;;474:6:5;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:5;;8528:2:167;444:52:5;;;8510:21:167;8567:2;8547:18;;;8540:30;-1:-1:-1;;;8586:18:167;;;8579:40;8636:18;;444:52:5;8326:334:167;444:52:5;3230:24:31::1;3238:9;3249:4;3230:7;:24::i;:::-;3222:48;;;::::0;-1:-1:-1;;;3222:48:31;;8867:2:167;3222:48:31::1;::::0;::::1;8849:21:167::0;8906:2;8886:18;;;8879:30;-1:-1:-1;;;8925:18:167;;;8918:41;8976:18;;3222:48:31::1;8665:335:167::0;3222:48:31::1;3280:27;3291:9;3302:4;3280:10;:27::i;:::-;3139:175:::0;;:::o;617:24:9:-;;;;;;;;;;;;2379:313:13;2470:4;:11;2450:4;;2470:16;;2466:34;;-1:-1:-1;2495:5:13;;2379:313;-1:-1:-1;2379:313:13:o;2466:34::-;2529:22;;;;;;;;;;2511:15;2566;;;:6;:15;;;;;;;;:20;2562:37;;-1:-1:-1;2595:4:13;;2379:313;-1:-1:-1;;2379:313:13:o;2562:37::-;2642:7;2629:4;2634:1;2629:7;;;;;;;;:::i;:::-;;;;;;;;2613:25;;;;;;:::i;:::-;;;;;;;;:36;2609:53;;-1:-1:-1;2658:4:13;;2379:313;-1:-1:-1;;2379:313:13:o;4835:110:31:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;4913:25:31::1;4929:8;4913:15;:25::i;1826:361:9:-:0;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;1915:16:9;::::1;;::::0;;;:8:::1;:16;::::0;;;;;::::1;;1914:17;1913:134:::0;::::1;;;;1990:4;-1:-1:-1::0;;;;;1969:42:9::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1953:88;::::0;-1:-1:-1;;;1953:88:9;;-1:-1:-1;;;;;2737:32:167;;;1953:88:9::1;::::0;::::1;2719:51:167::0;1953:80:9;;;::::1;::::0;::::1;::::0;2692:18:167;;1953:88:9::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93:::0;1913:134:::1;1896:184;;;2058:22;::::0;-1:-1:-1;;;2058:22:9;;10630:2:167;2058:22:9::1;::::0;::::1;10612:21:167::0;10669:2;10649:18;;;10642:30;-1:-1:-1;;;10688:18:167;;;10681:42;10740:18;;2058:22:9::1;10428:336:167::0;1896:184:9::1;-1:-1:-1::0;;;;;2090:15:9;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;2090:22:9::1;2108:4;2090:22:::0;;::::1;::::0;;;2122:6:::1;:19:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2122:19:9::1;::::0;::::1;::::0;;2156:24;;2719:51:167;;;2156:24:9::1;::::0;2692:18:167;2156:24:9::1;2573:203:167::0;1563:104:9;1618:16;1653:7;1646:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1646:14:9;;;;;;;;;;;;;;;;;;;;;;1563:104;:::o;5169:98:31:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;5245:15:31::1;5256:3;5245:10;:15::i;3624:255::-:0;3753:8;;3791:7;:20;;3743:69;;-1:-1:-1;;;3743:69:31;;;;;2537:25:167;;;;3701:4:31;;-1:-1:-1;;;;;3753:8:31;;3743:47;;2510:18:167;;3743:69:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3836:18;;:7;3724:148;-1:-1:-1;;;3724:148:31;;-1:-1:-1;;;;;3836:18:31;;;3724:148;;;10981:34:167;11051:15;;;11031:18;;;11024:43;3724:98:31;;;;;10916:18:167;;3724:148:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2534:678:9:-;992:10;984:19;;;;:7;:19;;;;;;2616:16;;984:19;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2644:9:::1;2663:517;2675:9;:16;2671:1;:20;2663:517;;;2713:8;:22;2722:9;2732:1;2722:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2713:22:9::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2713:22:9;;::::1;;2708:178;;2762:9;2772:1;2762:12;;;;;;;;:::i;:::-;2755:19;2762:12;::::0;;::::1;::::0;;;;;2755:19;2824:3:::1;;2663:517;;2708:178;2904:7;:21;2912:9;2922:1;2912:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2904:21:9::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2904:21:9;;::::1;;2899:211;;2945:6;2957:9;2967:1;2957:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;2945:25;;::::1;::::0;;::::1;::::0;;-1:-1:-1;2945:25:9;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2945:25:9::1;-1:-1:-1::0;;;;;2945:25:9;;::::1;::::0;;;::::1;::::0;;3021:12;;2945:25;;3013:7:::1;::::0;3021:12;;3031:1;;3021:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;3013:21:9::1;-1:-1:-1::0;;;;;3013:21:9::1;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3065:30;3082:9;3092:1;3082:12;;;;;;;;:::i;:::-;;;;;;;3065:30;;;;;-1:-1:-1::0;;;;;2737:32:167;;;;2719:51;;2707:2;2692:18;;2573:203;3065:30:9::1;;;;;;;;2899:211;3152:3;;2663:517;;;-1:-1:-1::0;3196:9:9;;2534:678;-1:-1:-1;2534:678:9:o;3009:124:31:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;3093:14:31::1;:33:::0;;-1:-1:-1;;;;;;3093:33:31::1;-1:-1:-1::0;;;;;3093:33:31;;;::::1;::::0;;;::::1;::::0;;3009:124::o;5273:114::-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;5354:26:31::1;5369:10;5354:14;:26::i;325:34:10:-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5071:92:31:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;5144:12:31::1;5152:3;5144:7;:12::i;366:213:10:-:0;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:10;;11280:2:167;443:51:10;;;11262:21:167;11319:2;11299:18;;;11292:30;-1:-1:-1;;;11338:18:167;;;11331:41;11389:18;;443:51:10;11078:335:167;443:51:10;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;1072:244:9:-;474:6:5;;-1:-1:-1;;;;;474:6:5;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:5;;8528:2:167;444:52:5;;;8510:21:167;8567:2;8547:18;;;8540:30;-1:-1:-1;;;8586:18:167;;;8579:40;8636:18;;444:52:5;8326:334:167;444:52:5;-1:-1:-1;;;;;1172:19:9;::::1;;::::0;;;:8:::1;:19;::::0;;;;;::::1;;1171:20;1163:49;;;::::0;-1:-1:-1;;;1163:49:9;;13701:2:167;1163:49:9::1;::::0;::::1;13683:21:167::0;13740:2;13720:18;;;13713:30;-1:-1:-1;;;13759:18:167;;;13752:46;13815:18;;1163:49:9::1;13499:340:167::0;1163:49:9::1;-1:-1:-1::0;;;;;1222:19:9;::::1;;::::0;;;:8:::1;:19;::::0;;;;;:26;;-1:-1:-1;;1222:26:9::1;1244:4;1222:26:::0;;::::1;::::0;;;1258:7:::1;:23:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;1258:23:9::1;::::0;;::::1;::::0;;;1296:13;;::::1;::::0;1222:19;1296:13:::1;1072:244:::0;;:::o;791:370:11:-;895:14;;879:49;;;-1:-1:-1;;;879:49:11;;;;853:23;;-1:-1:-1;;;;;895:14:11;;879:47;;:49;;;;;;;;;;;;;;895:14;879:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;965:56;;-1:-1:-1;;;965:56:11;;;;;2537:25:167;;;853:75:11;;-1:-1:-1;1044:1:11;;-1:-1:-1;;;;;965:46:11;;;;;2510:18:167;;965:56:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;965:56:11;;;;;;;;;;;;:::i;:::-;:68;959:82;:86;938:135;;;;-1:-1:-1;;;938:135:11;;15061:2:167;938:135:11;;;15043:21:167;15100:2;15080:18;;;15073:30;-1:-1:-1;;;15119:18:167;;;15112:44;15173:18;;938:135:11;14859:338:167;938:135:11;1083:16;:31;;;;;;;-1:-1:-1;1083:31:11;;;;;;;;;1129:25;;2537::167;;;1129::11;;2525:2:167;2510:18;1129:25:11;;;;;;;843:318;791:370;:::o;1307:536:13:-;1374:17;1386:4;1374:11;:17::i;:::-;1366:46;;;;-1:-1:-1;;;1366:46:13;;15404:2:167;1366:46:13;;;15386:21:167;15443:2;15423:18;;;15416:30;-1:-1:-1;;;15462:18:167;;;15455:46;15518:18;;1366:46:13;15202:340:167;1366:46:13;1441:22;;;;;;;;;;1423:15;1489;;;:6;:15;;;;;;;;1528:4;:11;:15;;1542:1;;1528:15;:::i;:::-;1519:5;:24;1515:238;;1583:4;1588:11;;1559:21;;1583:4;1588:15;;1602:1;;1588:15;:::i;:::-;1583:21;;;;;;;;:::i;:::-;;;;;;;;1559:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:19;1656:7;1640:25;;;;;;1618:47;;1702:5;1680:6;:19;1687:11;1680:19;;;;;;;;;;;:27;;;;1735:7;1721:4;1726:5;1721:11;;;;;;;;:::i;:::-;;;;;;;;:21;;;;;;:::i;:::-;;1545:208;;1515:238;1763:4;:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1790:15;;;;:6;:15;;;;;;1783:22;;;;1820:16;;;;;1831:4;;1820:16;:::i;:::-;;;;;;;;1356:487;;1307:536;:::o;355:209:7:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:7;;16014:2:167;418:64:7;;;15996:21:167;16053:2;16033:18;;;16026:30;-1:-1:-1;;;16072:18:167;;;16065:48;16130:18;;418:64:7;15812:342:167;418:64:7;493:11;:24;;;532:25;;2537::167;;;532::7;;2525:2:167;2510:18;532:25:7;2391:177:167;677:442:13;751:22;;;;;;816:4;:11;733:15;;816:16;812:158;;852:15;;;;:6;:15;;;;;;:20;;;:60;;;905:7;892:4;897:1;892:7;;;;;;;;:::i;:::-;;;;;;;;876:25;;;;;;:::i;:::-;;;;;;;;:36;852:60;848:112;;;-1:-1:-1;941:4:13;848:112;988:6;987:7;979:38;;;;-1:-1:-1;;;979:38:13;;16361:2:167;979:38:13;;;16343:21:167;16400:2;16380:18;;;16373:30;-1:-1:-1;;;16419:18:167;;;16412:48;16477:18;;979:38:13;16159:342:167;979:38:13;1046:4;:11;;1028:15;;;;:6;:15;;;;;:29;;;1067:15;;;;;;;;;;;;1077:4;1067:15;;:::i;:::-;;1098:14;1107:4;1098:14;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:167:-;-1:-1:-1;;;;;89:31:167;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:167:o;662:180::-;721:6;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;-1:-1:-1;813:23:167;;662:180;-1:-1:-1;662:180:167:o;847:127::-;908:10;903:3;899:20;896:1;889:31;939:4;936:1;929:15;963:4;960:1;953:15;979:257;1051:4;1045:11;;;1083:17;;1130:18;1115:34;;1151:22;;;1112:62;1109:88;;;1177:18;;:::i;:::-;1213:4;1206:24;979:257;:::o;1241:275::-;1312:2;1306:9;1377:2;1358:13;;-1:-1:-1;;1354:27:167;1342:40;;1412:18;1397:34;;1433:22;;;1394:62;1391:88;;;1459:18;;:::i;:::-;1495:2;1488:22;1241:275;;-1:-1:-1;1241:275:167:o;1521:187::-;1570:4;1603:18;1595:6;1592:30;1589:56;;;1625:18;;:::i;:::-;-1:-1:-1;1691:2:167;1670:15;-1:-1:-1;;1666:29:167;1697:4;1662:40;;1521:187::o;1713:673::-;1782:6;1835:2;1823:9;1814:7;1810:23;1806:32;1803:52;;;1851:1;1848;1841:12;1803:52;1891:9;1878:23;1924:18;1916:6;1913:30;1910:50;;;1956:1;1953;1946:12;1910:50;1979:22;;2032:4;2024:13;;2020:27;-1:-1:-1;2010:55:167;;2061:1;2058;2051:12;2010:55;2097:2;2084:16;2122:49;2138:32;2167:2;2138:32;:::i;:::-;2122:49;:::i;:::-;2194:2;2187:5;2180:17;2234:7;2229:2;2224;2220;2216:11;2212:20;2209:33;2206:53;;;2255:1;2252;2245:12;2206:53;2310:2;2305;2301;2297:11;2292:2;2285:5;2281:14;2268:45;2354:1;2333:14;;;2349:2;2329:23;2322:34;;;;2337:5;1713:673;-1:-1:-1;;;;1713:673:167:o;2781:247::-;2840:6;2893:2;2881:9;2872:7;2868:23;2864:32;2861:52;;;2909:1;2906;2899:12;2861:52;2948:9;2935:23;2967:31;2992:5;2967:31;:::i;:::-;3017:5;2781:247;-1:-1:-1;;;2781:247:167:o;3033:250::-;3118:1;3128:113;3142:6;3139:1;3136:13;3128:113;;;3218:11;;;3212:18;3199:11;;;3192:39;3164:2;3157:10;3128:113;;;-1:-1:-1;;3275:1:167;3257:16;;3250:27;3033:250::o;3288:271::-;3330:3;3368:5;3362:12;3395:6;3390:3;3383:19;3411:76;3480:6;3473:4;3468:3;3464:14;3457:4;3450:5;3446:16;3411:76;:::i;:::-;3541:2;3520:15;-1:-1:-1;;3516:29:167;3507:39;;;;3548:4;3503:50;;3288:271;-1:-1:-1;;3288:271:167:o;3564:803::-;3726:4;3755:2;3795;3784:9;3780:18;3825:2;3814:9;3807:21;3848:6;3883;3877:13;3914:6;3906;3899:22;3952:2;3941:9;3937:18;3930:25;;4014:2;4004:6;4001:1;3997:14;3986:9;3982:30;3978:39;3964:53;;4052:2;4044:6;4040:15;4073:1;4083:255;4097:6;4094:1;4091:13;4083:255;;;4190:2;4186:7;4174:9;4166:6;4162:22;4158:36;4153:3;4146:49;4218:40;4251:6;4242;4236:13;4218:40;:::i;:::-;4208:50;-1:-1:-1;4316:12:167;;;;4281:15;;;;4119:1;4112:9;4083:255;;;-1:-1:-1;4355:6:167;;3564:803;-1:-1:-1;;;;;;;3564:803:167:o;4372:658::-;4543:2;4595:21;;;4665:13;;4568:18;;;4687:22;;;4514:4;;4543:2;4766:15;;;;4740:2;4725:18;;;4514:4;4809:195;4823:6;4820:1;4817:13;4809:195;;;4888:13;;-1:-1:-1;;;;;4884:39:167;4872:52;;4979:15;;;;4944:12;;;;4920:1;4838:9;4809:195;;;-1:-1:-1;5021:3:167;;4372:658;-1:-1:-1;;;;;;4372:658:167:o;5035:1021::-;5119:6;5150:2;5193;5181:9;5172:7;5168:23;5164:32;5161:52;;;5209:1;5206;5199:12;5161:52;5249:9;5236:23;5278:18;5319:2;5311:6;5308:14;5305:34;;;5335:1;5332;5325:12;5305:34;5373:6;5362:9;5358:22;5348:32;;5418:7;5411:4;5407:2;5403:13;5399:27;5389:55;;5440:1;5437;5430:12;5389:55;5476:2;5463:16;5498:2;5494;5491:10;5488:36;;;5504:18;;:::i;:::-;5550:2;5547:1;5543:10;5533:20;;5573:28;5597:2;5593;5589:11;5573:28;:::i;:::-;5635:15;;;5705:11;;;5701:20;;;5666:12;;;;5733:19;;;5730:39;;;5765:1;5762;5755:12;5730:39;5789:11;;;;5809:217;5825:6;5820:3;5817:15;5809:217;;;5905:3;5892:17;5879:30;;5922:31;5947:5;5922:31;:::i;:::-;5966:18;;;5842:12;;;;6004;;;;5809:217;;;6045:5;5035:1021;-1:-1:-1;;;;;;;;5035:1021:167:o;6061:220::-;6210:2;6199:9;6192:21;6173:4;6230:45;6271:2;6260:9;6256:18;6248:6;6230:45;:::i;6634:277::-;6701:6;6754:2;6742:9;6733:7;6729:23;6725:32;6722:52;;;6770:1;6767;6760:12;6722:52;6802:9;6796:16;6855:5;6848:13;6841:21;6834:5;6831:32;6821:60;;6877:1;6874;6867:12;7195:127;7256:10;7251:3;7247:20;7244:1;7237:31;7287:4;7284:1;7277:15;7311:4;7308:1;7301:15;7327:127;7388:10;7383:3;7379:20;7376:1;7369:31;7419:4;7416:1;7409:15;7443:4;7440:1;7433:15;7459:135;7498:3;7519:17;;;7516:43;;7539:18;;:::i;:::-;-1:-1:-1;7586:1:167;7575:13;;7459:135::o;7599:337::-;7801:2;7783:21;;;7840:2;7820:18;;;7813:30;-1:-1:-1;;;7874:2:167;7859:18;;7852:43;7927:2;7912:18;;7599:337::o;7941:380::-;8020:1;8016:12;;;;8063;;;8084:61;;8138:4;8130:6;8126:17;8116:27;;8084:61;8191:2;8183:6;8180:14;8160:18;8157:38;8154:161;;8237:10;8232:3;8228:20;8225:1;8218:31;8272:4;8269:1;8262:15;8300:4;8297:1;8290:15;8154:161;;7941:380;;;:::o;9134:844::-;9264:3;9293:1;9326:6;9320:13;9356:36;9382:9;9356:36;:::i;:::-;9411:1;9428:18;;;9455:133;;;;9602:1;9597:356;;;;9421:532;;9455:133;-1:-1:-1;;9488:24:167;;9476:37;;9561:14;;9554:22;9542:35;;9533:45;;;-1:-1:-1;9455:133:167;;9597:356;9628:6;9625:1;9618:17;9658:4;9703:2;9700:1;9690:16;9728:1;9742:165;9756:6;9753:1;9750:13;9742:165;;;9834:14;;9821:11;;;9814:35;9877:16;;;;9771:10;;9742:165;;;9746:3;;;9936:6;9931:3;9927:16;9920:23;;9421:532;-1:-1:-1;9969:3:167;;9134:844;-1:-1:-1;;;;;;9134:844:167:o;9983:251::-;10053:6;10106:2;10094:9;10085:7;10081:23;10077:32;10074:52;;;10122:1;10119;10112:12;10074:52;10154:9;10148:16;10173:31;10198:5;10173:31;:::i;10239:184::-;10309:6;10362:2;10350:9;10341:7;10337:23;10333:32;10330:52;;;10378:1;10375;10368:12;10330:52;-1:-1:-1;10401:16:167;;10239:184;-1:-1:-1;10239:184:167:o;11418:545::-;11520:2;11515:3;11512:11;11509:448;;;11556:1;11581:5;11577:2;11570:17;11626:4;11622:2;11612:19;11696:2;11684:10;11680:19;11677:1;11673:27;11667:4;11663:38;11732:4;11720:10;11717:20;11714:47;;;-1:-1:-1;11755:4:167;11714:47;11810:2;11805:3;11801:12;11798:1;11794:20;11788:4;11784:31;11774:41;;11865:82;11883:2;11876:5;11873:13;11865:82;;;11928:17;;;11909:1;11898:13;11865:82;;;11869:3;;;11509:448;11418:545;;;:::o;12139:1355::-;12265:3;12259:10;12292:18;12284:6;12281:30;12278:56;;;12314:18;;:::i;:::-;12343:97;12433:6;12393:38;12425:4;12419:11;12393:38;:::i;:::-;12387:4;12343:97;:::i;:::-;12495:4;;12559:2;12548:14;;12576:1;12571:666;;;;13281:1;13298:6;13295:89;;;-1:-1:-1;13350:19:167;;;13344:26;13295:89;-1:-1:-1;;12096:1:167;12092:11;;;12088:24;12084:29;12074:40;12120:1;12116:11;;;12071:57;13397:81;;12541:947;;12571:666;9081:1;9074:14;;;9118:4;9105:18;;-1:-1:-1;;12607:20:167;;;12728:236;12742:7;12739:1;12736:14;12728:236;;;12831:19;;;12825:26;12810:42;;12923:27;;;;12891:1;12879:14;;;;12758:19;;12728:236;;;12732:3;12992:6;12983:7;12980:19;12977:201;;;13053:19;;;13047:26;-1:-1:-1;;13136:1:167;13132:14;;;13148:3;13128:24;13124:37;13120:42;13105:58;13090:74;;12977:201;-1:-1:-1;;;;;13224:1:167;13208:14;;;13204:22;13191:36;;-1:-1:-1;12139:1355:167:o;13844:1010::-;13948:6;13979:2;14022;14010:9;14001:7;13997:23;13993:32;13990:52;;;14038:1;14035;14028:12;13990:52;14071:9;14065:16;14100:18;14141:2;14133:6;14130:14;14127:34;;;14157:1;14154;14147:12;14127:34;14180:22;;;;14236:4;14218:16;;;14214:27;14211:47;;;14254:1;14251;14244:12;14211:47;14280:22;;:::i;:::-;14333:2;14327:9;14361:2;14351:8;14348:16;14345:36;;;14377:1;14374;14367:12;14345:36;14400:17;;;-1:-1:-1;14448:4:167;14440:13;;14436:27;-1:-1:-1;14426:55:167;;14477:1;14474;14467:12;14426:55;14506:2;14500:9;14531:49;14547:32;14576:2;14547:32;:::i;14531:49::-;14603:2;14596:5;14589:17;14643:7;14638:2;14633;14629;14625:11;14621:20;14618:33;14615:53;;;14664:1;14661;14654:12;14615:53;14677:67;14741:2;14736;14729:5;14725:14;14720:2;14716;14712:11;14677:67;:::i;:::-;14753:20;;-1:-1:-1;14811:11:167;;;14805:18;14789:14;;;14782:42;;;;14760:5;13844:1010;-1:-1:-1;;;;13844:1010:167:o;15547:128::-;15614:9;;;15635:11;;;15632:37;;;15649:18;;:::i;15680:127::-;15741:10;15736:3;15732:20;15729:1;15722:31;15772:4;15769:1;15762:15;15796:4;15793:1;15786:15", + "sourceMap": "887:4626:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4189:640;;;;;;:::i;:::-;;:::i;:::-;;;635:14:134;;628:22;610:41;;598:2;583:18;4189:640:27;;;;;;;;1167:246:10;;;;;;:::i;:::-;;:::i;5393:118:27:-;;;;;;:::i;:::-;;:::i;:::-;;3630:91:8;3700:7;:14;3630:91;;;2537:25:134;;;2525:2;2510:18;3630:91:8;2391:177:134;742:23:8;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2737:32:134;;;2719:51;;2707:2;2692:18;742:23:8;2573:203:134;3218:301:8;;;;;;:::i;:::-;;:::i;2041:94:11:-;;;:::i;:::-;;;;;;;:::i;818:48:8:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;570:99:6;651:11;;570:99;;3525::8;;;:::i;:::-;;;;;;;:::i;3139:175:27:-;;;;;;:::i;:::-;;:::i;389:38:10:-;;;;;-1:-1:-1;;;;;389:38:10;;;617:24:8;;;;;;:::i;:::-;;:::i;2379:313:11:-;;;;;;:::i;:::-;;:::i;4835:110:27:-;;;;;;:::i;:::-;;:::i;1826:361:8:-;;;;;;:::i;:::-;;:::i;1563:104::-;;;:::i;313:30:7:-;;;;;;5169:98:27;;;;;;:::i;:::-;;:::i;520:105:4:-;577:7;611:6;-1:-1:-1;;;;;611:6:4;520:105;;3624:255:27;;;;;;:::i;:::-;;:::i;2534:678:8:-;;;;;;:::i;:::-;;:::i;648:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3009:124:27;;;;;;:::i;:::-;;:::i;5273:114::-;;;;;;:::i;:::-;;:::i;325:34:9:-;;;:::i;:::-;;;;;;;:::i;5071:92:27:-;;;;;;:::i;:::-;;:::i;4951:114::-;-1:-1:-1;;;;;;;;;;;;;;;;;5044:14:27;;;;;;;;;;;;;-1:-1:-1;;;;;5044:14:27;;;;;4951:114;;;6520:13:134;;6502:32;;6594:4;6582:17;;;6576:24;-1:-1:-1;;;;;6572:50:134;6550:20;;;6543:80;;;;6475:18;4951:114:27;6286:343:134;4189:640:27;4303:14;;4283:4;;-1:-1:-1;;;;;4303:14:27;4299:524;;4354:29;4376:6;4354:21;:29::i;:::-;:250;;;-1:-1:-1;4425:14:27;;-1:-1:-1;;;;;4425:14:27;:28;;;;:75;;;4474:14;;;;;;;;;-1:-1:-1;;;;;4474:14:27;-1:-1:-1;;;;;4457:41:27;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4425:161;;;;-1:-1:-1;4545:14:27;;4528:58;;-1:-1:-1;;;4528:58:27;;-1:-1:-1;;;;;7108:32:134;;;4528:58:27;;;7090:51:134;7157:18;;;7150:34;;;4545:14:27;;;;4528:44;;7063:18:134;;4528:58:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4347:257;;;;4299:524;4639:14;;-1:-1:-1;;;;;4639:14:27;:28;;;;:75;;;4688:14;;;;;;;;;-1:-1:-1;;;;;4688:14:27;-1:-1:-1;;;;;4671:41:27;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4635:177;;;-1:-1:-1;4723:5:27;4716:12;;4635:177;4771:14;;4754:58;;-1:-1:-1;;;4754:58:27;;-1:-1:-1;;;;;7108:32:134;;;4754:58:27;;;7090:51:134;7157:18;;;7150:34;;;4771:14:27;;;;4754:44;;7063:18:134;;4754:58:27;6916:274:134;4635:177:27;4189:640;;;;:::o;1167:246:10:-;1242:4;;1258:127;1282:16;:23;1278:27;;1258:127;;;1353:8;1330:16;1347:1;1330:19;;;;;;;;:::i;:::-;;;;;;;;;:31;1326:48;;-1:-1:-1;1370:4:10;;1167:246;-1:-1:-1;;1167:246:10:o;1326:48::-;1307:3;;;;:::i;:::-;;;;1258:127;;;-1:-1:-1;1401:5:10;;1167:246;-1:-1:-1;;1167:246:10:o;5393:118:27:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;;;;;;;;;5479:25:27::1;5495:8;5479:15;:25::i;:::-;5393:118:::0;:::o;742:23:8:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;742:23:8;;-1:-1:-1;742:23:8;:::o;3218:301::-;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;3296:9:::1;3291:148;3315:6;:13:::0;3311:17;::::1;3291:148;;;3366:6;-1:-1:-1::0;;;;;3353:19:8::1;:6;3360:1;3353:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;3353:9:8::1;:19:::0;3349:80:::1;;3412:1;3392:6;3399:1;3392:9;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;;-1:-1:-1::0;;;;;3392:22:8::1;;;;;-1:-1:-1::0;;;;;3392:22:8::1;;;;;;3349:80;3330:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3291:148;;;-1:-1:-1::0;;;;;;3448:15:8;::::1;3466:5;3448:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;-1:-1:-1;;3448:23:8::1;::::0;;3486:26;;2719:51:134;;;3486:26:8::1;::::0;2692:18:134;3486:26:8::1;;;;;;;;3218:301:::0;:::o;2041:94:11:-;2090:15;2124:4;2117:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2041:94;:::o;3525:99:8:-;3576:16;3611:6;3604:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3604:13:8;;;;;;;;;;;;;;;;;;;;;;;3525:99;:::o;3139:175:27:-;474:6:4;;-1:-1:-1;;;;;474:6:4;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:4;;8528:2:134;444:52:4;;;8510:21:134;8567:2;8547:18;;;8540:30;-1:-1:-1;;;8586:18:134;;;8579:40;8636:18;;444:52:4;8326:334:134;444:52:4;3230:24:27::1;3238:9;3249:4;3230:7;:24::i;:::-;3222:48;;;::::0;-1:-1:-1;;;3222:48:27;;8867:2:134;3222:48:27::1;::::0;::::1;8849:21:134::0;8906:2;8886:18;;;8879:30;-1:-1:-1;;;8925:18:134;;;8918:41;8976:18;;3222:48:27::1;8665:335:134::0;3222:48:27::1;3280:27;3291:9;3302:4;3280:10;:27::i;:::-;3139:175:::0;;:::o;617:24:8:-;;;;;;;;;;;;2379:313:11;2470:4;:11;2450:4;;2470:16;;2466:34;;-1:-1:-1;2495:5:11;;2379:313;-1:-1:-1;2379:313:11:o;2466:34::-;2529:22;;;;;;;;;;2511:15;2566;;;:6;:15;;;;;;;;:20;2562:37;;-1:-1:-1;2595:4:11;;2379:313;-1:-1:-1;;2379:313:11:o;2562:37::-;2642:7;2629:4;2634:1;2629:7;;;;;;;;:::i;:::-;;;;;;;;2613:25;;;;;;:::i;:::-;;;;;;;;:36;2609:53;;-1:-1:-1;2658:4:11;;2379:313;-1:-1:-1;;2379:313:11:o;4835:110:27:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;4913:25:27::1;4929:8;4913:15;:25::i;1826:361:8:-:0;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;1915:16:8;::::1;;::::0;;;:8:::1;:16;::::0;;;;;::::1;;1914:17;1913:134:::0;::::1;;;;1990:4;-1:-1:-1::0;;;;;1969:42:8::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1953:88;::::0;-1:-1:-1;;;1953:88:8;;-1:-1:-1;;;;;2737:32:134;;;1953:88:8::1;::::0;::::1;2719:51:134::0;1953:80:8;;;::::1;::::0;::::1;::::0;2692:18:134;;1953:88:8::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93:::0;1913:134:::1;1896:184;;;2058:22;::::0;-1:-1:-1;;;2058:22:8;;10630:2:134;2058:22:8::1;::::0;::::1;10612:21:134::0;10669:2;10649:18;;;10642:30;-1:-1:-1;;;10688:18:134;;;10681:42;10740:18;;2058:22:8::1;10428:336:134::0;1896:184:8::1;-1:-1:-1::0;;;;;2090:15:8;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;2090:22:8::1;2108:4;2090:22:::0;;::::1;::::0;;;2122:6:::1;:19:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2122:19:8::1;::::0;::::1;::::0;;2156:24;;2719:51:134;;;2156:24:8::1;::::0;2692:18:134;2156:24:8::1;2573:203:134::0;1563:104:8;1618:16;1653:7;1646:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1646:14:8;;;;;;;;;;;;;;;;;;;;;;1563:104;:::o;5169:98:27:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;5245:15:27::1;5256:3;5245:10;:15::i;3624:255::-:0;3753:8;;3791:7;:20;;3743:69;;-1:-1:-1;;;3743:69:27;;;;;2537:25:134;;;;3701:4:27;;-1:-1:-1;;;;;3753:8:27;;3743:47;;2510:18:134;;3743:69:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3836:18;;:7;3724:148;-1:-1:-1;;;3724:148:27;;-1:-1:-1;;;;;3836:18:27;;;3724:148;;;10981:34:134;11051:15;;;11031:18;;;11024:43;3724:98:27;;;;;10916:18:134;;3724:148:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2534:678:8:-;992:10;984:19;;;;:7;:19;;;;;;2616:16;;984:19;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2644:9:::1;2663:517;2675:9;:16;2671:1;:20;2663:517;;;2713:8;:22;2722:9;2732:1;2722:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2713:22:8::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2713:22:8;;::::1;;2708:178;;2762:9;2772:1;2762:12;;;;;;;;:::i;:::-;2755:19;2762:12;::::0;;::::1;::::0;;;;;2755:19;2824:3:::1;;2663:517;;2708:178;2904:7;:21;2912:9;2922:1;2912:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2904:21:8::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2904:21:8;;::::1;;2899:211;;2945:6;2957:9;2967:1;2957:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;2945:25;;::::1;::::0;;::::1;::::0;;-1:-1:-1;2945:25:8;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2945:25:8::1;-1:-1:-1::0;;;;;2945:25:8;;::::1;::::0;;;::::1;::::0;;3021:12;;2945:25;;3013:7:::1;::::0;3021:12;;3031:1;;3021:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;3013:21:8::1;-1:-1:-1::0;;;;;3013:21:8::1;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3065:30;3082:9;3092:1;3082:12;;;;;;;;:::i;:::-;;;;;;;3065:30;;;;;-1:-1:-1::0;;;;;2737:32:134;;;;2719:51;;2707:2;2692:18;;2573:203;3065:30:8::1;;;;;;;;2899:211;3152:3;;2663:517;;;-1:-1:-1::0;3196:9:8;;2534:678;-1:-1:-1;2534:678:8:o;3009:124:27:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;3093:14:27::1;:33:::0;;-1:-1:-1;;;;;;3093:33:27::1;-1:-1:-1::0;;;;;3093:33:27;;;::::1;::::0;;;::::1;::::0;;3009:124::o;5273:114::-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;5354:26:27::1;5369:10;5354:14;:26::i;325:34:9:-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5071:92:27:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;5144:12:27::1;5152:3;5144:7;:12::i;366:213:9:-:0;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:9;;11280:2:134;443:51:9;;;11262:21:134;11319:2;11299:18;;;11292:30;-1:-1:-1;;;11338:18:134;;;11331:41;11389:18;;443:51:9;11078:335:134;443:51:9;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;1072:244:8:-;474:6:4;;-1:-1:-1;;;;;474:6:4;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:4;;8528:2:134;444:52:4;;;8510:21:134;8567:2;8547:18;;;8540:30;-1:-1:-1;;;8586:18:134;;;8579:40;8636:18;;444:52:4;8326:334:134;444:52:4;-1:-1:-1;;;;;1172:19:8;::::1;;::::0;;;:8:::1;:19;::::0;;;;;::::1;;1171:20;1163:49;;;::::0;-1:-1:-1;;;1163:49:8;;13701:2:134;1163:49:8::1;::::0;::::1;13683:21:134::0;13740:2;13720:18;;;13713:30;-1:-1:-1;;;13759:18:134;;;13752:46;13815:18;;1163:49:8::1;13499:340:134::0;1163:49:8::1;-1:-1:-1::0;;;;;1222:19:8;::::1;;::::0;;;:8:::1;:19;::::0;;;;;:26;;-1:-1:-1;;1222:26:8::1;1244:4;1222:26:::0;;::::1;::::0;;;1258:7:::1;:23:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;1258:23:8::1;::::0;;::::1;::::0;;;1296:13;;::::1;::::0;1222:19;1296:13:::1;1072:244:::0;;:::o;791:370:10:-;895:14;;879:49;;;-1:-1:-1;;;879:49:10;;;;853:23;;-1:-1:-1;;;;;895:14:10;;879:47;;:49;;;;;;;;;;;;;;895:14;879:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;965:56;;-1:-1:-1;;;965:56:10;;;;;2537:25:134;;;853:75:10;;-1:-1:-1;1044:1:10;;-1:-1:-1;;;;;965:46:10;;;;;2510:18:134;;965:56:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;965:56:10;;;;;;;;;;;;:::i;:::-;:68;959:82;:86;938:135;;;;-1:-1:-1;;;938:135:10;;15061:2:134;938:135:10;;;15043:21:134;15100:2;15080:18;;;15073:30;-1:-1:-1;;;15119:18:134;;;15112:44;15173:18;;938:135:10;14859:338:134;938:135:10;1083:16;:31;;;;;;;-1:-1:-1;1083:31:10;;;;;;;;;1129:25;;2537::134;;;1129::10;;2525:2:134;2510:18;1129:25:10;;;;;;;843:318;791:370;:::o;1307:536:11:-;1374:17;1386:4;1374:11;:17::i;:::-;1366:46;;;;-1:-1:-1;;;1366:46:11;;15404:2:134;1366:46:11;;;15386:21:134;15443:2;15423:18;;;15416:30;-1:-1:-1;;;15462:18:134;;;15455:46;15518:18;;1366:46:11;15202:340:134;1366:46:11;1441:22;;;;;;;;;;1423:15;1489;;;:6;:15;;;;;;;;1528:4;:11;:15;;1542:1;;1528:15;:::i;:::-;1519:5;:24;1515:238;;1583:4;1588:11;;1559:21;;1583:4;1588:15;;1602:1;;1588:15;:::i;:::-;1583:21;;;;;;;;:::i;:::-;;;;;;;;1559:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:19;1656:7;1640:25;;;;;;1618:47;;1702:5;1680:6;:19;1687:11;1680:19;;;;;;;;;;;:27;;;;1735:7;1721:4;1726:5;1721:11;;;;;;;;:::i;:::-;;;;;;;;:21;;;;;;:::i;:::-;;1545:208;;1515:238;1763:4;:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1790:15;;;;:6;:15;;;;;;1783:22;;;;1820:16;;;;;1831:4;;1820:16;:::i;:::-;;;;;;;;1356:487;;1307:536;:::o;355:209:6:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:6;;16014:2:134;418:64:6;;;15996:21:134;16053:2;16033:18;;;16026:30;-1:-1:-1;;;16072:18:134;;;16065:48;16130:18;;418:64:6;15812:342:134;418:64:6;493:11;:24;;;532:25;;2537::134;;;532::6;;2525:2:134;2510:18;532:25:6;2391:177:134;677:442:11;751:22;;;;;;816:4;:11;733:15;;816:16;812:158;;852:15;;;;:6;:15;;;;;;:20;;;:60;;;905:7;892:4;897:1;892:7;;;;;;;;:::i;:::-;;;;;;;;876:25;;;;;;:::i;:::-;;;;;;;;:36;852:60;848:112;;;-1:-1:-1;941:4:11;848:112;988:6;987:7;979:38;;;;-1:-1:-1;;;979:38:11;;16361:2:134;979:38:11;;;16343:21:134;16400:2;16380:18;;;16373:30;-1:-1:-1;;;16419:18:134;;;16412:48;16477:18;;979:38:11;16159:342:134;979:38:11;1046:4;:11;;1028:15;;;;:6;:15;;;;;:29;;;1067:15;;;;;;;;;;;;1077:4;1067:15;;:::i;:::-;;1098:14;1107:4;1098:14;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:134:-;-1:-1:-1;;;;;89:31:134;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:134:o;662:180::-;721:6;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;-1:-1:-1;813:23:134;;662:180;-1:-1:-1;662:180:134:o;847:127::-;908:10;903:3;899:20;896:1;889:31;939:4;936:1;929:15;963:4;960:1;953:15;979:257;1051:4;1045:11;;;1083:17;;1130:18;1115:34;;1151:22;;;1112:62;1109:88;;;1177:18;;:::i;:::-;1213:4;1206:24;979:257;:::o;1241:275::-;1312:2;1306:9;1377:2;1358:13;;-1:-1:-1;;1354:27:134;1342:40;;1412:18;1397:34;;1433:22;;;1394:62;1391:88;;;1459:18;;:::i;:::-;1495:2;1488:22;1241:275;;-1:-1:-1;1241:275:134:o;1521:187::-;1570:4;1603:18;1595:6;1592:30;1589:56;;;1625:18;;:::i;:::-;-1:-1:-1;1691:2:134;1670:15;-1:-1:-1;;1666:29:134;1697:4;1662:40;;1521:187::o;1713:673::-;1782:6;1835:2;1823:9;1814:7;1810:23;1806:32;1803:52;;;1851:1;1848;1841:12;1803:52;1891:9;1878:23;1924:18;1916:6;1913:30;1910:50;;;1956:1;1953;1946:12;1910:50;1979:22;;2032:4;2024:13;;2020:27;-1:-1:-1;2010:55:134;;2061:1;2058;2051:12;2010:55;2097:2;2084:16;2122:49;2138:32;2167:2;2138:32;:::i;:::-;2122:49;:::i;:::-;2194:2;2187:5;2180:17;2234:7;2229:2;2224;2220;2216:11;2212:20;2209:33;2206:53;;;2255:1;2252;2245:12;2206:53;2310:2;2305;2301;2297:11;2292:2;2285:5;2281:14;2268:45;2354:1;2333:14;;;2349:2;2329:23;2322:34;;;;2337:5;1713:673;-1:-1:-1;;;;1713:673:134:o;2781:247::-;2840:6;2893:2;2881:9;2872:7;2868:23;2864:32;2861:52;;;2909:1;2906;2899:12;2861:52;2948:9;2935:23;2967:31;2992:5;2967:31;:::i;:::-;3017:5;2781:247;-1:-1:-1;;;2781:247:134:o;3033:250::-;3118:1;3128:113;3142:6;3139:1;3136:13;3128:113;;;3218:11;;;3212:18;3199:11;;;3192:39;3164:2;3157:10;3128:113;;;-1:-1:-1;;3275:1:134;3257:16;;3250:27;3033:250::o;3288:271::-;3330:3;3368:5;3362:12;3395:6;3390:3;3383:19;3411:76;3480:6;3473:4;3468:3;3464:14;3457:4;3450:5;3446:16;3411:76;:::i;:::-;3541:2;3520:15;-1:-1:-1;;3516:29:134;3507:39;;;;3548:4;3503:50;;3288:271;-1:-1:-1;;3288:271:134:o;3564:803::-;3726:4;3755:2;3795;3784:9;3780:18;3825:2;3814:9;3807:21;3848:6;3883;3877:13;3914:6;3906;3899:22;3952:2;3941:9;3937:18;3930:25;;4014:2;4004:6;4001:1;3997:14;3986:9;3982:30;3978:39;3964:53;;4052:2;4044:6;4040:15;4073:1;4083:255;4097:6;4094:1;4091:13;4083:255;;;4190:2;4186:7;4174:9;4166:6;4162:22;4158:36;4153:3;4146:49;4218:40;4251:6;4242;4236:13;4218:40;:::i;:::-;4208:50;-1:-1:-1;4316:12:134;;;;4281:15;;;;4119:1;4112:9;4083:255;;;-1:-1:-1;4355:6:134;;3564:803;-1:-1:-1;;;;;;;3564:803:134:o;4372:658::-;4543:2;4595:21;;;4665:13;;4568:18;;;4687:22;;;4514:4;;4543:2;4766:15;;;;4740:2;4725:18;;;4514:4;4809:195;4823:6;4820:1;4817:13;4809:195;;;4888:13;;-1:-1:-1;;;;;4884:39:134;4872:52;;4979:15;;;;4944:12;;;;4920:1;4838:9;4809:195;;;-1:-1:-1;5021:3:134;;4372:658;-1:-1:-1;;;;;;4372:658:134:o;5035:1021::-;5119:6;5150:2;5193;5181:9;5172:7;5168:23;5164:32;5161:52;;;5209:1;5206;5199:12;5161:52;5249:9;5236:23;5278:18;5319:2;5311:6;5308:14;5305:34;;;5335:1;5332;5325:12;5305:34;5373:6;5362:9;5358:22;5348:32;;5418:7;5411:4;5407:2;5403:13;5399:27;5389:55;;5440:1;5437;5430:12;5389:55;5476:2;5463:16;5498:2;5494;5491:10;5488:36;;;5504:18;;:::i;:::-;5550:2;5547:1;5543:10;5533:20;;5573:28;5597:2;5593;5589:11;5573:28;:::i;:::-;5635:15;;;5705:11;;;5701:20;;;5666:12;;;;5733:19;;;5730:39;;;5765:1;5762;5755:12;5730:39;5789:11;;;;5809:217;5825:6;5820:3;5817:15;5809:217;;;5905:3;5892:17;5879:30;;5922:31;5947:5;5922:31;:::i;:::-;5966:18;;;5842:12;;;;6004;;;;5809:217;;;6045:5;5035:1021;-1:-1:-1;;;;;;;;5035:1021:134:o;6061:220::-;6210:2;6199:9;6192:21;6173:4;6230:45;6271:2;6260:9;6256:18;6248:6;6230:45;:::i;6634:277::-;6701:6;6754:2;6742:9;6733:7;6729:23;6725:32;6722:52;;;6770:1;6767;6760:12;6722:52;6802:9;6796:16;6855:5;6848:13;6841:21;6834:5;6831:32;6821:60;;6877:1;6874;6867:12;7195:127;7256:10;7251:3;7247:20;7244:1;7237:31;7287:4;7284:1;7277:15;7311:4;7308:1;7301:15;7327:127;7388:10;7383:3;7379:20;7376:1;7369:31;7419:4;7416:1;7409:15;7443:4;7440:1;7433:15;7459:135;7498:3;7519:17;;;7516:43;;7539:18;;:::i;:::-;-1:-1:-1;7586:1:134;7575:13;;7459:135::o;7599:337::-;7801:2;7783:21;;;7840:2;7820:18;;;7813:30;-1:-1:-1;;;7874:2:134;7859:18;;7852:43;7927:2;7912:18;;7599:337::o;7941:380::-;8020:1;8016:12;;;;8063;;;8084:61;;8138:4;8130:6;8126:17;8116:27;;8084:61;8191:2;8183:6;8180:14;8160:18;8157:38;8154:161;;8237:10;8232:3;8228:20;8225:1;8218:31;8272:4;8269:1;8262:15;8300:4;8297:1;8290:15;8154:161;;7941:380;;;:::o;9134:844::-;9264:3;9293:1;9326:6;9320:13;9356:36;9382:9;9356:36;:::i;:::-;9411:1;9428:18;;;9455:133;;;;9602:1;9597:356;;;;9421:532;;9455:133;-1:-1:-1;;9488:24:134;;9476:37;;9561:14;;9554:22;9542:35;;9533:45;;;-1:-1:-1;9455:133:134;;9597:356;9628:6;9625:1;9618:17;9658:4;9703:2;9700:1;9690:16;9728:1;9742:165;9756:6;9753:1;9750:13;9742:165;;;9834:14;;9821:11;;;9814:35;9877:16;;;;9771:10;;9742:165;;;9746:3;;;9936:6;9931:3;9927:16;9920:23;;9421:532;-1:-1:-1;9969:3:134;;9134:844;-1:-1:-1;;;;;;9134:844:134:o;9983:251::-;10053:6;10106:2;10094:9;10085:7;10081:23;10077:32;10074:52;;;10122:1;10119;10112:12;10074:52;10154:9;10148:16;10173:31;10198:5;10173:31;:::i;10239:184::-;10309:6;10362:2;10350:9;10341:7;10337:23;10333:32;10330:52;;;10378:1;10375;10368:12;10330:52;-1:-1:-1;10401:16:134;;10239:184;-1:-1:-1;10239:184:134:o;11418:545::-;11520:2;11515:3;11512:11;11509:448;;;11556:1;11581:5;11577:2;11570:17;11626:4;11622:2;11612:19;11696:2;11684:10;11680:19;11677:1;11673:27;11667:4;11663:38;11732:4;11720:10;11717:20;11714:47;;;-1:-1:-1;11755:4:134;11714:47;11810:2;11805:3;11801:12;11798:1;11794:20;11788:4;11784:31;11774:41;;11865:82;11883:2;11876:5;11873:13;11865:82;;;11928:17;;;11909:1;11898:13;11865:82;;;11869:3;;;11509:448;11418:545;;;:::o;12139:1355::-;12265:3;12259:10;12292:18;12284:6;12281:30;12278:56;;;12314:18;;:::i;:::-;12343:97;12433:6;12393:38;12425:4;12419:11;12393:38;:::i;:::-;12387:4;12343:97;:::i;:::-;12495:4;;12559:2;12548:14;;12576:1;12571:666;;;;13281:1;13298:6;13295:89;;;-1:-1:-1;13350:19:134;;;13344:26;13295:89;-1:-1:-1;;12096:1:134;12092:11;;;12088:24;12084:29;12074:40;12120:1;12116:11;;;12071:57;13397:81;;12541:947;;12571:666;9081:1;9074:14;;;9118:4;9105:18;;-1:-1:-1;;12607:20:134;;;12728:236;12742:7;12739:1;12736:14;12728:236;;;12831:19;;;12825:26;12810:42;;12923:27;;;;12891:1;12879:14;;;;12758:19;;12728:236;;;12732:3;12992:6;12983:7;12980:19;12977:201;;;13053:19;;;13047:26;-1:-1:-1;;13136:1:134;13132:14;;;13148:3;13128:24;13124:37;13120:42;13105:58;13090:74;;12977:201;-1:-1:-1;;;;;13224:1:134;13208:14;;;13204:22;13191:36;;-1:-1:-1;12139:1355:134:o;13844:1010::-;13948:6;13979:2;14022;14010:9;14001:7;13997:23;13993:32;13990:52;;;14038:1;14035;14028:12;13990:52;14071:9;14065:16;14100:18;14141:2;14133:6;14130:14;14127:34;;;14157:1;14154;14147:12;14127:34;14180:22;;;;14236:4;14218:16;;;14214:27;14211:47;;;14254:1;14251;14244:12;14211:47;14280:22;;:::i;:::-;14333:2;14327:9;14361:2;14351:8;14348:16;14345:36;;;14377:1;14374;14367:12;14345:36;14400:17;;;-1:-1:-1;14448:4:134;14440:13;;14436:27;-1:-1:-1;14426:55:134;;14477:1;14474;14467:12;14426:55;14506:2;14500:9;14531:49;14547:32;14576:2;14547:32;:::i;14531:49::-;14603:2;14596:5;14589:17;14643:7;14638:2;14633;14629;14625:11;14621:20;14618:33;14615:53;;;14664:1;14661;14654:12;14615:53;14677:67;14741:2;14736;14729:5;14725:14;14720:2;14716;14712:11;14677:67;:::i;:::-;14753:20;;-1:-1:-1;14811:11:134;;;14805:18;14789:14;;;14782:42;;;;14760:5;13844:1010;-1:-1:-1;;;;13844:1010:134:o;15547:128::-;15614:9;;;15635:11;;;15632:37;;;15649:18;;:::i;15680:127::-;15741:10;15736:3;15732:20;15729:1;15722:31;15772:4;15769:1;15762:15;15796:4;15793:1;15786:15", "linkReferences": {} }, "methodIdentifiers": { @@ -1654,118 +1654,118 @@ }, "ast": { "absolutePath": "contracts/expander/DAOExpander.sol", - "id": 5117, + "id": 4506, "exportedSymbols": { "AutIDAddress": [ - 3009 + 2973 ], "DAOExpander": [ - 5116 + 4505 ], "IAutID": [ 1194 ], "IAutIDAddress": [ - 4476 + 3889 ], "IAutIDAddressSet": [ - 4628 + 4041 ], "IDAOExpander": [ - 5465 + 4592 ], "IDAOExpanderData": [ - 5482 + 4609 ], "IDAOExpanderMembership": [ - 5523 + 4650 ], "IDAOTypes": [ - 5834 + 4679 ], "IERC165Upgradeable": [ - 59264 + 57255 ], "IERC721Upgradeable": [ - 58525 + 56516 ], "IMembershipChecker": [ - 5849 + 4694 ], "IModule": [ - 6466 + 4754 ], "IModuleRegistry": [ - 6730 + 5018 ], "INovaAdmin": [ - 4493 + 3906 ], "INovaAdminSet": [ - 4659 + 4072 ], "INovaCommitment": [ - 4531 + 3944 ], "INovaCommitmentSet": [ - 4683 + 4081 ], "INovaMarket": [ - 4540 + 3953 ], "INovaMembership": [ - 4566 + 3979 ], "INovaMembershipSet": [ - 4705 + 4094 ], "INovaMetadata": [ - 4575 + 3988 ], "INovaMetadataSet": [ - 4714 + 4103 ], "INovaModules": [ - 4600 + 4013 ], "INovaUrls": [ - 4619 + 4032 ], "INovaUrlsSet": [ - 4730 + 4119 ], "IPluginRegistry": [ - 11258 + 9574 ], "NovaCommitment": [ - 3153 + 3117 ], "NovaMarket": [ - 3198 + 3162 ], "NovaMembers": [ - 3500 + 3464 ], "NovaMetadata": [ - 3545 + 3509 ], "NovaModules": [ - 3674 + 3638 ], "NovaUrls": [ - 4467 + 3880 ], "OnboardingModule": [ - 6497 + 4785 ] }, "nodeType": "SourceUnit", - "src": "31:5483:31", + "src": "31:5483:27", "nodes": [ { - "id": 4732, + "id": 4121, "nodeType": "PragmaDirective", - "src": "31:23:31", + "src": "31:23:27", "nodes": [], "literals": [ "solidity", @@ -1774,277 +1774,277 @@ ] }, { - "id": 4733, + "id": 4122, "nodeType": "ImportDirective", - "src": "56:39:31", + "src": "56:39:27", "nodes": [], "absolutePath": "contracts/expander/interfaces/IDAOExpander.sol", "file": "./interfaces/IDAOExpander.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 5466, + "scope": 4506, + "sourceUnit": 4593, "symbolAliases": [], "unitAlias": "" }, { - "id": 4734, + "id": 4123, "nodeType": "ImportDirective", - "src": "97:45:31", + "src": "97:45:27", "nodes": [], "absolutePath": "contracts/membershipCheckers/IDAOTypes.sol", "file": "../membershipCheckers/IDAOTypes.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 5835, + "scope": 4506, + "sourceUnit": 4680, "symbolAliases": [], "unitAlias": "" }, { - "id": 4735, + "id": 4124, "nodeType": "ImportDirective", - "src": "143:54:31", + "src": "143:54:27", "nodes": [], "absolutePath": "contracts/membershipCheckers/IMembershipChecker.sol", "file": "../membershipCheckers/IMembershipChecker.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 5850, + "scope": 4506, + "sourceUnit": 4695, "symbolAliases": [], "unitAlias": "" }, { - "id": 4736, + "id": 4125, "nodeType": "ImportDirective", - "src": "199:46:31", + "src": "199:46:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaUrls.sol", "file": "../components/abstracts/NovaUrls.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 4468, + "scope": 4506, + "sourceUnit": 3881, "symbolAliases": [], "unitAlias": "" }, { - "id": 4737, + "id": 4126, "nodeType": "ImportDirective", - "src": "246:49:31", + "src": "246:49:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMembers.sol", "file": "../components/abstracts/NovaMembers.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3501, + "scope": 4506, + "sourceUnit": 3465, "symbolAliases": [], "unitAlias": "" }, { - "id": 4738, + "id": 4127, "nodeType": "ImportDirective", - "src": "296:49:31", + "src": "296:49:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaModules.sol", "file": "../components/abstracts/NovaModules.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3675, + "scope": 4506, + "sourceUnit": 3639, "symbolAliases": [], "unitAlias": "" }, { - "id": 4739, + "id": 4128, "nodeType": "ImportDirective", - "src": "346:50:31", + "src": "346:50:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMetadata.sol", "file": "../components/abstracts/NovaMetadata.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3546, + "scope": 4506, + "sourceUnit": 3510, "symbolAliases": [], "unitAlias": "" }, { - "id": 4740, + "id": 4129, "nodeType": "ImportDirective", - "src": "397:52:31", + "src": "397:52:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaCommitment.sol", "file": "../components/abstracts/NovaCommitment.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3154, + "scope": 4506, + "sourceUnit": 3118, "symbolAliases": [], "unitAlias": "" }, { - "id": 4741, + "id": 4130, "nodeType": "ImportDirective", - "src": "450:48:31", + "src": "450:48:27", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMarket.sol", "file": "../components/abstracts/NovaMarket.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3199, + "scope": 4506, + "sourceUnit": 3163, "symbolAliases": [], "unitAlias": "" }, { - "id": 4742, + "id": 4131, "nodeType": "ImportDirective", - "src": "499:58:31", + "src": "499:58:27", "nodes": [], "absolutePath": "contracts/components/interfaces/get/INovaMembership.sol", "file": "../components/interfaces/get/INovaMembership.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 4567, + "scope": 4506, + "sourceUnit": 3980, "symbolAliases": [], "unitAlias": "" }, { - "id": 4743, + "id": 4132, "nodeType": "ImportDirective", - "src": "596:50:31", + "src": "596:50:27", "nodes": [], "absolutePath": "contracts/components/abstracts/AutIDAddress.sol", "file": "../components/abstracts/AutIDAddress.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 3010, + "scope": 4506, + "sourceUnit": 2974, "symbolAliases": [], "unitAlias": "" }, { - "id": 4744, + "id": 4133, "nodeType": "ImportDirective", - "src": "647:49:31", + "src": "647:49:27", "nodes": [], "absolutePath": "contracts/expander/interfaces/IDAOExpander.sol", "file": "../expander/interfaces/IDAOExpander.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 5466, + "scope": 4506, + "sourceUnit": 4593, "symbolAliases": [], "unitAlias": "" }, { - "id": 4745, + "id": 4134, "nodeType": "ImportDirective", - "src": "697:52:31", + "src": "697:52:27", "nodes": [], "absolutePath": "contracts/modules/onboarding/OnboardingModule.sol", "file": "../modules/onboarding/OnboardingModule.sol", "nameLocation": "-1:-1:-1", - "scope": 5117, - "sourceUnit": 6498, + "scope": 4506, + "sourceUnit": 4786, "symbolAliases": [], "unitAlias": "" }, { - "id": 5116, + "id": 4505, "nodeType": "ContractDefinition", - "src": "887:4626:31", + "src": "887:4626:27", "nodes": [ { - "id": 4766, + "id": 4155, "nodeType": "VariableDeclaration", - "src": "1089:25:31", + "src": "1089:25:27", "nodes": [], "constant": false, "documentation": { - "id": 4763, + "id": 4152, "nodeType": "StructuredDocumentation", - "src": "1054:30:31", + "src": "1054:30:27", "text": "@notice the basic DAO data" }, "mutability": "mutable", "name": "daoData", - "nameLocation": "1107:7:31", - "scope": 5116, + "nameLocation": "1107:7:27", + "scope": 4505, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData" }, "typeName": { - "id": 4765, + "id": 4154, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4764, + "id": 4153, "name": "DAOExpanssionData", "nameLocations": [ - "1089:17:31" + "1089:17:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5475, - "src": "1089:17:31" + "referencedDeclaration": 4602, + "src": "1089:17:27" }, - "referencedDeclaration": 5475, - "src": "1089:17:31", + "referencedDeclaration": 4602, + "src": "1089:17:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage_ptr", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage_ptr", "typeString": "struct IDAOExpanderData.DAOExpanssionData" } }, "visibility": "internal" }, { - "id": 4770, + "id": 4159, "nodeType": "VariableDeclaration", - "src": "1178:26:31", + "src": "1178:26:27", "nodes": [], "constant": false, "documentation": { - "id": 4767, + "id": 4156, "nodeType": "StructuredDocumentation", - "src": "1121:52:31", + "src": "1121:52:27", "text": "@notice the address of the DAOTypes.sol contract" }, "mutability": "mutable", "name": "daoTypes", - "nameLocation": "1196:8:31", - "scope": 5116, + "nameLocation": "1196:8:27", + "scope": 4505, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" }, "typeName": { - "id": 4769, + "id": 4158, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4768, + "id": 4157, "name": "IDAOTypes", "nameLocations": [ - "1178:9:31" + "1178:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5834, - "src": "1178:9:31" + "referencedDeclaration": 4679, + "src": "1178:9:27" }, - "referencedDeclaration": 5834, - "src": "1178:9:31", + "referencedDeclaration": 4679, + "src": "1178:9:27", "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, "visibility": "private" }, { - "id": 4772, + "id": 4161, "nodeType": "VariableDeclaration", - "src": "1210:30:31", + "src": "1210:30:27", "nodes": [], "constant": false, "mutability": "mutable", "name": "onboardingAddr", - "nameLocation": "1226:14:31", - "scope": 5116, + "nameLocation": "1226:14:27", + "scope": 4505, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2052,10 +2052,10 @@ "typeString": "address" }, "typeName": { - "id": 4771, + "id": 4160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1210:7:31", + "src": "1210:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2065,14 +2065,14 @@ "visibility": "private" }, { - "id": 4906, + "id": 4295, "nodeType": "FunctionDefinition", - "src": "1879:1124:31", + "src": "1879:1124:27", "nodes": [], "body": { - "id": 4905, + "id": 4294, "nodeType": "Block", - "src": "2149:854:31", + "src": "2149:854:27", "nodes": [], "statements": [ { @@ -2083,18 +2083,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 4800, + "id": 4189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 4795, + "id": 4184, "name": "_daoAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4783, - "src": "2167:8:31", + "referencedDeclaration": 4172, + "src": "2167:8:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2106,14 +2106,14 @@ "arguments": [ { "hexValue": "30", - "id": 4798, + "id": 4187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2187:1:31", + "src": "2187:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2128,26 +2128,26 @@ "typeString": "int_const 0" } ], - "id": 4797, + "id": 4186, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2179:7:31", + "src": "2179:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4796, + "id": 4185, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2179:7:31", + "src": "2179:7:27", "typeDescriptions": {} } }, - "id": 4799, + "id": 4188, "isConstant": false, "isLValue": false, "isPure": true, @@ -2156,14 +2156,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2179:10:31", + "src": "2179:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2167:22:31", + "src": "2167:22:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2171,14 +2171,14 @@ }, { "hexValue": "4d697373696e672044414f2041646472657373", - "id": 4801, + "id": 4190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2191:21:31", + "src": "2191:21:27", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ec351fd03530b9567a0a300db660d19a72faae0463b864e6e307d5a0caa70a92", "typeString": "literal_string \"Missing DAO Address\"" @@ -2197,7 +2197,7 @@ "typeString": "literal_string \"Missing DAO Address\"" } ], - "id": 4794, + "id": 4183, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2205,13 +2205,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2159:7:31", + "src": "2159:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 4802, + "id": 4191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2220,16 +2220,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2159:54:31", + "src": "2159:54:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4803, + "id": 4192, "nodeType": "ExpressionStatement", - "src": "2159:54:31" + "src": "2159:54:27" }, { "expression": { @@ -2239,7 +2239,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 4813, + "id": 4202, "isConstant": false, "isLValue": false, "isPure": false, @@ -2247,12 +2247,12 @@ "leftExpression": { "arguments": [ { - "id": 4807, + "id": 4196, "name": "_daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4779, - "src": "2239:9:31", + "referencedDeclaration": 4168, + "src": "2239:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2266,26 +2266,26 @@ "typeString": "address" } ], - "id": 4806, + "id": 4195, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2231:7:31", + "src": "2231:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4805, + "id": 4194, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2231:7:31", + "src": "2231:7:27", "typeDescriptions": {} } }, - "id": 4808, + "id": 4197, "isConstant": false, "isLValue": false, "isPure": false, @@ -2294,7 +2294,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2231:18:31", + "src": "2231:18:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2307,14 +2307,14 @@ "arguments": [ { "hexValue": "30", - "id": 4811, + "id": 4200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2261:1:31", + "src": "2261:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2329,26 +2329,26 @@ "typeString": "int_const 0" } ], - "id": 4810, + "id": 4199, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2253:7:31", + "src": "2253:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4809, + "id": 4198, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2253:7:31", + "src": "2253:7:27", "typeDescriptions": {} } }, - "id": 4812, + "id": 4201, "isConstant": false, "isLValue": false, "isPure": true, @@ -2357,14 +2357,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2253:10:31", + "src": "2253:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2231:32:31", + "src": "2231:32:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2372,14 +2372,14 @@ }, { "hexValue": "4d697373696e672044414f2054797065732061646472657373", - "id": 4814, + "id": 4203, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2265:27:31", + "src": "2265:27:27", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c96a0cea81d427a29702b2c14c2bcaedcf188fde89b7900a0ea70a25f9ff60f8", "typeString": "literal_string \"Missing DAO Types address\"" @@ -2398,7 +2398,7 @@ "typeString": "literal_string \"Missing DAO Types address\"" } ], - "id": 4804, + "id": 4193, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2406,13 +2406,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2223:7:31", + "src": "2223:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 4815, + "id": 4204, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,16 +2421,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2223:70:31", + "src": "2223:70:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4816, + "id": 4205, "nodeType": "ExpressionStatement", - "src": "2223:70:31" + "src": "2223:70:27" }, { "expression": { @@ -2440,7 +2440,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 4828, + "id": 4217, "isConstant": false, "isLValue": false, "isPure": false, @@ -2448,12 +2448,12 @@ "leftExpression": { "arguments": [ { - "id": 4822, + "id": 4211, "name": "_daoType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4781, - "src": "2360:8:31", + "referencedDeclaration": 4170, + "src": "2360:8:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2470,12 +2470,12 @@ "expression": { "arguments": [ { - "id": 4819, + "id": 4208, "name": "_daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4779, - "src": "2321:9:31", + "referencedDeclaration": 4168, + "src": "2321:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2489,18 +2489,18 @@ "typeString": "address" } ], - "id": 4818, + "id": 4207, "name": "IDAOTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5834, - "src": "2311:9:31", + "referencedDeclaration": 4679, + "src": "2311:9:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$5834_$", + "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$4679_$", "typeString": "type(contract IDAOTypes)" } }, - "id": 4820, + "id": 4209, "isConstant": false, "isLValue": false, "isPure": false, @@ -2509,29 +2509,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2311:20:31", + "src": "2311:20:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, - "id": 4821, + "id": 4210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2332:27:31", + "memberLocation": "2332:27:27", "memberName": "getMembershipCheckerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "2311:48:31", + "referencedDeclaration": 4667, + "src": "2311:48:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view external returns (address)" } }, - "id": 4823, + "id": 4212, "isConstant": false, "isLValue": false, "isPure": false, @@ -2540,7 +2540,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2311:58:31", + "src": "2311:58:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2553,14 +2553,14 @@ "arguments": [ { "hexValue": "30", - "id": 4826, + "id": 4215, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2381:1:31", + "src": "2381:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2575,26 +2575,26 @@ "typeString": "int_const 0" } ], - "id": 4825, + "id": 4214, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2373:7:31", + "src": "2373:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4824, + "id": 4213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2373:7:31", + "src": "2373:7:27", "typeDescriptions": {} } }, - "id": 4827, + "id": 4216, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,14 +2603,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2373:10:31", + "src": "2373:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2311:72:31", + "src": "2311:72:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2618,14 +2618,14 @@ }, { "hexValue": "496e76616c6964206d656d626572736869702074797065", - "id": 4829, + "id": 4218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2385:25:31", + "src": "2385:25:27", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b89e19d8ece4c02a72d5a02c02781c01f06d56f014875c79921678b2ba553b29", "typeString": "literal_string \"Invalid membership type\"" @@ -2644,7 +2644,7 @@ "typeString": "literal_string \"Invalid membership type\"" } ], - "id": 4817, + "id": 4206, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2652,13 +2652,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2303:7:31", + "src": "2303:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 4830, + "id": 4219, "isConstant": false, "isLValue": false, "isPure": false, @@ -2667,16 +2667,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2303:108:31", + "src": "2303:108:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4831, + "id": 4220, "nodeType": "ExpressionStatement", - "src": "2303:108:31" + "src": "2303:108:27" }, { "expression": { @@ -2684,24 +2684,24 @@ { "arguments": [ { - "id": 4842, + "id": 4231, "name": "_daoAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4783, - "src": "2530:8:31", + "referencedDeclaration": 4172, + "src": "2530:8:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 4843, + "id": 4232, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4775, - "src": "2540:9:31", + "referencedDeclaration": 4164, + "src": "2540:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2724,12 +2724,12 @@ { "arguments": [ { - "id": 4838, + "id": 4227, "name": "_daoType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4781, - "src": "2510:8:31", + "referencedDeclaration": 4170, + "src": "2510:8:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2746,12 +2746,12 @@ "expression": { "arguments": [ { - "id": 4835, + "id": 4224, "name": "_daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4779, - "src": "2471:9:31", + "referencedDeclaration": 4168, + "src": "2471:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2765,18 +2765,18 @@ "typeString": "address" } ], - "id": 4834, + "id": 4223, "name": "IDAOTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5834, - "src": "2461:9:31", + "referencedDeclaration": 4679, + "src": "2461:9:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$5834_$", + "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$4679_$", "typeString": "type(contract IDAOTypes)" } }, - "id": 4836, + "id": 4225, "isConstant": false, "isLValue": false, "isPure": false, @@ -2785,29 +2785,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2461:20:31", + "src": "2461:20:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, - "id": 4837, + "id": 4226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2482:27:31", + "memberLocation": "2482:27:27", "memberName": "getMembershipCheckerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "2461:48:31", + "referencedDeclaration": 4667, + "src": "2461:48:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view external returns (address)" } }, - "id": 4839, + "id": 4228, "isConstant": false, "isLValue": false, "isPure": false, @@ -2816,7 +2816,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2461:58:31", + "src": "2461:58:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2831,18 +2831,18 @@ "typeString": "address" } ], - "id": 4833, + "id": 4222, "name": "IMembershipChecker", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5849, - "src": "2442:18:31", + "referencedDeclaration": 4694, + "src": "2442:18:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IMembershipChecker_$5849_$", + "typeIdentifier": "t_type$_t_contract$_IMembershipChecker_$4694_$", "typeString": "type(contract IMembershipChecker)" } }, - "id": 4840, + "id": 4229, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,29 +2851,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2442:78:31", + "src": "2442:78:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IMembershipChecker_$5849", + "typeIdentifier": "t_contract$_IMembershipChecker_$4694", "typeString": "contract IMembershipChecker" } }, - "id": 4841, + "id": 4230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2521:8:31", + "memberLocation": "2521:8:27", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5848, - "src": "2442:87:31", + "referencedDeclaration": 4693, + "src": "2442:87:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view external returns (bool)" } }, - "id": 4844, + "id": 4233, "isConstant": false, "isLValue": false, "isPure": false, @@ -2882,7 +2882,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2442:108:31", + "src": "2442:108:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2891,14 +2891,14 @@ }, { "hexValue": "41757449443a204e6f742061206d656d626572206f6620746869732044414f21", - "id": 4845, + "id": 4234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2564:34:31", + "src": "2564:34:27", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a5dac991fc546e5e0bff842898115d29b996d3b8910789f465b7bfa8021e3c47", "typeString": "literal_string \"AutID: Not a member of this DAO!\"" @@ -2917,7 +2917,7 @@ "typeString": "literal_string \"AutID: Not a member of this DAO!\"" } ], - "id": 4832, + "id": 4221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2925,13 +2925,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2421:7:31", + "src": "2421:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 4846, + "id": 4235, "isConstant": false, "isLValue": false, "isPure": false, @@ -2940,33 +2940,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2421:187:31", + "src": "2421:187:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4847, + "id": 4236, "nodeType": "ExpressionStatement", - "src": "2421:187:31" + "src": "2421:187:27" }, { "expression": { - "id": 4853, + "id": 4242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4848, + "id": 4237, "name": "daoData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4766, - "src": "2618:7:31", + "referencedDeclaration": 4155, + "src": "2618:7:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData storage ref" } }, @@ -2975,24 +2975,24 @@ "rightHandSide": { "arguments": [ { - "id": 4850, + "id": 4239, "name": "_daoType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4781, - "src": "2646:8:31", + "referencedDeclaration": 4170, + "src": "2646:8:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 4851, + "id": 4240, "name": "_daoAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4783, - "src": "2656:8:31", + "referencedDeclaration": 4172, + "src": "2656:8:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3010,18 +3010,18 @@ "typeString": "address" } ], - "id": 4849, + "id": 4238, "name": "DAOExpanssionData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5475, - "src": "2628:17:31", + "referencedDeclaration": 4602, + "src": "2628:17:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_DAOExpanssionData_$5475_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_DAOExpanssionData_$4602_storage_ptr_$", "typeString": "type(struct IDAOExpanderData.DAOExpanssionData storage pointer)" } }, - "id": 4852, + "id": 4241, "isConstant": false, "isLValue": false, "isPure": false, @@ -3030,51 +3030,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2628:37:31", + "src": "2628:37:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_memory_ptr", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_memory_ptr", "typeString": "struct IDAOExpanderData.DAOExpanssionData memory" } }, - "src": "2618:47:31", + "src": "2618:47:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData storage ref" } }, - "id": 4854, + "id": 4243, "nodeType": "ExpressionStatement", - "src": "2618:47:31" + "src": "2618:47:27" }, { "expression": { - "id": 4859, + "id": 4248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 4855, + "id": 4244, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "2676:7:31", + "referencedDeclaration": 3200, + "src": "2676:7:27", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 4857, + "id": 4246, "indexExpression": { - "id": 4856, + "id": 4245, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4775, - "src": "2684:9:31", + "referencedDeclaration": 4164, + "src": "2684:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3085,7 +3085,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2676:18:31", + "src": "2676:18:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3095,40 +3095,40 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 4858, + "id": 4247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2697:4:31", + "src": "2697:4:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "2676:25:31", + "src": "2676:25:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 4860, + "id": 4249, "nodeType": "ExpressionStatement", - "src": "2676:25:31" + "src": "2676:25:27" }, { "expression": { "arguments": [ { - "id": 4864, + "id": 4253, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4775, - "src": "2723:9:31", + "referencedDeclaration": 4164, + "src": "2723:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3143,32 +3143,32 @@ } ], "expression": { - "id": 4861, + "id": 4250, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "2711:6:31", + "referencedDeclaration": 3194, + "src": "2711:6:27", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 4863, + "id": 4252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2718:4:31", + "memberLocation": "2718:4:27", "memberName": "push", "nodeType": "MemberAccess", - "src": "2711:11:31", + "src": "2711:11:27", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 4865, + "id": 4254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3177,33 +3177,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2711:22:31", + "src": "2711:22:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4866, + "id": 4255, "nodeType": "ExpressionStatement", - "src": "2711:22:31" + "src": "2711:22:27" }, { "expression": { - "id": 4871, + "id": 4260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4867, + "id": 4256, "name": "daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4770, - "src": "2743:8:31", + "referencedDeclaration": 4159, + "src": "2743:8:27", "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, @@ -3212,12 +3212,12 @@ "rightHandSide": { "arguments": [ { - "id": 4869, + "id": 4258, "name": "_daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4779, - "src": "2764:9:31", + "referencedDeclaration": 4168, + "src": "2764:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3231,18 +3231,18 @@ "typeString": "address" } ], - "id": 4868, + "id": 4257, "name": "IDAOTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5834, - "src": "2754:9:31", + "referencedDeclaration": 4679, + "src": "2754:9:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$5834_$", + "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$4679_$", "typeString": "type(contract IDAOTypes)" } }, - "id": 4870, + "id": 4259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3251,33 +3251,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2754:20:31", + "src": "2754:20:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, - "src": "2743:31:31", + "src": "2743:31:27", "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, - "id": 4872, + "id": 4261, "nodeType": "ExpressionStatement", - "src": "2743:31:31" + "src": "2743:31:27" }, { "expression": { "arguments": [ { - "id": 4876, + "id": 4265, "name": "_market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4785, - "src": "2802:7:31", + "referencedDeclaration": 4174, + "src": "2802:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3292,33 +3292,33 @@ } ], "expression": { - "id": 4873, + "id": 4262, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2785:5:31", + "src": "2785:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4875, + "id": 4264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2791:10:31", + "memberLocation": "2791:10:27", "memberName": "_setMarket", "nodeType": "MemberAccess", - "referencedDeclaration": 3191, - "src": "2785:16:31", + "referencedDeclaration": 3155, + "src": "2785:16:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 4877, + "id": 4266, "isConstant": false, "isLValue": false, "isPure": false, @@ -3327,16 +3327,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2785:25:31", + "src": "2785:25:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4878, + "id": 4267, "nodeType": "ExpressionStatement", - "src": "2785:25:31" + "src": "2785:25:27" }, { "expression": { @@ -3344,12 +3344,12 @@ { "arguments": [ { - "id": 4883, + "id": 4272, "name": "_autAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4777, - "src": "2850:8:31", + "referencedDeclaration": 4166, + "src": "2850:8:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3363,18 +3363,18 @@ "typeString": "address" } ], - "id": 4882, + "id": 4271, "name": "IAutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, - "src": "2843:6:31", + "src": "2843:6:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IAutID_$1194_$", "typeString": "type(contract IAutID)" } }, - "id": 4884, + "id": 4273, "isConstant": false, "isLValue": false, "isPure": false, @@ -3383,7 +3383,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2843:16:31", + "src": "2843:16:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", @@ -3399,33 +3399,33 @@ } ], "expression": { - "id": 4879, + "id": 4268, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2820:5:31", + "src": "2820:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4881, + "id": 4270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2826:16:31", + "memberLocation": "2826:16:27", "memberName": "_setAutIDAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 3002, - "src": "2820:22:31", + "referencedDeclaration": 2966, + "src": "2820:22:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IAutID_$1194_$returns$__$", "typeString": "function (contract IAutID)" } }, - "id": 4885, + "id": 4274, "isConstant": false, "isLValue": false, "isPure": false, @@ -3434,27 +3434,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2820:40:31", + "src": "2820:40:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4886, + "id": 4275, "nodeType": "ExpressionStatement", - "src": "2820:40:31" + "src": "2820:40:27" }, { "expression": { "arguments": [ { - "id": 4890, + "id": 4279, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4789, - "src": "2891:11:31", + "referencedDeclaration": 4178, + "src": "2891:11:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3469,33 +3469,33 @@ } ], "expression": { - "id": 4887, + "id": 4276, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2870:5:31", + "src": "2870:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4889, + "id": 4278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2876:14:31", + "memberLocation": "2876:14:27", "memberName": "_setCommitment", "nodeType": "MemberAccess", - "referencedDeclaration": 3137, - "src": "2870:20:31", + "referencedDeclaration": 3101, + "src": "2870:20:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 4891, + "id": 4280, "isConstant": false, "isLValue": false, "isPure": false, @@ -3504,27 +3504,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2870:33:31", + "src": "2870:33:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4892, + "id": 4281, "nodeType": "ExpressionStatement", - "src": "2870:33:31" + "src": "2870:33:27" }, { "expression": { "arguments": [ { - "id": 4896, + "id": 4285, "name": "_metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4787, - "src": "2935:9:31", + "referencedDeclaration": 4176, + "src": "2935:9:27", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -3539,33 +3539,33 @@ } ], "expression": { - "id": 4893, + "id": 4282, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2913:5:31", + "src": "2913:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4895, + "id": 4284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2919:15:31", + "memberLocation": "2919:15:27", "memberName": "_setMetadataUri", "nodeType": "MemberAccess", - "referencedDeclaration": 3538, - "src": "2913:21:31", + "referencedDeclaration": 3502, + "src": "2913:21:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 4897, + "id": 4286, "isConstant": false, "isLValue": false, "isPure": false, @@ -3574,27 +3574,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2913:32:31", + "src": "2913:32:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4898, + "id": 4287, "nodeType": "ExpressionStatement", - "src": "2913:32:31" + "src": "2913:32:27" }, { "expression": { "arguments": [ { - "id": 4902, + "id": 4291, "name": "_pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4791, - "src": "2980:15:31", + "referencedDeclaration": 4180, + "src": "2980:15:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3609,33 +3609,33 @@ } ], "expression": { - "id": 4899, + "id": 4288, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2955:5:31", + "src": "2955:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4901, + "id": 4290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2961:18:31", + "memberLocation": "2961:18:27", "memberName": "_setPluginRegistry", "nodeType": "MemberAccess", - "referencedDeclaration": 3594, - "src": "2955:24:31", + "referencedDeclaration": 3558, + "src": "2955:24:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 4903, + "id": 4292, "isConstant": false, "isLValue": false, "isPure": false, @@ -3644,23 +3644,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2955:41:31", + "src": "2955:41:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4904, + "id": 4293, "nodeType": "ExpressionStatement", - "src": "2955:41:31" + "src": "2955:41:27" } ] }, "documentation": { - "id": 4773, + "id": 4162, "nodeType": "StructuredDocumentation", - "src": "1247:627:31", + "src": "1247:627:27", "text": "@notice Sets the initial details of the DAO\n @dev all parameters are required.\n @param _deployer the address of the DAOTypes.sol contract\n @param _autAddr the address of the DAOTypes.sol contract\n @param _daoTypes the address of the DAOTypes.sol contract\n @param _daoType the type of the membership. It should exist in DAOTypes.sol\n @param _daoAddr the address of the original DAO contract\n @param _market one of the 3 markets\n @param _metadata url with metadata of the DAO - name, description, logo\n @param _commitment minimum commitment that the DAO requires" }, "implemented": true, @@ -3669,18 +3669,18 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 4792, + "id": 4181, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4775, + "id": 4164, "mutability": "mutable", "name": "_deployer", - "nameLocation": "1908:9:31", + "nameLocation": "1908:9:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "1900:17:31", + "scope": 4295, + "src": "1900:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3688,10 +3688,10 @@ "typeString": "address" }, "typeName": { - "id": 4774, + "id": 4163, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1900:7:31", + "src": "1900:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3702,13 +3702,13 @@ }, { "constant": false, - "id": 4777, + "id": 4166, "mutability": "mutable", "name": "_autAddr", - "nameLocation": "1935:8:31", + "nameLocation": "1935:8:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "1927:16:31", + "scope": 4295, + "src": "1927:16:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3716,10 +3716,10 @@ "typeString": "address" }, "typeName": { - "id": 4776, + "id": 4165, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1927:7:31", + "src": "1927:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3730,13 +3730,13 @@ }, { "constant": false, - "id": 4779, + "id": 4168, "mutability": "mutable", "name": "_daoTypes", - "nameLocation": "1961:9:31", + "nameLocation": "1961:9:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "1953:17:31", + "scope": 4295, + "src": "1953:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3744,10 +3744,10 @@ "typeString": "address" }, "typeName": { - "id": 4778, + "id": 4167, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1953:7:31", + "src": "1953:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3758,13 +3758,13 @@ }, { "constant": false, - "id": 4781, + "id": 4170, "mutability": "mutable", "name": "_daoType", - "nameLocation": "1988:8:31", + "nameLocation": "1988:8:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "1980:16:31", + "scope": 4295, + "src": "1980:16:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3772,10 +3772,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4780, + "id": 4169, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1980:7:31", + "src": "1980:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3785,13 +3785,13 @@ }, { "constant": false, - "id": 4783, + "id": 4172, "mutability": "mutable", "name": "_daoAddr", - "nameLocation": "2014:8:31", + "nameLocation": "2014:8:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "2006:16:31", + "scope": 4295, + "src": "2006:16:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3799,10 +3799,10 @@ "typeString": "address" }, "typeName": { - "id": 4782, + "id": 4171, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2006:7:31", + "src": "2006:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3813,13 +3813,13 @@ }, { "constant": false, - "id": 4785, + "id": 4174, "mutability": "mutable", "name": "_market", - "nameLocation": "2040:7:31", + "nameLocation": "2040:7:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "2032:15:31", + "scope": 4295, + "src": "2032:15:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3827,10 +3827,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4784, + "id": 4173, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2032:7:31", + "src": "2032:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3840,13 +3840,13 @@ }, { "constant": false, - "id": 4787, + "id": 4176, "mutability": "mutable", "name": "_metadata", - "nameLocation": "2071:9:31", + "nameLocation": "2071:9:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "2057:23:31", + "scope": 4295, + "src": "2057:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3854,10 +3854,10 @@ "typeString": "string" }, "typeName": { - "id": 4786, + "id": 4175, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2057:6:31", + "src": "2057:6:27", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3867,13 +3867,13 @@ }, { "constant": false, - "id": 4789, + "id": 4178, "mutability": "mutable", "name": "_commitment", - "nameLocation": "2098:11:31", + "nameLocation": "2098:11:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "2090:19:31", + "scope": 4295, + "src": "2090:19:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3881,10 +3881,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4788, + "id": 4177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2090:7:31", + "src": "2090:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3894,13 +3894,13 @@ }, { "constant": false, - "id": 4791, + "id": 4180, "mutability": "mutable", "name": "_pluginRegistry", - "nameLocation": "2127:15:31", + "nameLocation": "2127:15:27", "nodeType": "VariableDeclaration", - "scope": 4906, - "src": "2119:23:31", + "scope": 4295, + "src": "2119:23:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3908,10 +3908,10 @@ "typeString": "address" }, "typeName": { - "id": 4790, + "id": 4179, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2119:7:31", + "src": "2119:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3921,44 +3921,44 @@ "visibility": "internal" } ], - "src": "1890:258:31" + "src": "1890:258:27" }, "returnParameters": { - "id": 4793, + "id": 4182, "nodeType": "ParameterList", "parameters": [], - "src": "2149:0:31" + "src": "2149:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 4918, + "id": 4307, "nodeType": "FunctionDefinition", - "src": "3009:124:31", + "src": "3009:124:27", "nodes": [], "body": { - "id": 4917, + "id": 4306, "nodeType": "Block", - "src": "3083:50:31", + "src": "3083:50:27", "nodes": [], "statements": [ { "expression": { - "id": 4915, + "id": 4304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4913, + "id": 4302, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "3093:14:31", + "referencedDeclaration": 4161, + "src": "3093:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3967,26 +3967,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 4914, + "id": 4303, "name": "onboardingPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4908, - "src": "3110:16:31", + "referencedDeclaration": 4297, + "src": "3110:16:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3093:33:31", + "src": "3093:33:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 4916, + "id": 4305, "nodeType": "ExpressionStatement", - "src": "3093:33:31" + "src": "3093:33:27" } ] }, @@ -3995,37 +3995,37 @@ "kind": "function", "modifiers": [ { - "id": 4911, + "id": 4300, "kind": "modifierInvocation", "modifierName": { - "id": 4910, + "id": 4299, "name": "onlyAdmin", "nameLocations": [ - "3073:9:31" + "3073:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "3073:9:31" + "referencedDeclaration": 3213, + "src": "3073:9:27" }, "nodeType": "ModifierInvocation", - "src": "3073:9:31" + "src": "3073:9:27" } ], "name": "setOnboardingStrategy", - "nameLocation": "3018:21:31", + "nameLocation": "3018:21:27", "parameters": { - "id": 4909, + "id": 4298, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4908, + "id": 4297, "mutability": "mutable", "name": "onboardingPlugin", - "nameLocation": "3048:16:31", + "nameLocation": "3048:16:27", "nodeType": "VariableDeclaration", - "scope": 4918, - "src": "3040:24:31", + "scope": 4307, + "src": "3040:24:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4033,10 +4033,10 @@ "typeString": "address" }, "typeName": { - "id": 4907, + "id": 4296, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3040:7:31", + "src": "3040:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4046,28 +4046,28 @@ "visibility": "internal" } ], - "src": "3039:26:31" + "src": "3039:26:27" }, "returnParameters": { - "id": 4912, + "id": 4301, "nodeType": "ParameterList", "parameters": [], - "src": "3083:0:31" + "src": "3083:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 4944, + "id": 4333, "nodeType": "FunctionDefinition", - "src": "3139:175:31", + "src": "3139:175:27", "nodes": [], "body": { - "id": 4943, + "id": 4332, "nodeType": "Block", - "src": "3212:102:31", + "src": "3212:102:27", "nodes": [], "statements": [ { @@ -4076,24 +4076,24 @@ { "arguments": [ { - "id": 4930, + "id": 4319, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4920, - "src": "3238:9:31", + "referencedDeclaration": 4309, + "src": "3238:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 4931, + "id": 4320, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4922, - "src": "3249:4:31", + "referencedDeclaration": 4311, + "src": "3249:4:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4111,18 +4111,18 @@ "typeString": "uint256" } ], - "id": 4929, + "id": 4318, "name": "canJoin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5040, - "src": "3230:7:31", + "referencedDeclaration": 4429, + "src": "3230:7:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, - "id": 4932, + "id": 4321, "isConstant": false, "isLValue": false, "isPure": false, @@ -4131,7 +4131,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3230:24:31", + "src": "3230:24:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4140,14 +4140,14 @@ }, { "hexValue": "6e6f7420616c6c6f776564", - "id": 4933, + "id": 4322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3256:13:31", + "src": "3256:13:27", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5c0608e7a428ea07a0c4c9bb0791749812cfeb8bc4b0e031d134a099a0e13dcb", "typeString": "literal_string \"not allowed\"" @@ -4166,7 +4166,7 @@ "typeString": "literal_string \"not allowed\"" } ], - "id": 4928, + "id": 4317, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4174,13 +4174,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3222:7:31", + "src": "3222:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 4934, + "id": 4323, "isConstant": false, "isLValue": false, "isPure": false, @@ -4189,39 +4189,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3222:48:31", + "src": "3222:48:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4935, + "id": 4324, "nodeType": "ExpressionStatement", - "src": "3222:48:31" + "src": "3222:48:27" }, { "expression": { "arguments": [ { - "id": 4939, + "id": 4328, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4920, - "src": "3291:9:31", + "referencedDeclaration": 4309, + "src": "3291:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 4940, + "id": 4329, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4922, - "src": "3302:4:31", + "referencedDeclaration": 4311, + "src": "3302:4:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4240,33 +4240,33 @@ } ], "expression": { - "id": 4936, + "id": 4325, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "3280:5:31", + "src": "3280:5:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_DAOExpander_$5116_$", + "typeIdentifier": "t_type$_t_super$_DAOExpander_$4505_$", "typeString": "type(contract super DAOExpander)" } }, - "id": 4938, + "id": 4327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3286:4:31", + "memberLocation": "3286:4:27", "memberName": "join", "nodeType": "MemberAccess", - "referencedDeclaration": 3284, - "src": "3280:10:31", + "referencedDeclaration": 3248, + "src": "3280:10:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 4941, + "id": 4330, "isConstant": false, "isLValue": false, "isPure": false, @@ -4275,64 +4275,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3280:27:31", + "src": "3280:27:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 4942, + "id": 4331, "nodeType": "ExpressionStatement", - "src": "3280:27:31" + "src": "3280:27:27" } ] }, "baseFunctions": [ - 3284 + 3248 ], "functionSelector": "3b4da69f", "implemented": true, "kind": "function", "modifiers": [ { - "id": 4926, + "id": 4315, "kind": "modifierInvocation", "modifierName": { - "id": 4925, + "id": 4314, "name": "onlyAutID", "nameLocations": [ - "3202:9:31" + "3202:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 2977, - "src": "3202:9:31" + "referencedDeclaration": 2941, + "src": "3202:9:27" }, "nodeType": "ModifierInvocation", - "src": "3202:9:31" + "src": "3202:9:27" } ], "name": "join", - "nameLocation": "3148:4:31", + "nameLocation": "3148:4:27", "overrides": { - "id": 4924, + "id": 4313, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3193:8:31" + "src": "3193:8:27" }, "parameters": { - "id": 4923, + "id": 4312, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4920, + "id": 4309, "mutability": "mutable", "name": "newMember", - "nameLocation": "3161:9:31", + "nameLocation": "3161:9:27", "nodeType": "VariableDeclaration", - "scope": 4944, - "src": "3153:17:31", + "scope": 4333, + "src": "3153:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4340,10 +4340,10 @@ "typeString": "address" }, "typeName": { - "id": 4919, + "id": 4308, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3153:7:31", + "src": "3153:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4354,13 +4354,13 @@ }, { "constant": false, - "id": 4922, + "id": 4311, "mutability": "mutable", "name": "role", - "nameLocation": "3180:4:31", + "nameLocation": "3180:4:27", "nodeType": "VariableDeclaration", - "scope": 4944, - "src": "3172:12:31", + "scope": 4333, + "src": "3172:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4368,10 +4368,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4921, + "id": 4310, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3172:7:31", + "src": "3172:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4380,28 +4380,28 @@ "visibility": "internal" } ], - "src": "3152:33:31" + "src": "3152:33:27" }, "returnParameters": { - "id": 4927, + "id": 4316, "nodeType": "ParameterList", "parameters": [], - "src": "3212:0:31" + "src": "3212:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 4969, + "id": 4358, "nodeType": "FunctionDefinition", - "src": "3624:255:31", + "src": "3624:255:27", "nodes": [], "body": { - "id": 4968, + "id": 4357, "nodeType": "Block", - "src": "3707:172:31", + "src": "3707:172:27", "nodes": [], "statements": [ { @@ -4409,39 +4409,39 @@ "arguments": [ { "expression": { - "id": 4963, + "id": 4352, "name": "daoData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4766, - "src": "3836:7:31", + "referencedDeclaration": 4155, + "src": "3836:7:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData storage ref" } }, - "id": 4964, + "id": 4353, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3844:10:31", + "memberLocation": "3844:10:27", "memberName": "daoAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 5474, - "src": "3836:18:31", + "referencedDeclaration": 4601, + "src": "3836:18:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 4965, + "id": 4354, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4947, - "src": "3856:6:31", + "referencedDeclaration": 4336, + "src": "3856:6:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4465,27 +4465,27 @@ "arguments": [ { "expression": { - "id": 4958, + "id": 4347, "name": "daoData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4766, - "src": "3791:7:31", + "referencedDeclaration": 4155, + "src": "3791:7:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData storage ref" } }, - "id": 4959, + "id": 4348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3799:12:31", + "memberLocation": "3799:12:27", "memberName": "contractType", "nodeType": "MemberAccess", - "referencedDeclaration": 5472, - "src": "3791:20:31", + "referencedDeclaration": 4599, + "src": "3791:20:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4502,14 +4502,14 @@ "expression": { "arguments": [ { - "id": 4955, + "id": 4344, "name": "daoTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4770, - "src": "3753:8:31", + "referencedDeclaration": 4159, + "src": "3753:8:27", "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } } @@ -4517,22 +4517,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } ], - "id": 4954, + "id": 4343, "name": "IDAOTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5834, - "src": "3743:9:31", + "referencedDeclaration": 4679, + "src": "3743:9:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$5834_$", + "typeIdentifier": "t_type$_t_contract$_IDAOTypes_$4679_$", "typeString": "type(contract IDAOTypes)" } }, - "id": 4956, + "id": 4345, "isConstant": false, "isLValue": false, "isPure": false, @@ -4541,29 +4541,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3743:19:31", + "src": "3743:19:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IDAOTypes_$5834", + "typeIdentifier": "t_contract$_IDAOTypes_$4679", "typeString": "contract IDAOTypes" } }, - "id": 4957, + "id": 4346, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3763:27:31", + "memberLocation": "3763:27:27", "memberName": "getMembershipCheckerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "3743:47:31", + "referencedDeclaration": 4667, + "src": "3743:47:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view external returns (address)" } }, - "id": 4960, + "id": 4349, "isConstant": false, "isLValue": false, "isPure": false, @@ -4572,7 +4572,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3743:69:31", + "src": "3743:69:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4587,18 +4587,18 @@ "typeString": "address" } ], - "id": 4953, + "id": 4342, "name": "IMembershipChecker", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5849, - "src": "3724:18:31", + "referencedDeclaration": 4694, + "src": "3724:18:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IMembershipChecker_$5849_$", + "typeIdentifier": "t_type$_t_contract$_IMembershipChecker_$4694_$", "typeString": "type(contract IMembershipChecker)" } }, - "id": 4961, + "id": 4350, "isConstant": false, "isLValue": false, "isPure": false, @@ -4607,29 +4607,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3724:89:31", + "src": "3724:89:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IMembershipChecker_$5849", + "typeIdentifier": "t_contract$_IMembershipChecker_$4694", "typeString": "contract IMembershipChecker" } }, - "id": 4962, + "id": 4351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3814:8:31", + "memberLocation": "3814:8:27", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5848, - "src": "3724:98:31", + "referencedDeclaration": 4693, + "src": "3724:98:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view external returns (bool)" } }, - "id": 4966, + "id": 4355, "isConstant": false, "isLValue": false, "isPure": false, @@ -4638,27 +4638,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3724:148:31", + "src": "3724:148:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 4952, - "id": 4967, + "functionReturnParameters": 4341, + "id": 4356, "nodeType": "Return", - "src": "3717:155:31" + "src": "3717:155:27" } ] }, "baseFunctions": [ - 5522 + 4649 ], "documentation": { - "id": 4945, + "id": 4334, "nodeType": "StructuredDocumentation", - "src": "3320:299:31", + "src": "3320:299:27", "text": "@notice Checks if the passed member is a part of the original DAO contract depending on it's implementation of membership\n @dev checks if the member is a part of a DAO\n @param member the address of the member that's checked\n @return true if they're a member, false otherwise" }, "functionSelector": "8e99076a", @@ -4666,26 +4666,26 @@ "kind": "function", "modifiers": [], "name": "isMemberOfOriginalDAO", - "nameLocation": "3633:21:31", + "nameLocation": "3633:21:27", "overrides": { - "id": 4949, + "id": 4338, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3683:8:31" + "src": "3683:8:27" }, "parameters": { - "id": 4948, + "id": 4337, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4947, + "id": 4336, "mutability": "mutable", "name": "member", - "nameLocation": "3663:6:31", + "nameLocation": "3663:6:27", "nodeType": "VariableDeclaration", - "scope": 4969, - "src": "3655:14:31", + "scope": 4358, + "src": "3655:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4693,10 +4693,10 @@ "typeString": "address" }, "typeName": { - "id": 4946, + "id": 4335, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3655:7:31", + "src": "3655:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4706,21 +4706,21 @@ "visibility": "internal" } ], - "src": "3654:16:31" + "src": "3654:16:27" }, "returnParameters": { - "id": 4952, + "id": 4341, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4951, + "id": 4340, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4969, - "src": "3701:4:31", + "scope": 4358, + "src": "3701:4:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4728,10 +4728,10 @@ "typeString": "bool" }, "typeName": { - "id": 4950, + "id": 4339, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3701:4:31", + "src": "3701:4:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4740,22 +4740,22 @@ "visibility": "internal" } ], - "src": "3700:6:31" + "src": "3700:6:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 5040, + "id": 4429, "nodeType": "FunctionDefinition", - "src": "4189:640:31", + "src": "4189:640:27", "nodes": [], "body": { - "id": 5039, + "id": 4428, "nodeType": "Block", - "src": "4289:540:31", + "src": "4289:540:27", "nodes": [], "statements": [ { @@ -4764,18 +4764,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 4986, + "id": 4375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 4981, + "id": 4370, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4303:14:31", + "referencedDeclaration": 4161, + "src": "4303:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4787,14 +4787,14 @@ "arguments": [ { "hexValue": "30", - "id": 4984, + "id": 4373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4329:1:31", + "src": "4329:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4809,26 +4809,26 @@ "typeString": "int_const 0" } ], - "id": 4983, + "id": 4372, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4321:7:31", + "src": "4321:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4982, + "id": 4371, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4321:7:31", + "src": "4321:7:27", "typeDescriptions": {} } }, - "id": 4985, + "id": 4374, "isConstant": false, "isLValue": false, "isPure": true, @@ -4837,23 +4837,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4321:10:31", + "src": "4321:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4303:28:31", + "src": "4303:28:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 5037, + "id": 4426, "nodeType": "Block", - "src": "4621:202:31", + "src": "4621:202:27", "statements": [ { "condition": { @@ -4861,7 +4861,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 5025, + "id": 4414, "isConstant": false, "isLValue": false, "isPure": false, @@ -4871,18 +4871,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 5019, + "id": 4408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 5014, + "id": 4403, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4639:14:31", + "referencedDeclaration": 4161, + "src": "4639:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4894,14 +4894,14 @@ "arguments": [ { "hexValue": "30", - "id": 5017, + "id": 4406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4665:1:31", + "src": "4665:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4916,26 +4916,26 @@ "typeString": "int_const 0" } ], - "id": 5016, + "id": 4405, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4657:7:31", + "src": "4657:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 5015, + "id": 4404, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4657:7:31", + "src": "4657:7:27", "typeDescriptions": {} } }, - "id": 5018, + "id": 4407, "isConstant": false, "isLValue": false, "isPure": true, @@ -4944,14 +4944,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4657:10:31", + "src": "4657:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4639:28:31", + "src": "4639:28:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4966,12 +4966,12 @@ "expression": { "arguments": [ { - "id": 5021, + "id": 4410, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4688:14:31", + "referencedDeclaration": 4161, + "src": "4688:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4985,18 +4985,18 @@ "typeString": "address" } ], - "id": 5020, + "id": 4409, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "4671:16:31", + "referencedDeclaration": 4785, + "src": "4671:16:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 5022, + "id": 4411, "isConstant": false, "isLValue": false, "isPure": false, @@ -5005,29 +5005,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4671:32:31", + "src": "4671:32:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 5023, + "id": 4412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4704:8:31", + "memberLocation": "4704:8:27", "memberName": "isActive", "nodeType": "MemberAccess", - "referencedDeclaration": 6459, - "src": "4671:41:31", + "referencedDeclaration": 4747, + "src": "4671:41:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 5024, + "id": 4413, "isConstant": false, "isLValue": false, "isPure": false, @@ -5036,14 +5036,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4671:43:31", + "src": "4671:43:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4639:75:31", + "src": "4639:75:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5053,24 +5053,24 @@ "expression": { "arguments": [ { - "id": 5032, + "id": 4421, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4972, - "src": "4799:6:31", + "referencedDeclaration": 4361, + "src": "4799:6:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5033, + "id": 4422, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4974, - "src": "4807:4:31", + "referencedDeclaration": 4363, + "src": "4807:4:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5091,12 +5091,12 @@ "expression": { "arguments": [ { - "id": 5029, + "id": 4418, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4771:14:31", + "referencedDeclaration": 4161, + "src": "4771:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5110,18 +5110,18 @@ "typeString": "address" } ], - "id": 5028, + "id": 4417, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "4754:16:31", + "referencedDeclaration": 4785, + "src": "4754:16:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 5030, + "id": 4419, "isConstant": false, "isLValue": false, "isPure": false, @@ -5130,29 +5130,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4754:32:31", + "src": "4754:32:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 5031, + "id": 4420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4787:11:31", + "memberLocation": "4787:11:27", "memberName": "isOnboarded", "nodeType": "MemberAccess", - "referencedDeclaration": 6488, - "src": "4754:44:31", + "referencedDeclaration": 4776, + "src": "4754:44:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view external returns (bool)" } }, - "id": 5034, + "id": 4423, "isConstant": false, "isLValue": false, "isPure": false, @@ -5161,53 +5161,53 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4754:58:31", + "src": "4754:58:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 4980, - "id": 5035, + "functionReturnParameters": 4369, + "id": 4424, "nodeType": "Return", - "src": "4747:65:31" + "src": "4747:65:27" }, - "id": 5036, + "id": 4425, "nodeType": "IfStatement", - "src": "4635:177:31", + "src": "4635:177:27", "trueBody": { "expression": { "hexValue": "66616c7365", - "id": 5026, + "id": 4415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4723:5:31", + "src": "4723:5:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "functionReturnParameters": 4980, - "id": 5027, + "functionReturnParameters": 4369, + "id": 4416, "nodeType": "Return", - "src": "4716:12:31" + "src": "4716:12:27" } } ] }, - "id": 5038, + "id": 4427, "nodeType": "IfStatement", - "src": "4299:524:31", + "src": "4299:524:27", "trueBody": { - "id": 5013, + "id": 4402, "nodeType": "Block", - "src": "4333:282:31", + "src": "4333:282:27", "statements": [ { "expression": { @@ -5215,7 +5215,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 5011, + "id": 4400, "isConstant": false, "isLValue": false, "isPure": false, @@ -5223,12 +5223,12 @@ "leftExpression": { "arguments": [ { - "id": 4988, + "id": 4377, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4972, - "src": "4376:6:31", + "referencedDeclaration": 4361, + "src": "4376:6:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5242,18 +5242,18 @@ "typeString": "address" } ], - "id": 4987, + "id": 4376, "name": "isMemberOfOriginalDAO", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4969, - "src": "4354:21:31", + "referencedDeclaration": 4358, + "src": "4354:21:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 4989, + "id": 4378, "isConstant": false, "isLValue": false, "isPure": false, @@ -5262,7 +5262,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4354:29:31", + "src": "4354:29:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5278,7 +5278,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 5009, + "id": 4398, "isConstant": false, "isLValue": false, "isPure": false, @@ -5288,7 +5288,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 5001, + "id": 4390, "isConstant": false, "isLValue": false, "isPure": false, @@ -5298,18 +5298,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 4995, + "id": 4384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 4990, + "id": 4379, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4425:14:31", + "referencedDeclaration": 4161, + "src": "4425:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5321,14 +5321,14 @@ "arguments": [ { "hexValue": "30", - "id": 4993, + "id": 4382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4451:1:31", + "src": "4451:1:27", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5343,26 +5343,26 @@ "typeString": "int_const 0" } ], - "id": 4992, + "id": 4381, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4443:7:31", + "src": "4443:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 4991, + "id": 4380, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4443:7:31", + "src": "4443:7:27", "typeDescriptions": {} } }, - "id": 4994, + "id": 4383, "isConstant": false, "isLValue": false, "isPure": true, @@ -5371,14 +5371,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4443:10:31", + "src": "4443:10:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4425:28:31", + "src": "4425:28:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5393,12 +5393,12 @@ "expression": { "arguments": [ { - "id": 4997, + "id": 4386, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4474:14:31", + "referencedDeclaration": 4161, + "src": "4474:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5412,18 +5412,18 @@ "typeString": "address" } ], - "id": 4996, + "id": 4385, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "4457:16:31", + "referencedDeclaration": 4785, + "src": "4457:16:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 4998, + "id": 4387, "isConstant": false, "isLValue": false, "isPure": false, @@ -5432,29 +5432,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4457:32:31", + "src": "4457:32:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 4999, + "id": 4388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4490:8:31", + "memberLocation": "4490:8:27", "memberName": "isActive", "nodeType": "MemberAccess", - "referencedDeclaration": 6459, - "src": "4457:41:31", + "referencedDeclaration": 4747, + "src": "4457:41:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 5000, + "id": 4389, "isConstant": false, "isLValue": false, "isPure": false, @@ -5463,14 +5463,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4457:43:31", + "src": "4457:43:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4425:75:31", + "src": "4425:75:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5481,24 +5481,24 @@ "rightExpression": { "arguments": [ { - "id": 5006, + "id": 4395, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4972, - "src": "4573:6:31", + "referencedDeclaration": 4361, + "src": "4573:6:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5007, + "id": 4396, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4974, - "src": "4581:4:31", + "referencedDeclaration": 4363, + "src": "4581:4:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5519,12 +5519,12 @@ "expression": { "arguments": [ { - "id": 5003, + "id": 4392, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "4545:14:31", + "referencedDeclaration": 4161, + "src": "4545:14:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5538,18 +5538,18 @@ "typeString": "address" } ], - "id": 5002, + "id": 4391, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "4528:16:31", + "referencedDeclaration": 4785, + "src": "4528:16:27", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 5004, + "id": 4393, "isConstant": false, "isLValue": false, "isPure": false, @@ -5558,29 +5558,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4528:32:31", + "src": "4528:32:27", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 5005, + "id": 4394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4561:11:31", + "memberLocation": "4561:11:27", "memberName": "isOnboarded", "nodeType": "MemberAccess", - "referencedDeclaration": 6488, - "src": "4528:44:31", + "referencedDeclaration": 4776, + "src": "4528:44:27", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view external returns (bool)" } }, - "id": 5008, + "id": 4397, "isConstant": false, "isLValue": false, "isPure": false, @@ -5589,43 +5589,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4528:58:31", + "src": "4528:58:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4425:161:31", + "src": "4425:161:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 5010, + "id": 4399, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4403:201:31", + "src": "4403:201:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4354:250:31", + "src": "4354:250:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 4980, - "id": 5012, + "functionReturnParameters": 4369, + "id": 4401, "nodeType": "Return", - "src": "4347:257:31" + "src": "4347:257:27" } ] } @@ -5633,12 +5633,12 @@ ] }, "baseFunctions": [ - 4565 + 3978 ], "documentation": { - "id": 4970, + "id": 4359, "nodeType": "StructuredDocumentation", - "src": "3885:299:31", + "src": "3885:299:27", "text": "@notice Checks if the passed member is a part of the original DAO contract depending on it's implementation of membership\n @dev checks if the member is a part of a DAO\n @param member the address of the member that's checked\n @return true if they're a member, false otherwise" }, "functionSelector": "03ffe330", @@ -5646,37 +5646,37 @@ "kind": "function", "modifiers": [], "name": "canJoin", - "nameLocation": "4198:7:31", + "nameLocation": "4198:7:27", "overrides": { - "id": 4977, + "id": 4366, "nodeType": "OverrideSpecifier", "overrides": [ { - "id": 4976, + "id": 4365, "name": "INovaMembership", "nameLocations": [ - "4257:15:31" + "4257:15:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4566, - "src": "4257:15:31" + "referencedDeclaration": 3979, + "src": "4257:15:27" } ], - "src": "4248:25:31" + "src": "4248:25:27" }, "parameters": { - "id": 4975, + "id": 4364, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4972, + "id": 4361, "mutability": "mutable", "name": "member", - "nameLocation": "4214:6:31", + "nameLocation": "4214:6:27", "nodeType": "VariableDeclaration", - "scope": 5040, - "src": "4206:14:31", + "scope": 4429, + "src": "4206:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5684,10 +5684,10 @@ "typeString": "address" }, "typeName": { - "id": 4971, + "id": 4360, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4206:7:31", + "src": "4206:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5698,13 +5698,13 @@ }, { "constant": false, - "id": 4974, + "id": 4363, "mutability": "mutable", "name": "role", - "nameLocation": "4230:4:31", + "nameLocation": "4230:4:27", "nodeType": "VariableDeclaration", - "scope": 5040, - "src": "4222:12:31", + "scope": 4429, + "src": "4222:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5712,10 +5712,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4973, + "id": 4362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4222:7:31", + "src": "4222:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5724,21 +5724,21 @@ "visibility": "internal" } ], - "src": "4205:30:31" + "src": "4205:30:27" }, "returnParameters": { - "id": 4980, + "id": 4369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4979, + "id": 4368, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5040, - "src": "4283:4:31", + "scope": 4429, + "src": "4283:4:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5746,10 +5746,10 @@ "typeString": "bool" }, "typeName": { - "id": 4978, + "id": 4367, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4283:4:31", + "src": "4283:4:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5758,34 +5758,34 @@ "visibility": "internal" } ], - "src": "4282:6:31" + "src": "4282:6:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 5053, + "id": 4442, "nodeType": "FunctionDefinition", - "src": "4835:110:31", + "src": "4835:110:27", "nodes": [], "body": { - "id": 5052, + "id": 4441, "nodeType": "Block", - "src": "4903:42:31", + "src": "4903:42:27", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 5049, + "id": 4438, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5042, - "src": "4929:8:31", + "referencedDeclaration": 4431, + "src": "4929:8:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5799,18 +5799,18 @@ "typeString": "uint256" } ], - "id": 5048, + "id": 4437, "name": "_activateModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3635, - "src": "4913:15:31", + "referencedDeclaration": 3599, + "src": "4913:15:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 5050, + "id": 4439, "isConstant": false, "isLValue": false, "isPure": false, @@ -5819,64 +5819,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4913:25:31", + "src": "4913:25:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5051, + "id": 4440, "nodeType": "ExpressionStatement", - "src": "4913:25:31" + "src": "4913:25:27" } ] }, "baseFunctions": [ - 4592 + 4005 ], "functionSelector": "69130c8d", "implemented": true, "kind": "function", "modifiers": [ { - "id": 5046, + "id": 4435, "kind": "modifierInvocation", "modifierName": { - "id": 5045, + "id": 4434, "name": "onlyAdmin", "nameLocations": [ - "4893:9:31" + "4893:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "4893:9:31" + "referencedDeclaration": 3213, + "src": "4893:9:27" }, "nodeType": "ModifierInvocation", - "src": "4893:9:31" + "src": "4893:9:27" } ], "name": "activateModule", - "nameLocation": "4844:14:31", + "nameLocation": "4844:14:27", "overrides": { - "id": 5044, + "id": 4433, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4884:8:31" + "src": "4884:8:27" }, "parameters": { - "id": 5043, + "id": 4432, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5042, + "id": 4431, "mutability": "mutable", "name": "moduleId", - "nameLocation": "4867:8:31", + "nameLocation": "4867:8:27", "nodeType": "VariableDeclaration", - "scope": 5053, - "src": "4859:16:31", + "scope": 4442, + "src": "4859:16:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5884,10 +5884,10 @@ "typeString": "uint256" }, "typeName": { - "id": 5041, + "id": 4430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4859:7:31", + "src": "4859:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5896,141 +5896,141 @@ "visibility": "internal" } ], - "src": "4858:18:31" + "src": "4858:18:27" }, "returnParameters": { - "id": 5047, + "id": 4436, "nodeType": "ParameterList", "parameters": [], - "src": "4903:0:31" + "src": "4903:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 5063, + "id": 4452, "nodeType": "FunctionDefinition", - "src": "4951:114:31", + "src": "4951:114:27", "nodes": [], "body": { - "id": 5062, + "id": 4451, "nodeType": "Block", - "src": "5034:31:31", + "src": "5034:31:27", "nodes": [], "statements": [ { "expression": { - "id": 5060, + "id": 4449, "name": "daoData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4766, - "src": "5051:7:31", + "referencedDeclaration": 4155, + "src": "5051:7:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage", "typeString": "struct IDAOExpanderData.DAOExpanssionData storage ref" } }, - "functionReturnParameters": 5059, - "id": 5061, + "functionReturnParameters": 4448, + "id": 4450, "nodeType": "Return", - "src": "5044:14:31" + "src": "5044:14:27" } ] }, "baseFunctions": [ - 5481 + 4608 ], "functionSelector": "db83814e", "implemented": true, "kind": "function", "modifiers": [], "name": "getDAOData", - "nameLocation": "4960:10:31", + "nameLocation": "4960:10:27", "overrides": { - "id": 5055, + "id": 4444, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "4985:8:31" + "src": "4985:8:27" }, "parameters": { - "id": 5054, + "id": 4443, "nodeType": "ParameterList", "parameters": [], - "src": "4970:2:31" + "src": "4970:2:27" }, "returnParameters": { - "id": 5059, + "id": 4448, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5058, + "id": 4447, "mutability": "mutable", "name": "data", - "nameLocation": "5028:4:31", + "nameLocation": "5028:4:27", "nodeType": "VariableDeclaration", - "scope": 5063, - "src": "5003:29:31", + "scope": 4452, + "src": "5003:29:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_memory_ptr", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_memory_ptr", "typeString": "struct IDAOExpanderData.DAOExpanssionData" }, "typeName": { - "id": 5057, + "id": 4446, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5056, + "id": 4445, "name": "DAOExpanssionData", "nameLocations": [ - "5003:17:31" + "5003:17:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5475, - "src": "5003:17:31" + "referencedDeclaration": 4602, + "src": "5003:17:27" }, - "referencedDeclaration": 5475, - "src": "5003:17:31", + "referencedDeclaration": 4602, + "src": "5003:17:27", "typeDescriptions": { - "typeIdentifier": "t_struct$_DAOExpanssionData_$5475_storage_ptr", + "typeIdentifier": "t_struct$_DAOExpanssionData_$4602_storage_ptr", "typeString": "struct IDAOExpanderData.DAOExpanssionData" } }, "visibility": "internal" } ], - "src": "5002:31:31" + "src": "5002:31:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 5076, + "id": 4465, "nodeType": "FunctionDefinition", - "src": "5071:92:31", + "src": "5071:92:27", "nodes": [], "body": { - "id": 5075, + "id": 4464, "nodeType": "Block", - "src": "5134:29:31", + "src": "5134:29:27", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 5072, + "id": 4461, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5065, - "src": "5152:3:31", + "referencedDeclaration": 4454, + "src": "5152:3:27", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -6044,18 +6044,18 @@ "typeString": "string memory" } ], - "id": 5071, + "id": 4460, "name": "_addURL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4319, - "src": "5144:7:31", + "referencedDeclaration": 3732, + "src": "5144:7:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 5073, + "id": 4462, "isConstant": false, "isLValue": false, "isPure": false, @@ -6064,64 +6064,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5144:12:31", + "src": "5144:12:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5074, + "id": 4463, "nodeType": "ExpressionStatement", - "src": "5144:12:31" + "src": "5144:12:27" } ] }, "baseFunctions": [ - 4723 + 4112 ], "functionSelector": "d103449c", "implemented": true, "kind": "function", "modifiers": [ { - "id": 5069, + "id": 4458, "kind": "modifierInvocation", "modifierName": { - "id": 5068, + "id": 4457, "name": "onlyAdmin", "nameLocations": [ - "5124:9:31" + "5124:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "5124:9:31" + "referencedDeclaration": 3213, + "src": "5124:9:27" }, "nodeType": "ModifierInvocation", - "src": "5124:9:31" + "src": "5124:9:27" } ], "name": "addURL", - "nameLocation": "5080:6:31", + "nameLocation": "5080:6:27", "overrides": { - "id": 5067, + "id": 4456, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "5115:8:31" + "src": "5115:8:27" }, "parameters": { - "id": 5066, + "id": 4455, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5065, + "id": 4454, "mutability": "mutable", "name": "url", - "nameLocation": "5101:3:31", + "nameLocation": "5101:3:27", "nodeType": "VariableDeclaration", - "scope": 5076, - "src": "5087:17:31", + "scope": 4465, + "src": "5087:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6129,10 +6129,10 @@ "typeString": "string" }, "typeName": { - "id": 5064, + "id": 4453, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5087:6:31", + "src": "5087:6:27", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -6141,40 +6141,40 @@ "visibility": "internal" } ], - "src": "5086:19:31" + "src": "5086:19:27" }, "returnParameters": { - "id": 5070, + "id": 4459, "nodeType": "ParameterList", "parameters": [], - "src": "5134:0:31" + "src": "5134:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 5089, + "id": 4478, "nodeType": "FunctionDefinition", - "src": "5169:98:31", + "src": "5169:98:27", "nodes": [], "body": { - "id": 5088, + "id": 4477, "nodeType": "Block", - "src": "5235:32:31", + "src": "5235:32:27", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 5085, + "id": 4474, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5078, - "src": "5256:3:31", + "referencedDeclaration": 4467, + "src": "5256:3:27", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -6188,18 +6188,18 @@ "typeString": "string memory" } ], - "id": 5084, + "id": 4473, "name": "_removeURL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4400, - "src": "5245:10:31", + "referencedDeclaration": 3813, + "src": "5245:10:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 5086, + "id": 4475, "isConstant": false, "isLValue": false, "isPure": false, @@ -6208,64 +6208,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5245:15:31", + "src": "5245:15:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5087, + "id": 4476, "nodeType": "ExpressionStatement", - "src": "5245:15:31" + "src": "5245:15:27" } ] }, "baseFunctions": [ - 4729 + 4118 ], "functionSelector": "810e8c04", "implemented": true, "kind": "function", "modifiers": [ { - "id": 5082, + "id": 4471, "kind": "modifierInvocation", "modifierName": { - "id": 5081, + "id": 4470, "name": "onlyAdmin", "nameLocations": [ - "5225:9:31" + "5225:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "5225:9:31" + "referencedDeclaration": 3213, + "src": "5225:9:27" }, "nodeType": "ModifierInvocation", - "src": "5225:9:31" + "src": "5225:9:27" } ], "name": "removeURL", - "nameLocation": "5178:9:31", + "nameLocation": "5178:9:27", "overrides": { - "id": 5080, + "id": 4469, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "5216:8:31" + "src": "5216:8:27" }, "parameters": { - "id": 5079, + "id": 4468, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5078, + "id": 4467, "mutability": "mutable", "name": "url", - "nameLocation": "5202:3:31", + "nameLocation": "5202:3:27", "nodeType": "VariableDeclaration", - "scope": 5089, - "src": "5188:17:31", + "scope": 4478, + "src": "5188:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6273,10 +6273,10 @@ "typeString": "string" }, "typeName": { - "id": 5077, + "id": 4466, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5188:6:31", + "src": "5188:6:27", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -6285,40 +6285,40 @@ "visibility": "internal" } ], - "src": "5187:19:31" + "src": "5187:19:27" }, "returnParameters": { - "id": 5083, + "id": 4472, "nodeType": "ParameterList", "parameters": [], - "src": "5235:0:31" + "src": "5235:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 5102, + "id": 4491, "nodeType": "FunctionDefinition", - "src": "5273:114:31", + "src": "5273:114:27", "nodes": [], "body": { - "id": 5101, + "id": 4490, "nodeType": "Block", - "src": "5344:43:31", + "src": "5344:43:27", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 5098, + "id": 4487, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5091, - "src": "5369:10:31", + "referencedDeclaration": 4480, + "src": "5369:10:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6332,18 +6332,18 @@ "typeString": "uint256" } ], - "id": 5097, + "id": 4486, "name": "_setCommitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3137, - "src": "5354:14:31", + "referencedDeclaration": 3101, + "src": "5354:14:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 5099, + "id": 4488, "isConstant": false, "isLValue": false, "isPure": false, @@ -6352,64 +6352,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5354:26:31", + "src": "5354:26:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5100, + "id": 4489, "nodeType": "ExpressionStatement", - "src": "5354:26:31" + "src": "5354:26:27" } ] }, "baseFunctions": [ - 4682 + 4080 ], "functionSelector": "be9cd052", "implemented": true, "kind": "function", "modifiers": [ { - "id": 5095, + "id": 4484, "kind": "modifierInvocation", "modifierName": { - "id": 5094, + "id": 4483, "name": "onlyAdmin", "nameLocations": [ - "5334:9:31" + "5334:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "5334:9:31" + "referencedDeclaration": 3213, + "src": "5334:9:27" }, "nodeType": "ModifierInvocation", - "src": "5334:9:31" + "src": "5334:9:27" } ], "name": "setCommitment", - "nameLocation": "5282:13:31", + "nameLocation": "5282:13:27", "overrides": { - "id": 5093, + "id": 4482, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "5325:8:31" + "src": "5325:8:27" }, "parameters": { - "id": 5092, + "id": 4481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5091, + "id": 4480, "mutability": "mutable", "name": "commitment", - "nameLocation": "5304:10:31", + "nameLocation": "5304:10:27", "nodeType": "VariableDeclaration", - "scope": 5102, - "src": "5296:18:31", + "scope": 4491, + "src": "5296:18:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6417,10 +6417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 5090, + "id": 4479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5296:7:31", + "src": "5296:7:27", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6429,40 +6429,40 @@ "visibility": "internal" } ], - "src": "5295:20:31" + "src": "5295:20:27" }, "returnParameters": { - "id": 5096, + "id": 4485, "nodeType": "ParameterList", "parameters": [], - "src": "5344:0:31" + "src": "5344:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 5115, + "id": 4504, "nodeType": "FunctionDefinition", - "src": "5393:118:31", + "src": "5393:118:27", "nodes": [], "body": { - "id": 5114, + "id": 4503, "nodeType": "Block", - "src": "5469:42:31", + "src": "5469:42:27", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 5111, + "id": 4500, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5104, - "src": "5495:8:31", + "referencedDeclaration": 4493, + "src": "5495:8:27", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -6476,18 +6476,18 @@ "typeString": "string memory" } ], - "id": 5110, + "id": 4499, "name": "_setMetadataUri", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3538, - "src": "5479:15:31", + "referencedDeclaration": 3502, + "src": "5479:15:27", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 5112, + "id": 4501, "isConstant": false, "isLValue": false, "isPure": false, @@ -6496,64 +6496,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5479:25:31", + "src": "5479:25:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5113, + "id": 4502, "nodeType": "ExpressionStatement", - "src": "5479:25:31" + "src": "5479:25:27" } ] }, "baseFunctions": [ - 4713 + 4102 ], "functionSelector": "1130630c", "implemented": true, "kind": "function", "modifiers": [ { - "id": 5108, + "id": 4497, "kind": "modifierInvocation", "modifierName": { - "id": 5107, + "id": 4496, "name": "onlyAdmin", "nameLocations": [ - "5459:9:31" + "5459:9:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "5459:9:31" + "referencedDeclaration": 3213, + "src": "5459:9:27" }, "nodeType": "ModifierInvocation", - "src": "5459:9:31" + "src": "5459:9:27" } ], "name": "setMetadataUri", - "nameLocation": "5402:14:31", + "nameLocation": "5402:14:27", "overrides": { - "id": 5106, + "id": 4495, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "5450:8:31" + "src": "5450:8:27" }, "parameters": { - "id": 5105, + "id": 4494, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5104, + "id": 4493, "mutability": "mutable", "name": "metadata", - "nameLocation": "5431:8:31", + "nameLocation": "5431:8:27", "nodeType": "VariableDeclaration", - "scope": 5115, - "src": "5417:22:31", + "scope": 4504, + "src": "5417:22:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6561,10 +6561,10 @@ "typeString": "string" }, "typeName": { - "id": 5103, + "id": 4492, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5417:6:31", + "src": "5417:6:27", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -6573,15 +6573,15 @@ "visibility": "internal" } ], - "src": "5416:24:31" + "src": "5416:24:27" }, "returnParameters": { - "id": 5109, + "id": 4498, "nodeType": "ParameterList", "parameters": [], - "src": "5469:0:31" + "src": "5469:0:27" }, - "scope": 5116, + "scope": 4505, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -6591,168 +6591,168 @@ "baseContracts": [ { "baseName": { - "id": 4747, + "id": 4136, "name": "AutIDAddress", "nameLocations": [ - "915:12:31" + "915:12:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3009, - "src": "915:12:31" + "referencedDeclaration": 2973, + "src": "915:12:27" }, - "id": 4748, + "id": 4137, "nodeType": "InheritanceSpecifier", - "src": "915:12:31" + "src": "915:12:27" }, { "baseName": { - "id": 4749, + "id": 4138, "name": "NovaMembers", "nameLocations": [ - "933:11:31" + "933:11:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3500, - "src": "933:11:31" + "referencedDeclaration": 3464, + "src": "933:11:27" }, - "id": 4750, + "id": 4139, "nodeType": "InheritanceSpecifier", - "src": "933:11:31" + "src": "933:11:27" }, { "baseName": { - "id": 4751, + "id": 4140, "name": "NovaUrls", "nameLocations": [ - "950:8:31" + "950:8:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4467, - "src": "950:8:31" + "referencedDeclaration": 3880, + "src": "950:8:27" }, - "id": 4752, + "id": 4141, "nodeType": "InheritanceSpecifier", - "src": "950:8:31" + "src": "950:8:27" }, { "baseName": { - "id": 4753, + "id": 4142, "name": "NovaMetadata", "nameLocations": [ - "964:12:31" + "964:12:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3545, - "src": "964:12:31" + "referencedDeclaration": 3509, + "src": "964:12:27" }, - "id": 4754, + "id": 4143, "nodeType": "InheritanceSpecifier", - "src": "964:12:31" + "src": "964:12:27" }, { "baseName": { - "id": 4755, + "id": 4144, "name": "NovaCommitment", "nameLocations": [ - "982:14:31" + "982:14:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3153, - "src": "982:14:31" + "referencedDeclaration": 3117, + "src": "982:14:27" }, - "id": 4756, + "id": 4145, "nodeType": "InheritanceSpecifier", - "src": "982:14:31" + "src": "982:14:27" }, { "baseName": { - "id": 4757, + "id": 4146, "name": "NovaMarket", "nameLocations": [ - "1002:10:31" + "1002:10:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3198, - "src": "1002:10:31" + "referencedDeclaration": 3162, + "src": "1002:10:27" }, - "id": 4758, + "id": 4147, "nodeType": "InheritanceSpecifier", - "src": "1002:10:31" + "src": "1002:10:27" }, { "baseName": { - "id": 4759, + "id": 4148, "name": "NovaModules", "nameLocations": [ - "1018:11:31" + "1018:11:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3674, - "src": "1018:11:31" + "referencedDeclaration": 3638, + "src": "1018:11:27" }, - "id": 4760, + "id": 4149, "nodeType": "InheritanceSpecifier", - "src": "1018:11:31" + "src": "1018:11:27" }, { "baseName": { - "id": 4761, + "id": 4150, "name": "IDAOExpander", "nameLocations": [ - "1035:12:31" + "1035:12:27" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5465, - "src": "1035:12:31" + "referencedDeclaration": 4592, + "src": "1035:12:27" }, - "id": 4762, + "id": 4151, "nodeType": "InheritanceSpecifier", - "src": "1035:12:31" + "src": "1035:12:27" } ], "canonicalName": "DAOExpander", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 4746, + "id": 4135, "nodeType": "StructuredDocumentation", - "src": "751:136:31", + "src": "751:136:27", "text": "@title DAOExpander\n @notice The extension of each DAO that integrates Aut\n @dev The extension of each DAO that integrates Aut" }, "fullyImplemented": true, "linearizedBaseContracts": [ - 5116, - 5465, - 3674, - 4600, - 3198, - 4540, - 3153, - 3545, - 4575, - 4467, - 3500, - 3009, - 4476, - 4531, - 4619, - 5523, - 4659, - 4705, - 4566, - 5482, - 4493, - 4714, - 4683, - 4730 + 4505, + 4592, + 3638, + 4013, + 3162, + 3953, + 3117, + 3509, + 3988, + 3880, + 3464, + 2973, + 3889, + 3944, + 4032, + 4650, + 4072, + 4094, + 3979, + 4609, + 3906, + 4103, + 4081, + 4119 ], "name": "DAOExpander", - "nameLocation": "896:11:31", - "scope": 5117, + "nameLocation": "896:11:27", + "scope": 4506, "usedErrors": [] } ], "license": "MIT" }, - "id": 31 + "id": 27 } \ No newline at end of file diff --git a/out/DAOExpanderFactory.sol/DAOExpanderFactory.json b/out/DAOExpanderFactory.sol/DAOExpanderFactory.json index edb30e17..13ab8aa5 100644 --- a/out/DAOExpanderFactory.sol/DAOExpanderFactory.json +++ b/out/DAOExpanderFactory.sol/DAOExpanderFactory.json @@ -62,12 +62,12 @@ ], "bytecode": { "object": "0x608060405234801561001057600080fd5b50612bb5806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c80633270bdc21462000033575b600080fd5b6200004a62000044366004620000ef565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b6000808b8b8b8b8b8b8b8b8b8b6040516200008190620000c4565b620000969a99989796959493929190620001e2565b604051809103906000f080158015620000b3573d6000803e3d6000fd5b509c9b505050505050505050505050565b612919806200026783390190565b80356001600160a01b0381168114620000ea57600080fd5b919050565b6000806000806000806000806000806101208b8d0312156200011057600080fd5b6200011b8b620000d2565b99506200012b60208c01620000d2565b98506200013b60408c01620000d2565b975060608b013596506200015260808c01620000d2565b955060a08b0135945060c08b013567ffffffffffffffff808211156200017757600080fd5b818d0191508d601f8301126200018c57600080fd5b8135818111156200019c57600080fd5b8e6020828501011115620001af57600080fd5b60208301965080955050505060e08b01359150620001d16101008c01620000d2565b90509295989b9194979a5092959850565b6001600160a01b038b811682528a81166020830152898116604083015260608201899052878116608083015260a0820187905261012060c08301819052820185905260009061014090868883860137600084880183015260e084019590955292909316610100820152601f909301601f19169092019091019897505050505050505056fe60806040523480156200001157600080fd5b50604051620029193803806200291983398101604081905262000034916200063f565b6001600160a01b038516620000905760405162461bcd60e51b815260206004820152601360248201527f4d697373696e672044414f20416464726573730000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038716620000e85760405162461bcd60e51b815260206004820152601960248201527f4d697373696e672044414f205479706573206164647265737300000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526000906001600160a01b0389169063979a607e90602401602060405180830381865afa15801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000157919062000775565b6001600160a01b031603620001af5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d656d626572736869702074797065000000000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526001600160a01b0388169063979a607e90602401602060405180830381865afa158015620001f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021b919062000775565b6040516307358f4160e31b81526001600160a01b0387811660048301528b8116602483015291909116906339ac7a0890604401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029291906200079a565b620002e05760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640162000087565b6040805180820182528781526001600160a01b038781166020928301819052898455604180546001600160a01b031990811690921790558c82166000818152600d909452938320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180548316909317909255604280549091169189169190911790556200038a84620003d5565b600080546001600160a01b0319166001600160a01b038a16179055620003b08262000461565b620003bb83620004eb565b620003c6816200056c565b5050505050505050506200094e565b600081118015620003e65750600481105b620004255760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640162000087565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff70906020015b60405180910390a150565b600081118015620004725750600b81105b620004b55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640162000087565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb469060200162000456565b60008151116200052c5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640162000087565b601e6200053a82826200084d565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a9778160405162000456919062000919565b6001600160a01b038116620005c45760405162461bcd60e51b815260206004820152601660248201527f696e76616c696420706c7567696e526567697374727900000000000000000000604482015260640162000087565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620005fe57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006365781810151838201526020016200061c565b50506000910152565b60008060008060008060008060006101208a8c0312156200065f57600080fd5b6200066a8a620005e6565b98506200067a60208b01620005e6565b97506200068a60408b01620005e6565b965060608a01519550620006a160808b01620005e6565b60a08b015160c08c015191965094506001600160401b0380821115620006c657600080fd5b818c0191508c601f830112620006db57600080fd5b815181811115620006f057620006f062000603565b604051601f8201601f19908116603f011681019083821181831017156200071b576200071b62000603565b816040528281528f60208487010111156200073557600080fd5b6200074883602083016020880162000619565b809750505050505060e08a01519150620007666101008b01620005e6565b90509295985092959850929598565b6000602082840312156200078857600080fd5b6200079382620005e6565b9392505050565b600060208284031215620007ad57600080fd5b815180151581146200079357600080fd5b600181811c90821680620007d357607f821691505b602082108103620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084857600081815260208120601f850160051c81016020861015620008235750805b601f850160051c820191505b8181101562000844578281556001016200082f565b5050505b505050565b81516001600160401b0381111562000869576200086962000603565b62000881816200087a8454620007be565b84620007fa565b602080601f831160018114620008b95760008415620008a05750858301515b600019600386901b1c1916600185901b17855562000844565b600085815260208120601f198616915b82811015620008ea57888601518255948401946001909101908401620008c9565b5085821015620009095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200093a81604085016020870162000619565b601f01601f19169190910160400192915050565b611fbb806200095e6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806369130c8d116100f95780639c54df6411610097578063be9cd05211610071578063be9cd052146103c1578063cd29c71a146103d4578063d103449c146103e9578063db83814e146103fc57600080fd5b80639c54df6414610378578063a230c5241461038b578063b5a8a3a1146103ae57600080fd5b806380f55605116100d357806380f5560514610338578063810e8c041461034157806388098e3a146103545780638e99076a1461036557600080fd5b806369130c8d1461030a578063704802751461031d5780637c0f6b351461033057600080fd5b806324d7806c116101665780633b4da69f116101405780633b4da69f146102be57806341dcea91146102d15780635daf08ca146102e457806368839d28146102f757600080fd5b806324d7806c1461027e5780632a79c611146102a157806331ae450b146102a957600080fd5b806311aee380116101a257806311aee3801461021957806314bfd6d01461022b5780631785f53c14610256578063206110db1461026957600080fd5b806303ffe330146101c957806310972e90146101f15780631130630c14610204575b600080fd5b6101dc6101d73660046118e4565b61044f565b60405190151581526020015b60405180910390f35b6101dc6101ff366004611910565b610659565b6102176102123660046119c1565b6106af565b005b600a545b6040519081526020016101e8565b61023e610239366004611910565b6106f3565b6040516001600160a01b0390911681526020016101e8565b610217610264366004611a41565b61071d565b61027161083f565b6040516101e89190611ab5565b6101dc61028c366004611a41565b600d6020526000908152604090205460ff1681565b60285461021d565b6102b1610918565b6040516101e89190611b17565b6102176102cc3660046118e4565b61097a565b603c5461023e906001600160a01b031681565b61023e6102f2366004611910565b610a13565b6101dc6103053660046119c1565b610a23565b610217610318366004611910565b610aa2565b61021761032b366004611a41565b610ada565b6102b1610ccf565b61021d60325481565b61021761034f3660046119c1565b610d2f565b6000546001600160a01b031661023e565b6101dc610373366004611a41565b610d67565b6102b1610386366004611b64565b610e4e565b6101dc610399366004611a41565b600b6020526000908152604090205460ff1681565b6102176103bc366004611a41565b61104b565b6102176103cf366004611910565b61109c565b6103dc6110d4565b6040516101e89190611c16565b6102176103f73660046119c1565b611162565b604080518082018252600080825260209182015281518083018352915482526041546001600160a01b03169082015260408051825181526020928301516001600160a01b031692810192909252016101e8565b6043546000906001600160a01b03166105815761046b83610d67565b8061057a57506043546001600160a01b0316158015906104fd5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190611c29565b801561057a5750604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c7906044015b602060405180830381865afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611c29565b9050610653565b6043546001600160a01b03161580159061060d5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c29565b1561061a57506000610653565b604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401610539565b92915050565b6000805b603d548110156106a65782603d828154811061067b5761067b611c4b565b9060005260206000200154036106945750600192915050565b8061069e81611c77565b91505061065d565b50600092915050565b336000908152600d602052604090205460ff166106e75760405162461bcd60e51b81526004016106de90611c90565b60405180910390fd5b6106f08161119a565b50565b600c818154811061070357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600d602052604090205460ff1661074c5760405162461bcd60e51b81526004016106de90611c90565b60005b600c548110156107e657816001600160a01b0316600c828154811061077657610776611c4b565b6000918252602090912001546001600160a01b0316036107d4576000600c82815481106107a5576107a5611c4b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107de81611c77565b91505061074f565b506001600160a01b0381166000818152600d6020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606014805480602002602001604051908101604052809291908181526020016000905b8282101561090f57838290600052602060002001805461088290611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90611cb7565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b505050505081526020019060010190610863565b50505050905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561097057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610952575b5050505050905090565b6000546001600160a01b031633146109c15760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6109cb828261044f565b610a055760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106de565b610a0f8282611215565b5050565b600a818154811061070357600080fd5b6014546000908103610a3757506000919050565b81516020808401919091206000818152601590925260409091205415610a605750600192915050565b806014600081548110610a7557610a75611c4b565b90600052602060002001604051610a8c9190611cf1565b6040518091039020036106a65750600192915050565b336000908152600d602052604090205460ff16610ad15760405162461bcd60e51b81526004016106de90611c90565b6106f081611348565b336000908152600d602052604090205460ff16610b095760405162461bcd60e51b81526004016106de90611c90565b6001600160a01b0381166000908152600b602052604090205460ff16158015610bfd5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190611d67565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190611d84565b155b15610c395760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106de565b6001600160a01b0381166000818152600d60209081526040808320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610834565b6060600a805480602002602001604051908101604052809291908181526020018280548015610970576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610952575050505050905090565b336000908152600d602052604090205460ff16610d5e5760405162461bcd60e51b81526004016106de90611c90565b6106f0816114d5565b604254604080549051634bcd303f60e11b815260048101919091526000916001600160a01b03169063979a607e90602401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190611d67565b6041546040516307358f4160e31b81526001600160a01b03918216600482015284821660248201529116906339ac7a0890604401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611c29565b336000908152600d602052604090205460609060ff16610e805760405162461bcd60e51b81526004016106de90611c90565b60005b825181101561104457600b6000848381518110610ea257610ea2611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ef457828181518110610edf57610edf611c4b565b60006020918202929092010152600101610e83565b600d6000848381518110610f0a57610f0a611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661103c57600c838281518110610f4957610f49611c4b565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091600d91869085908110610f9d57610f9d611c4b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec83828151811061100f5761100f611c4b565b602002602001015160405161103391906001600160a01b0391909116815260200190565b60405180910390a15b600101610e83565b5090919050565b336000908152600d602052604090205460ff1661107a5760405162461bcd60e51b81526004016106de90611c90565b604380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff166110cb5760405162461bcd60e51b81526004016106de90611c90565b6106f0816116d5565b601e80546110e190611cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90611cb7565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505081565b336000908152600d602052604090205460ff166111915760405162461bcd60e51b81526004016106de90611c90565b6106f08161175b565b60008151116111d95760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106de565b601e6111e58282611dec565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108349190611c16565b6000546001600160a01b0316331461125c5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6001600160a01b0382166000908152600b602052604090205460ff16156112b85760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106de565b6001600160a01b0382166000818152600b6020526040808220805460ff19166001908117909155600a8054918201815583527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190611d67565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114299190810190611eac565b5151116114695760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106de565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b6114de81610a23565b61151d5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106de565b80516020808301919091206000818152601590925260409091205460145461154790600190611f5c565b811461165857601480546000919061156190600190611f5c565b8154811061157157611571611c4b565b90600052602060002001805461158690611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290611cb7565b80156115ff5780601f106115d4576101008083540402835291602001916115ff565b820191906000526020600020905b8154815290600101906020018083116115e257829003601f168201915b50505050509050600081805190602001209050826015600083815260200190815260200160002081905550816014848154811061163e5761163e611c4b565b9060005260206000200190816116549190611dec565b5050505b601480548061166957611669611f6f565b6001900381819060005260206000200160006116859190611881565b905560008281526015602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad09906116c8908590611c16565b60405180910390a1505050565b6000811180156116e55750600b81105b6117265760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106de565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610834565b80516020820120601454600090156117c3576000828152601560205260409020541515806117ba575081601460008154811061179957611799611c4b565b906000526020600020016040516117b09190611cf1565b6040518091039020145b156117c3575060015b80156118065760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106de565b601480546000848152601560205260408120829055600182018355919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec016118518482611dec565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516116c89190611c16565b50805461188d90611cb7565b6000825580601f1061189d575050565b601f0160209004906000526020600020908101906106f091905b808211156118cb57600081556001016118b7565b5090565b6001600160a01b03811681146106f057600080fd5b600080604083850312156118f757600080fd5b8235611902816118cf565b946020939093013593505050565b60006020828403121561192257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196257611962611929565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199157611991611929565b604052919050565b600067ffffffffffffffff8211156119b3576119b3611929565b50601f01601f191660200190565b6000602082840312156119d357600080fd5b813567ffffffffffffffff8111156119ea57600080fd5b8201601f810184136119fb57600080fd5b8035611a0e611a0982611999565b611968565b818152856020838501011115611a2357600080fd5b81602084016020830137600091810160200191909152949350505050565b600060208284031215611a5357600080fd5b8135611a5e816118cf565b9392505050565b60005b83811015611a80578181015183820152602001611a68565b50506000910152565b60008151808452611aa1816020860160208601611a65565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b0a57603f19888603018452611af8858351611a89565b94509285019290850190600101611adc565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611b585783516001600160a01b031683529284019291840191600101611b33565b50909695505050505050565b60006020808385031215611b7757600080fd5b823567ffffffffffffffff80821115611b8f57600080fd5b818501915085601f830112611ba357600080fd5b813581811115611bb557611bb5611929565b8060051b9150611bc6848301611968565b8181529183018401918481019088841115611be057600080fd5b938501935b83851015611c0a5784359250611bfa836118cf565b8282529385019390850190611be5565b98975050505050505050565b602081526000611a5e6020830184611a89565b600060208284031215611c3b57600080fd5b81518015158114611a5e57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c8957611c89611c61565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c90821680611ccb57607f821691505b602082108103611ceb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808354611cff81611cb7565b60018281168015611d175760018114611d2c57611d5b565b60ff1984168752821515830287019450611d5b565b8760005260208060002060005b85811015611d525781548a820152908401908201611d39565b50505082870194505b50929695505050505050565b600060208284031215611d7957600080fd5b8151611a5e816118cf565b600060208284031215611d9657600080fd5b5051919050565b601f821115611de757600081815260208120601f850160051c81016020861015611dc45750805b601f850160051c820191505b81811015611de357828155600101611dd0565b5050505b505050565b815167ffffffffffffffff811115611e0657611e06611929565b611e1a81611e148454611cb7565b84611d9d565b602080601f831160018114611e4f5760008415611e375750858301515b600019600386901b1c1916600185901b178555611de3565b600085815260208120601f198616915b82811015611e7e57888601518255948401946001909101908401611e5f565b5085821015611e9c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808385031215611ebf57600080fd5b825167ffffffffffffffff80821115611ed757600080fd5b9084019060408287031215611eeb57600080fd5b611ef361193f565b825182811115611f0257600080fd5b83019150601f82018713611f1557600080fd5b8151611f23611a0982611999565b8181528886838601011115611f3757600080fd5b611f4682878301888701611a65565b8252509183015192820192909252949350505050565b8181038181111561065357610653611c61565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a58bd4de25921d046aa808afa80a61eae3b6dfe021e8731928b91bc18eb4bc2064736f6c63430008130033a2646970667358221220d94fe2c98a53fa7748448205e1a6690a882a05c24b11b8ba7253e368196c6ba864736f6c63430008130033", - "sourceMap": "132:715:32:-:0;;;;;;;;;;;;;;;;;;;", + "sourceMap": "132:715:28:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040523480156200001157600080fd5b50600436106200002e5760003560e01c80633270bdc21462000033575b600080fd5b6200004a62000044366004620000ef565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b6000808b8b8b8b8b8b8b8b8b8b6040516200008190620000c4565b620000969a99989796959493929190620001e2565b604051809103906000f080158015620000b3573d6000803e3d6000fd5b509c9b505050505050505050505050565b612919806200026783390190565b80356001600160a01b0381168114620000ea57600080fd5b919050565b6000806000806000806000806000806101208b8d0312156200011057600080fd5b6200011b8b620000d2565b99506200012b60208c01620000d2565b98506200013b60408c01620000d2565b975060608b013596506200015260808c01620000d2565b955060a08b0135945060c08b013567ffffffffffffffff808211156200017757600080fd5b818d0191508d601f8301126200018c57600080fd5b8135818111156200019c57600080fd5b8e6020828501011115620001af57600080fd5b60208301965080955050505060e08b01359150620001d16101008c01620000d2565b90509295989b9194979a5092959850565b6001600160a01b038b811682528a81166020830152898116604083015260608201899052878116608083015260a0820187905261012060c08301819052820185905260009061014090868883860137600084880183015260e084019590955292909316610100820152601f909301601f19169092019091019897505050505050505056fe60806040523480156200001157600080fd5b50604051620029193803806200291983398101604081905262000034916200063f565b6001600160a01b038516620000905760405162461bcd60e51b815260206004820152601360248201527f4d697373696e672044414f20416464726573730000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038716620000e85760405162461bcd60e51b815260206004820152601960248201527f4d697373696e672044414f205479706573206164647265737300000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526000906001600160a01b0389169063979a607e90602401602060405180830381865afa15801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000157919062000775565b6001600160a01b031603620001af5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d656d626572736869702074797065000000000000000000604482015260640162000087565b604051634bcd303f60e11b8152600481018790526001600160a01b0388169063979a607e90602401602060405180830381865afa158015620001f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021b919062000775565b6040516307358f4160e31b81526001600160a01b0387811660048301528b8116602483015291909116906339ac7a0890604401602060405180830381865afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029291906200079a565b620002e05760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640162000087565b6040805180820182528781526001600160a01b038781166020928301819052898455604180546001600160a01b031990811690921790558c82166000818152600d909452938320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180548316909317909255604280549091169189169190911790556200038a84620003d5565b600080546001600160a01b0319166001600160a01b038a16179055620003b08262000461565b620003bb83620004eb565b620003c6816200056c565b5050505050505050506200094e565b600081118015620003e65750600481105b620004255760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640162000087565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff70906020015b60405180910390a150565b600081118015620004725750600b81105b620004b55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640162000087565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb469060200162000456565b60008151116200052c5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640162000087565b601e6200053a82826200084d565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a9778160405162000456919062000919565b6001600160a01b038116620005c45760405162461bcd60e51b815260206004820152601660248201527f696e76616c696420706c7567696e526567697374727900000000000000000000604482015260640162000087565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620005fe57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006365781810151838201526020016200061c565b50506000910152565b60008060008060008060008060006101208a8c0312156200065f57600080fd5b6200066a8a620005e6565b98506200067a60208b01620005e6565b97506200068a60408b01620005e6565b965060608a01519550620006a160808b01620005e6565b60a08b015160c08c015191965094506001600160401b0380821115620006c657600080fd5b818c0191508c601f830112620006db57600080fd5b815181811115620006f057620006f062000603565b604051601f8201601f19908116603f011681019083821181831017156200071b576200071b62000603565b816040528281528f60208487010111156200073557600080fd5b6200074883602083016020880162000619565b809750505050505060e08a01519150620007666101008b01620005e6565b90509295985092959850929598565b6000602082840312156200078857600080fd5b6200079382620005e6565b9392505050565b600060208284031215620007ad57600080fd5b815180151581146200079357600080fd5b600181811c90821680620007d357607f821691505b602082108103620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084857600081815260208120601f850160051c81016020861015620008235750805b601f850160051c820191505b8181101562000844578281556001016200082f565b5050505b505050565b81516001600160401b0381111562000869576200086962000603565b62000881816200087a8454620007be565b84620007fa565b602080601f831160018114620008b95760008415620008a05750858301515b600019600386901b1c1916600185901b17855562000844565b600085815260208120601f198616915b82811015620008ea57888601518255948401946001909101908401620008c9565b5085821015620009095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200093a81604085016020870162000619565b601f01601f19169190910160400192915050565b611fbb806200095e6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806369130c8d116100f95780639c54df6411610097578063be9cd05211610071578063be9cd052146103c1578063cd29c71a146103d4578063d103449c146103e9578063db83814e146103fc57600080fd5b80639c54df6414610378578063a230c5241461038b578063b5a8a3a1146103ae57600080fd5b806380f55605116100d357806380f5560514610338578063810e8c041461034157806388098e3a146103545780638e99076a1461036557600080fd5b806369130c8d1461030a578063704802751461031d5780637c0f6b351461033057600080fd5b806324d7806c116101665780633b4da69f116101405780633b4da69f146102be57806341dcea91146102d15780635daf08ca146102e457806368839d28146102f757600080fd5b806324d7806c1461027e5780632a79c611146102a157806331ae450b146102a957600080fd5b806311aee380116101a257806311aee3801461021957806314bfd6d01461022b5780631785f53c14610256578063206110db1461026957600080fd5b806303ffe330146101c957806310972e90146101f15780631130630c14610204575b600080fd5b6101dc6101d73660046118e4565b61044f565b60405190151581526020015b60405180910390f35b6101dc6101ff366004611910565b610659565b6102176102123660046119c1565b6106af565b005b600a545b6040519081526020016101e8565b61023e610239366004611910565b6106f3565b6040516001600160a01b0390911681526020016101e8565b610217610264366004611a41565b61071d565b61027161083f565b6040516101e89190611ab5565b6101dc61028c366004611a41565b600d6020526000908152604090205460ff1681565b60285461021d565b6102b1610918565b6040516101e89190611b17565b6102176102cc3660046118e4565b61097a565b603c5461023e906001600160a01b031681565b61023e6102f2366004611910565b610a13565b6101dc6103053660046119c1565b610a23565b610217610318366004611910565b610aa2565b61021761032b366004611a41565b610ada565b6102b1610ccf565b61021d60325481565b61021761034f3660046119c1565b610d2f565b6000546001600160a01b031661023e565b6101dc610373366004611a41565b610d67565b6102b1610386366004611b64565b610e4e565b6101dc610399366004611a41565b600b6020526000908152604090205460ff1681565b6102176103bc366004611a41565b61104b565b6102176103cf366004611910565b61109c565b6103dc6110d4565b6040516101e89190611c16565b6102176103f73660046119c1565b611162565b604080518082018252600080825260209182015281518083018352915482526041546001600160a01b03169082015260408051825181526020928301516001600160a01b031692810192909252016101e8565b6043546000906001600160a01b03166105815761046b83610d67565b8061057a57506043546001600160a01b0316158015906104fd5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190611c29565b801561057a5750604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c7906044015b602060405180830381865afa158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611c29565b9050610653565b6043546001600160a01b03161580159061060d5750604360009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c29565b1561061a57506000610653565b604354604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401610539565b92915050565b6000805b603d548110156106a65782603d828154811061067b5761067b611c4b565b9060005260206000200154036106945750600192915050565b8061069e81611c77565b91505061065d565b50600092915050565b336000908152600d602052604090205460ff166106e75760405162461bcd60e51b81526004016106de90611c90565b60405180910390fd5b6106f08161119a565b50565b600c818154811061070357600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152600d602052604090205460ff1661074c5760405162461bcd60e51b81526004016106de90611c90565b60005b600c548110156107e657816001600160a01b0316600c828154811061077657610776611c4b565b6000918252602090912001546001600160a01b0316036107d4576000600c82815481106107a5576107a5611c4b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107de81611c77565b91505061074f565b506001600160a01b0381166000818152600d6020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606014805480602002602001604051908101604052809291908181526020016000905b8282101561090f57838290600052602060002001805461088290611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90611cb7565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b505050505081526020019060010190610863565b50505050905090565b6060600c80548060200260200160405190810160405280929190818152602001828054801561097057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610952575b5050505050905090565b6000546001600160a01b031633146109c15760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6109cb828261044f565b610a055760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106de565b610a0f8282611215565b5050565b600a818154811061070357600080fd5b6014546000908103610a3757506000919050565b81516020808401919091206000818152601590925260409091205415610a605750600192915050565b806014600081548110610a7557610a75611c4b565b90600052602060002001604051610a8c9190611cf1565b6040518091039020036106a65750600192915050565b336000908152600d602052604090205460ff16610ad15760405162461bcd60e51b81526004016106de90611c90565b6106f081611348565b336000908152600d602052604090205460ff16610b095760405162461bcd60e51b81526004016106de90611c90565b6001600160a01b0381166000908152600b602052604090205460ff16158015610bfd5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190611d67565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190611d84565b155b15610c395760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106de565b6001600160a01b0381166000818152600d60209081526040808320805460ff19166001908117909155600c805491820181559093527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610834565b6060600a805480602002602001604051908101604052809291908181526020018280548015610970576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610952575050505050905090565b336000908152600d602052604090205460ff16610d5e5760405162461bcd60e51b81526004016106de90611c90565b6106f0816114d5565b604254604080549051634bcd303f60e11b815260048101919091526000916001600160a01b03169063979a607e90602401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190611d67565b6041546040516307358f4160e31b81526001600160a01b03918216600482015284821660248201529116906339ac7a0890604401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611c29565b336000908152600d602052604090205460609060ff16610e805760405162461bcd60e51b81526004016106de90611c90565b60005b825181101561104457600b6000848381518110610ea257610ea2611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ef457828181518110610edf57610edf611c4b565b60006020918202929092010152600101610e83565b600d6000848381518110610f0a57610f0a611c4b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661103c57600c838281518110610f4957610f49611c4b565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091600d91869085908110610f9d57610f9d611c4b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec83828151811061100f5761100f611c4b565b602002602001015160405161103391906001600160a01b0391909116815260200190565b60405180910390a15b600101610e83565b5090919050565b336000908152600d602052604090205460ff1661107a5760405162461bcd60e51b81526004016106de90611c90565b604380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d602052604090205460ff166110cb5760405162461bcd60e51b81526004016106de90611c90565b6106f0816116d5565b601e80546110e190611cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461110d90611cb7565b801561115a5780601f1061112f5761010080835404028352916020019161115a565b820191906000526020600020905b81548152906001019060200180831161113d57829003601f168201915b505050505081565b336000908152600d602052604090205460ff166111915760405162461bcd60e51b81526004016106de90611c90565b6106f08161175b565b60008151116111d95760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106de565b601e6111e58282611dec565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108349190611c16565b6000546001600160a01b0316331461125c5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106de565b6001600160a01b0382166000908152600b602052604090205460ff16156112b85760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106de565b6001600160a01b0382166000818152600b6020526040808220805460ff19166001908117909155600a8054918201815583527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190611d67565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114299190810190611eac565b5151116114695760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106de565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b6114de81610a23565b61151d5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106de565b80516020808301919091206000818152601590925260409091205460145461154790600190611f5c565b811461165857601480546000919061156190600190611f5c565b8154811061157157611571611c4b565b90600052602060002001805461158690611cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290611cb7565b80156115ff5780601f106115d4576101008083540402835291602001916115ff565b820191906000526020600020905b8154815290600101906020018083116115e257829003601f168201915b50505050509050600081805190602001209050826015600083815260200190815260200160002081905550816014848154811061163e5761163e611c4b565b9060005260206000200190816116549190611dec565b5050505b601480548061166957611669611f6f565b6001900381819060005260206000200160006116859190611881565b905560008281526015602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad09906116c8908590611c16565b60405180910390a1505050565b6000811180156116e55750600b81105b6117265760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106de565b60288190556040518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610834565b80516020820120601454600090156117c3576000828152601560205260409020541515806117ba575081601460008154811061179957611799611c4b565b906000526020600020016040516117b09190611cf1565b6040518091039020145b156117c3575060015b80156118065760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106de565b601480546000848152601560205260408120829055600182018355919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec016118518482611dec565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516116c89190611c16565b50805461188d90611cb7565b6000825580601f1061189d575050565b601f0160209004906000526020600020908101906106f091905b808211156118cb57600081556001016118b7565b5090565b6001600160a01b03811681146106f057600080fd5b600080604083850312156118f757600080fd5b8235611902816118cf565b946020939093013593505050565b60006020828403121561192257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196257611962611929565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199157611991611929565b604052919050565b600067ffffffffffffffff8211156119b3576119b3611929565b50601f01601f191660200190565b6000602082840312156119d357600080fd5b813567ffffffffffffffff8111156119ea57600080fd5b8201601f810184136119fb57600080fd5b8035611a0e611a0982611999565b611968565b818152856020838501011115611a2357600080fd5b81602084016020830137600091810160200191909152949350505050565b600060208284031215611a5357600080fd5b8135611a5e816118cf565b9392505050565b60005b83811015611a80578181015183820152602001611a68565b50506000910152565b60008151808452611aa1816020860160208601611a65565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b0a57603f19888603018452611af8858351611a89565b94509285019290850190600101611adc565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611b585783516001600160a01b031683529284019291840191600101611b33565b50909695505050505050565b60006020808385031215611b7757600080fd5b823567ffffffffffffffff80821115611b8f57600080fd5b818501915085601f830112611ba357600080fd5b813581811115611bb557611bb5611929565b8060051b9150611bc6848301611968565b8181529183018401918481019088841115611be057600080fd5b938501935b83851015611c0a5784359250611bfa836118cf565b8282529385019390850190611be5565b98975050505050505050565b602081526000611a5e6020830184611a89565b600060208284031215611c3b57600080fd5b81518015158114611a5e57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c8957611c89611c61565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c90821680611ccb57607f821691505b602082108103611ceb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808354611cff81611cb7565b60018281168015611d175760018114611d2c57611d5b565b60ff1984168752821515830287019450611d5b565b8760005260208060002060005b85811015611d525781548a820152908401908201611d39565b50505082870194505b50929695505050505050565b600060208284031215611d7957600080fd5b8151611a5e816118cf565b600060208284031215611d9657600080fd5b5051919050565b601f821115611de757600081815260208120601f850160051c81016020861015611dc45750805b601f850160051c820191505b81811015611de357828155600101611dd0565b5050505b505050565b815167ffffffffffffffff811115611e0657611e06611929565b611e1a81611e148454611cb7565b84611d9d565b602080601f831160018114611e4f5760008415611e375750858301515b600019600386901b1c1916600185901b178555611de3565b600085815260208120601f198616915b82811015611e7e57888601518255948401946001909101908401611e5f565b5085821015611e9c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808385031215611ebf57600080fd5b825167ffffffffffffffff80821115611ed757600080fd5b9084019060408287031215611eeb57600080fd5b611ef361193f565b825182811115611f0257600080fd5b83019150601f82018713611f1557600080fd5b8151611f23611a0982611999565b8181528886838601011115611f3757600080fd5b611f4682878301888701611a65565b8252509183015192820192909252949350505050565b8181038181111561065357610653611c61565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a58bd4de25921d046aa808afa80a61eae3b6dfe021e8731928b91bc18eb4bc2064736f6c63430008130033a2646970667358221220d94fe2c98a53fa7748448205e1a6690a882a05c24b11b8ba7253e368196c6ba864736f6c63430008130033", - "sourceMap": "132:715:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;189:656;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1533:32:167;;;1515:51;;1503:2;1488:18;189:656:32;;;;;;;;498:27;537:26;595:8;617:9;640:12;666:7;687;708:6;728:8;;750:10;774:14;566:232;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;537:261:32;189:656;-1:-1:-1;;;;;;;;;;;;189:656:32:o;-1:-1:-1:-;;;;;;;;:::o;14:173:167:-;82:20;;-1:-1:-1;;;;;131:31:167;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:1172::-;335:6;343;351;359;367;375;383;391;399;407;460:3;448:9;439:7;435:23;431:33;428:53;;;477:1;474;467:12;428:53;500:29;519:9;500:29;:::i;:::-;490:39;;548:38;582:2;571:9;567:18;548:38;:::i;:::-;538:48;;605:38;639:2;628:9;624:18;605:38;:::i;:::-;595:48;;690:2;679:9;675:18;662:32;652:42;;713:39;747:3;736:9;732:19;713:39;:::i;:::-;703:49;;799:3;788:9;784:19;771:33;761:43;;855:3;844:9;840:19;827:33;879:18;920:2;912:6;909:14;906:34;;;936:1;933;926:12;906:34;974:6;963:9;959:22;949:32;;1019:7;1012:4;1008:2;1004:13;1000:27;990:55;;1041:1;1038;1031:12;990:55;1081:2;1068:16;1107:2;1099:6;1096:14;1093:34;;;1123:1;1120;1113:12;1093:34;1168:7;1163:2;1154:6;1150:2;1146:15;1142:24;1139:37;1136:57;;;1189:1;1186;1179:12;1136:57;1220:2;1216;1212:11;1202:21;;1242:6;1232:16;;;;;1295:3;1284:9;1280:19;1267:33;1257:43;;1319:39;1353:3;1342:9;1338:19;1319:39;:::i;:::-;1309:49;;192:1172;;;;;;;;;;;;;:::o;1577:1090::-;-1:-1:-1;;;;;2020:15:167;;;2002:34;;2072:15;;;2067:2;2052:18;;2045:43;2124:15;;;2119:2;2104:18;;2097:43;2171:2;2156:18;;2149:34;;;2220:15;;;2214:3;2199:19;;2192:44;1982:3;2252:19;;2245:35;;;1952:3;2311;2296:19;;2289:31;;;2336:18;;2329:34;;;1923:4;;2382:3;;2356:6;2427;2407:18;;;2394:48;2491:1;2462:22;;;2458:31;;2451:42;2595:3;2580:19;;2573:35;;;;2645:15;;;;2639:3;2624:19;;2617:44;2554:2;2533:15;;;-1:-1:-1;;2529:29:167;2514:45;;;2510:54;;;;1577:1090;-1:-1:-1;;;;;;;;1577:1090:167:o", + "sourceMap": "132:715:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;189:656;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1533:32:134;;;1515:51;;1503:2;1488:18;189:656:28;;;;;;;;498:27;537:26;595:8;617:9;640:12;666:7;687;708:6;728:8;;750:10;774:14;566:232;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;537:261:28;189:656;-1:-1:-1;;;;;;;;;;;;189:656:28:o;-1:-1:-1:-;;;;;;;;:::o;14:173:134:-;82:20;;-1:-1:-1;;;;;131:31:134;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:1172::-;335:6;343;351;359;367;375;383;391;399;407;460:3;448:9;439:7;435:23;431:33;428:53;;;477:1;474;467:12;428:53;500:29;519:9;500:29;:::i;:::-;490:39;;548:38;582:2;571:9;567:18;548:38;:::i;:::-;538:48;;605:38;639:2;628:9;624:18;605:38;:::i;:::-;595:48;;690:2;679:9;675:18;662:32;652:42;;713:39;747:3;736:9;732:19;713:39;:::i;:::-;703:49;;799:3;788:9;784:19;771:33;761:43;;855:3;844:9;840:19;827:33;879:18;920:2;912:6;909:14;906:34;;;936:1;933;926:12;906:34;974:6;963:9;959:22;949:32;;1019:7;1012:4;1008:2;1004:13;1000:27;990:55;;1041:1;1038;1031:12;990:55;1081:2;1068:16;1107:2;1099:6;1096:14;1093:34;;;1123:1;1120;1113:12;1093:34;1168:7;1163:2;1154:6;1150:2;1146:15;1142:24;1139:37;1136:57;;;1189:1;1186;1179:12;1136:57;1220:2;1216;1212:11;1202:21;;1242:6;1232:16;;;;;1295:3;1284:9;1280:19;1267:33;1257:43;;1319:39;1353:3;1342:9;1338:19;1319:39;:::i;:::-;1309:49;;192:1172;;;;;;;;;;;;;:::o;1577:1090::-;-1:-1:-1;;;;;2020:15:134;;;2002:34;;2072:15;;;2067:2;2052:18;;2045:43;2124:15;;;2119:2;2104:18;;2097:43;2171:2;2156:18;;2149:34;;;2220:15;;;2214:3;2199:19;;2192:44;1982:3;2252:19;;2245:35;;;1952:3;2311;2296:19;;2289:31;;;2336:18;;2329:34;;;1923:4;;2382:3;;2356:6;2427;2407:18;;;2394:48;2491:1;2462:22;;;2458:31;;2451:42;2595:3;2580:19;;2573:35;;;;2645:15;;;;2639:3;2624:19;;2617:44;2554:2;2533:15;;;-1:-1:-1;;2529:29:134;2514:45;;;2510:54;;;;1577:1090;-1:-1:-1;;;;;;;;1577:1090:134:o", "linkReferences": {} }, "methodIdentifiers": { @@ -467,124 +467,124 @@ }, "ast": { "absolutePath": "contracts/expander/DAOExpanderFactory.sol", - "id": 5171, + "id": 4560, "exportedSymbols": { "AutIDAddress": [ - 3009 + 2973 ], "DAOExpander": [ - 5116 + 4505 ], "DAOExpanderFactory": [ - 5170 + 4559 ], "IAutID": [ 1194 ], "IAutIDAddress": [ - 4476 + 3889 ], "IAutIDAddressSet": [ - 4628 + 4041 ], "IDAOExpander": [ - 5465 + 4592 ], "IDAOExpanderData": [ - 5482 + 4609 ], "IDAOExpanderFactory": [ - 5508 + 4635 ], "IDAOExpanderMembership": [ - 5523 + 4650 ], "IDAOTypes": [ - 5834 + 4679 ], "IERC165Upgradeable": [ - 59264 + 57255 ], "IERC721Upgradeable": [ - 58525 + 56516 ], "IMembershipChecker": [ - 5849 + 4694 ], "IModule": [ - 6466 + 4754 ], "IModuleRegistry": [ - 6730 + 5018 ], "INovaAdmin": [ - 4493 + 3906 ], "INovaAdminSet": [ - 4659 + 4072 ], "INovaCommitment": [ - 4531 + 3944 ], "INovaCommitmentSet": [ - 4683 + 4081 ], "INovaMarket": [ - 4540 + 3953 ], "INovaMembership": [ - 4566 + 3979 ], "INovaMembershipSet": [ - 4705 + 4094 ], "INovaMetadata": [ - 4575 + 3988 ], "INovaMetadataSet": [ - 4714 + 4103 ], "INovaModules": [ - 4600 + 4013 ], "INovaUrls": [ - 4619 + 4032 ], "INovaUrlsSet": [ - 4730 + 4119 ], "IPluginRegistry": [ - 11258 + 9574 ], "NovaCommitment": [ - 3153 + 3117 ], "NovaMarket": [ - 3198 + 3162 ], "NovaMembers": [ - 3500 + 3464 ], "NovaMetadata": [ - 3545 + 3509 ], "NovaModules": [ - 3674 + 3638 ], "NovaUrls": [ - 4467 + 3880 ], "OnboardingModule": [ - 6497 + 4785 ] }, "nodeType": "SourceUnit", - "src": "31:817:32", + "src": "31:817:28", "nodes": [ { - "id": 5118, + "id": 4507, "nodeType": "PragmaDirective", - "src": "31:23:32", + "src": "31:23:28", "nodes": [], "literals": [ "solidity", @@ -593,196 +593,196 @@ ] }, { - "id": 5119, + "id": 4508, "nodeType": "ImportDirective", - "src": "56:46:32", + "src": "56:46:28", "nodes": [], "absolutePath": "contracts/expander/interfaces/IDAOExpanderFactory.sol", "file": "./interfaces/IDAOExpanderFactory.sol", "nameLocation": "-1:-1:-1", - "scope": 5171, - "sourceUnit": 5509, + "scope": 4560, + "sourceUnit": 4636, "symbolAliases": [], "unitAlias": "" }, { - "id": 5120, + "id": 4509, "nodeType": "ImportDirective", - "src": "103:27:32", + "src": "103:27:28", "nodes": [], "absolutePath": "contracts/expander/DAOExpander.sol", "file": "./DAOExpander.sol", "nameLocation": "-1:-1:-1", - "scope": 5171, - "sourceUnit": 5117, + "scope": 4560, + "sourceUnit": 4506, "symbolAliases": [], "unitAlias": "" }, { - "id": 5170, + "id": 4559, "nodeType": "ContractDefinition", - "src": "132:715:32", + "src": "132:715:28", "nodes": [ { - "id": 5169, + "id": 4558, "nodeType": "FunctionDefinition", - "src": "189:656:32", + "src": "189:656:28", "nodes": [], "body": { - "id": 5168, + "id": 4557, "nodeType": "Block", - "src": "527:318:32", + "src": "527:318:28", "nodes": [], "statements": [ { "assignments": [ - 5148 + 4537 ], "declarations": [ { "constant": false, - "id": 5148, + "id": 4537, "mutability": "mutable", "name": "newDAOExpander", - "nameLocation": "549:14:32", + "nameLocation": "549:14:28", "nodeType": "VariableDeclaration", - "scope": 5168, - "src": "537:26:32", + "scope": 4557, + "src": "537:26:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" }, "typeName": { - "id": 5147, + "id": 4536, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5146, + "id": 4535, "name": "DAOExpander", "nameLocations": [ - "537:11:32" + "537:11:28" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5116, - "src": "537:11:32" + "referencedDeclaration": 4505, + "src": "537:11:28" }, - "referencedDeclaration": 5116, - "src": "537:11:32", + "referencedDeclaration": 4505, + "src": "537:11:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" } }, "visibility": "internal" } ], - "id": 5162, + "id": 4551, "initialValue": { "arguments": [ { - "id": 5152, + "id": 4541, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5124, - "src": "595:8:32", + "referencedDeclaration": 4513, + "src": "595:8:28", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5153, + "id": 4542, "name": "autIDAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5126, - "src": "617:9:32", + "referencedDeclaration": 4515, + "src": "617:9:28", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5154, + "id": 4543, "name": "daoTypesAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5128, - "src": "640:12:32", + "referencedDeclaration": 4517, + "src": "640:12:28", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5155, + "id": 4544, "name": "daoType", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5130, - "src": "666:7:32", + "referencedDeclaration": 4519, + "src": "666:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 5156, + "id": 4545, "name": "daoAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5132, - "src": "687:7:32", + "referencedDeclaration": 4521, + "src": "687:7:28", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 5157, + "id": 4546, "name": "market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5134, - "src": "708:6:32", + "referencedDeclaration": 4523, + "src": "708:6:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 5158, + "id": 4547, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5136, - "src": "728:8:32", + "referencedDeclaration": 4525, + "src": "728:8:28", "typeDescriptions": { "typeIdentifier": "t_string_calldata_ptr", "typeString": "string calldata" } }, { - "id": 5159, + "id": 4548, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5138, - "src": "750:10:32", + "referencedDeclaration": 4527, + "src": "750:10:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 5160, + "id": 4549, "name": "pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5140, - "src": "774:14:32", + "referencedDeclaration": 4529, + "src": "774:14:28", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -828,39 +828,39 @@ "typeString": "address" } ], - "id": 5151, + "id": 4540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "566:15:32", + "src": "566:15:28", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$_t_contract$_DAOExpander_$5116_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$_t_contract$_DAOExpander_$4505_$", "typeString": "function (address,address,address,uint256,address,uint256,string memory,uint256,address) returns (contract DAOExpander)" }, "typeName": { - "id": 5150, + "id": 4539, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5149, + "id": 4538, "name": "DAOExpander", "nameLocations": [ - "570:11:32" + "570:11:28" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5116, - "src": "570:11:32" + "referencedDeclaration": 4505, + "src": "570:11:28" }, - "referencedDeclaration": 5116, - "src": "570:11:32", + "referencedDeclaration": 4505, + "src": "570:11:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" } } }, - "id": 5161, + "id": 4550, "isConstant": false, "isLValue": false, "isPure": false, @@ -869,28 +869,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "566:232:32", + "src": "566:232:28", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" } }, "nodeType": "VariableDeclarationStatement", - "src": "537:261:32" + "src": "537:261:28" }, { "expression": { "arguments": [ { - "id": 5165, + "id": 4554, "name": "newDAOExpander", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5148, - "src": "823:14:32", + "referencedDeclaration": 4537, + "src": "823:14:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" } } @@ -898,30 +898,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DAOExpander_$5116", + "typeIdentifier": "t_contract$_DAOExpander_$4505", "typeString": "contract DAOExpander" } ], - "id": 5164, + "id": 4553, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "815:7:32", + "src": "815:7:28", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 5163, + "id": 4552, "name": "address", "nodeType": "ElementaryTypeName", - "src": "815:7:32", + "src": "815:7:28", "typeDescriptions": {} } }, - "id": 5166, + "id": 4555, "isConstant": false, "isLValue": false, "isPure": false, @@ -930,48 +930,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "815:23:32", + "src": "815:23:28", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 5145, - "id": 5167, + "functionReturnParameters": 4534, + "id": 4556, "nodeType": "Return", - "src": "808:30:32" + "src": "808:30:28" } ] }, "baseFunctions": [ - 5507 + 4634 ], "functionSelector": "3270bdc2", "implemented": true, "kind": "function", "modifiers": [], "name": "deployDAOExpander", - "nameLocation": "198:17:32", + "nameLocation": "198:17:28", "overrides": { - "id": 5142, + "id": 4531, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "480:8:32" + "src": "480:8:28" }, "parameters": { - "id": 5141, + "id": 4530, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5124, + "id": 4513, "mutability": "mutable", "name": "deployer", - "nameLocation": "233:8:32", + "nameLocation": "233:8:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "225:16:32", + "scope": 4558, + "src": "225:16:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -979,10 +979,10 @@ "typeString": "address" }, "typeName": { - "id": 5123, + "id": 4512, "name": "address", "nodeType": "ElementaryTypeName", - "src": "225:7:32", + "src": "225:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -993,13 +993,13 @@ }, { "constant": false, - "id": 5126, + "id": 4515, "mutability": "mutable", "name": "autIDAddr", - "nameLocation": "259:9:32", + "nameLocation": "259:9:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "251:17:32", + "scope": 4558, + "src": "251:17:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1007,10 +1007,10 @@ "typeString": "address" }, "typeName": { - "id": 5125, + "id": 4514, "name": "address", "nodeType": "ElementaryTypeName", - "src": "251:7:32", + "src": "251:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1021,13 +1021,13 @@ }, { "constant": false, - "id": 5128, + "id": 4517, "mutability": "mutable", "name": "daoTypesAddr", - "nameLocation": "286:12:32", + "nameLocation": "286:12:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "278:20:32", + "scope": 4558, + "src": "278:20:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1035,10 +1035,10 @@ "typeString": "address" }, "typeName": { - "id": 5127, + "id": 4516, "name": "address", "nodeType": "ElementaryTypeName", - "src": "278:7:32", + "src": "278:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1049,13 +1049,13 @@ }, { "constant": false, - "id": 5130, + "id": 4519, "mutability": "mutable", "name": "daoType", - "nameLocation": "316:7:32", + "nameLocation": "316:7:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "308:15:32", + "scope": 4558, + "src": "308:15:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1063,10 +1063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 5129, + "id": 4518, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "308:7:32", + "src": "308:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1076,13 +1076,13 @@ }, { "constant": false, - "id": 5132, + "id": 4521, "mutability": "mutable", "name": "daoAddr", - "nameLocation": "341:7:32", + "nameLocation": "341:7:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "333:15:32", + "scope": 4558, + "src": "333:15:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1090,10 +1090,10 @@ "typeString": "address" }, "typeName": { - "id": 5131, + "id": 4520, "name": "address", "nodeType": "ElementaryTypeName", - "src": "333:7:32", + "src": "333:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1104,13 +1104,13 @@ }, { "constant": false, - "id": 5134, + "id": 4523, "mutability": "mutable", "name": "market", - "nameLocation": "366:6:32", + "nameLocation": "366:6:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "358:14:32", + "scope": 4558, + "src": "358:14:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1118,10 +1118,10 @@ "typeString": "uint256" }, "typeName": { - "id": 5133, + "id": 4522, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "358:7:32", + "src": "358:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1131,13 +1131,13 @@ }, { "constant": false, - "id": 5136, + "id": 4525, "mutability": "mutable", "name": "metadata", - "nameLocation": "398:8:32", + "nameLocation": "398:8:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "382:24:32", + "scope": 4558, + "src": "382:24:28", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -1145,10 +1145,10 @@ "typeString": "string" }, "typeName": { - "id": 5135, + "id": 4524, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:32", + "src": "382:6:28", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1158,13 +1158,13 @@ }, { "constant": false, - "id": 5138, + "id": 4527, "mutability": "mutable", "name": "commitment", - "nameLocation": "424:10:32", + "nameLocation": "424:10:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "416:18:32", + "scope": 4558, + "src": "416:18:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1172,10 +1172,10 @@ "typeString": "uint256" }, "typeName": { - "id": 5137, + "id": 4526, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "416:7:32", + "src": "416:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1185,13 +1185,13 @@ }, { "constant": false, - "id": 5140, + "id": 4529, "mutability": "mutable", "name": "pluginRegistry", - "nameLocation": "452:14:32", + "nameLocation": "452:14:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "444:22:32", + "scope": 4558, + "src": "444:22:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1199,10 +1199,10 @@ "typeString": "address" }, "typeName": { - "id": 5139, + "id": 4528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "444:7:32", + "src": "444:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1212,21 +1212,21 @@ "visibility": "internal" } ], - "src": "215:257:32" + "src": "215:257:28" }, "returnParameters": { - "id": 5145, + "id": 4534, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5144, + "id": 4533, "mutability": "mutable", "name": "_daoExpanderAddress", - "nameLocation": "506:19:32", + "nameLocation": "506:19:28", "nodeType": "VariableDeclaration", - "scope": 5169, - "src": "498:27:32", + "scope": 4558, + "src": "498:27:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1234,10 +1234,10 @@ "typeString": "address" }, "typeName": { - "id": 5143, + "id": 4532, "name": "address", "nodeType": "ElementaryTypeName", - "src": "498:7:32", + "src": "498:7:28", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1247,9 +1247,9 @@ "visibility": "internal" } ], - "src": "497:29:32" + "src": "497:29:28" }, - "scope": 5170, + "scope": 4559, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -1259,37 +1259,37 @@ "baseContracts": [ { "baseName": { - "id": 5121, + "id": 4510, "name": "IDAOExpanderFactory", "nameLocations": [ - "163:19:32" + "163:19:28" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5508, - "src": "163:19:32" + "referencedDeclaration": 4635, + "src": "163:19:28" }, - "id": 5122, + "id": 4511, "nodeType": "InheritanceSpecifier", - "src": "163:19:32" + "src": "163:19:28" } ], "canonicalName": "DAOExpanderFactory", "contractDependencies": [ - 5116 + 4505 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 5170, - 5508 + 4559, + 4635 ], "name": "DAOExpanderFactory", - "nameLocation": "141:18:32", - "scope": 5171, + "nameLocation": "141:18:28", + "scope": 4560, "usedErrors": [] } ], "license": "MIT" }, - "id": 32 + "id": 28 } \ No newline at end of file diff --git a/out/DeployAll.s.sol/DeployScript.json b/out/DeployAll.s.sol/DeployScript.json index 5fac572d..e2b927d5 100644 --- a/out/DeployAll.s.sol/DeployScript.json +++ b/out/DeployAll.s.sol/DeployScript.json @@ -29,13 +29,13 @@ } ], "bytecode": { - "object": "0x600b805462ff00ff191662010001179055610100604052604260808181529062013d7960a039600d90620000349082620001c0565b5060405180608001604052806042815260200162013dfd60429139600e906200005e9082620001c0565b5060405180608001604052806042815260200162013e3f60429139600f90620000889082620001c0565b5060405180608001604052806042815260200162013dbb60429139601090620000b29082620001c0565b5060405180608001604052806042815260200162013e8160429139601190620000dc9082620001c0565b5060405180608001604052806042815260200162013d3760429139601290620001069082620001c0565b503480156200011457600080fd5b506200028c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014657607f821691505b6020821081036200016757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001bb57600081815260208120601f850160051c81016020861015620001965750805b601f850160051c820191505b81811015620001b757828155600101620001a2565b5050505b505050565b81516001600160401b03811115620001dc57620001dc6200011b565b620001f481620001ed845462000131565b846200016d565b602080601f8311600181146200022c5760008415620002135750858301515b600019600386901b1c1916600185901b178555620001b7565b600085815260208120601f198616915b828110156200025d578886015182559484019460019091019084016200023c565b50858210156200027c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b62013a9a806200029d6000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620002c2565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b46600c8190556201388103620000c657600b80546301000000600160b81b0319167669015912aa33720b842dcd6ac059ed623f28d9f70000001790555b600c54600503620000fe57600b80546301000000600160b81b03191676e041608922d06a4f26c0d4c27d8bcd01daf1f7920000001790555b600c54617a69036200015d5760405162000118906200176d565b604051809103906000f08015801562000135573d6000803e3d6000fd5b50600b60036101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b54630100000090046001600160a01b0316620001d15762000199604051806060016040528060308152602001620138346030913962001671565b620001d16040518060400160405280601581526020017414d959481cd8dc9a5c1d1ccbd1195c1b1bde505b1b605a1b81525062001671565b604051600080516020620138648339815191529063897e0a9790620001f9906020016200181b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000226919062001893565b600060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505060405163619d897f60e01b815260008051602062013864833981519152925063619d897f91506200028c90600401620018df565b600060405180830381600087803b158015620002a757600080fd5b505af1158015620002bc573d6000803e3d6000fd5b50505050565b60405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152600080516020620138648339815191529063ce817d4790829063c1978d1f90606401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062001a11565b6040518263ffffffff1660e01b81526004016200037191815260200190565b600060405180830381600087803b1580156200038c57600080fd5b505af1158015620003a1573d6000803e3d6000fd5b50505050620003c9604051806060016040528060338152602001620138c06033913962001671565b6200040a6040518060400160405280601a81526020017f4465706c6f79696e6720746f206e6574776f726b2049443a202000000000000081525046620016bb565b6200042e6040518060600160405280602e815260200162013970602e913962001671565b60405163348051d760e11b8152466004820152600080516020620138648339815191529063897e0a97908290636900a3ae90602401600060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ab919081019062001a41565b60405163348051d760e11b81524260048201526000805160206201386483398151915290636900a3ae90602401600060405180830381865afa158015620004f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000520919081019062001a41565b6040516020016200053392919062001afa565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000560919062001893565b600060405180830381600087803b1580156200057b57600080fd5b505af115801562000590573d6000803e3d6000fd5b505050506000604051620005a4906200177b565b604051809103906000f080158015620005c1573d6000803e3d6000fd5b5090506000604051620005d49062001789565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b5090506000604051620006049062001797565b604051809103906000f08015801562000621573d6000803e3d6000fd5b50905060006040516200063490620017a5565b604051809103906000f08015801562000651573d6000803e3d6000fd5b5090506000816040516200066590620017b3565b6001600160a01b039091168152602001604051809103906000f08015801562000692573d6000803e3d6000fd5b509050600081604051620006a690620017c1565b6001600160a01b039091168152602001604051809103906000f080158015620006d3573d6000803e3d6000fd5b5090506000600b60039054906101000a90046001600160a01b0316858884604051620006ff90620017cf565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000744573d6000803e3d6000fd5b50604051632b65311f60e11b81526001600160a01b0387166004820152909150600080516020620138648339815191529063619d897f9082906356ca623e90602401600060405180830381865afa158015620007a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007ce919081019062001a41565b604051632b65311f60e11b81526001600160a01b038b16600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200084c919081019062001a41565b6040516020016200085f92919062001b91565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b03871660048301529060008051602062013864833981519152906356ca623e90602401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001a41565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000940573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200096a919081019062001a41565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa158015620009be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009e8919081019062001a41565b604051602001620009fc9392919062001c63565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b038b1660048301529060008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000a5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a89919081019062001a41565b604051632b65311f60e11b81526001600160a01b038a16600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000add573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b07919081019062001a41565b60405160200162000b1a92919062001da6565b60408051601f198184030181529082905262000b3b93929160200162001e8b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000b68919062001893565b600060405180830381600087803b15801562000b8357600080fd5b505af115801562000b98573d6000803e3d6000fd5b505060405163a9810f4560e01b81526001600160a01b0389811660048301528593508316915063a9810f4590602401600060405180830381600087803b15801562000be257600080fd5b505af115801562000bf7573d6000803e3d6000fd5b505060408051600680825260e082019092526060935060009250906020820160c0803683375050604051631a104a5d60e11b8152919250506001600160a01b0384169063342094ba9062000c6f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600d90600090600190899060040162001f11565b6020604051808303816000875af115801562000c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb5919062001a11565b8160008151811062000ccb5762000ccb62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000d239073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600e90600090600190899060040162001f11565b6020604051808303816000875af115801562000d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d69919062001a11565b8160018151811062000d7f5762000d7f62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000dd79073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600f90600090600190899060040162001f11565b6020604051808303816000875af115801562000df7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1d919062001a11565b8160028151811062000e335762000e3362002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000e8b9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601090600090600190899060040162001f11565b6020604051808303816000875af115801562000eab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed1919062001a11565b8160038151811062000ee75762000ee762002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000f3f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601190600090600190899060040162001f11565b6020604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f85919062001a11565b8160048151811062000f9b5762000f9b62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000ff39073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601290600090600190899060040162001f11565b6020604051808303816000875af115801562001013573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001039919062001a11565b816005815181106200104f576200104f62002002565b60209081029190910101528051600080516020620138648339815191529063619d897f908290636900a3ae9085906000906200108f576200108f62002002565b60200260200101516040518263ffffffff1660e01b8152600401620010b691815260200190565b600060405180830381865afa158015620010d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010fe919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae8560018151811062001135576200113562002002565b60200260200101516040518263ffffffff1660e01b81526004016200115c91815260200190565b600060405180830381865afa1580156200117a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011a4919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae86600281518110620011db57620011db62002002565b60200260200101516040518263ffffffff1660e01b81526004016200120291815260200190565b600060405180830381865afa15801562001220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200124a919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae8760038151811062001281576200128162002002565b60200260200101516040518263ffffffff1660e01b8152600401620012a891815260200190565b600060405180830381865afa158015620012c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f0919081019062001a41565b60405160200162001305949392919062002018565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001332919062001893565b600060405180830381600087803b1580156200134d57600080fd5b505af115801562001362573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152731b403ff6eb37d25dccba0540637d65550f84acb360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620013bc57600080fd5b505af1158015620013d1573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273303b24d8bb5aed7e55558aef96b282a84ecfa82a60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d4360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200149a57600080fd5b505af1158015620014af573d6000803e3d6000fd5b50505050620014d86040518060600160405280603181526020016201399e603191398962001708565b620014fd604051806060016040528060368152602001620137c5603691398b62001708565b620015226040518060600160405280603b815260200162013a2a603b91398762001708565b620015476040518060600160405280603b8152602001620139ef603b91398662001708565b6200156c604051806060016040528060398152602001620137fb603991398562001708565b620015916040518060600160405280603c815260200162013884603c91398a62001708565b620015b6604051806060016040528060368152602001620138f3603691398862001708565b620015da604051806080016040528060478152602001620139296047913962001671565b620015fe6040518060600160405280602e815260200162013970602e913962001671565b600080516020620139cf83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200164c57600080fd5b505af115801562001661573d6000803e3d6000fd5b5050505050505050505050505050565b620016b881604051602401620016889190620020b2565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526200174c565b50565b620017048282604051602401620016d4929190620020ce565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b1790526200174c565b5050565b62001704828260405160240162001721929190620020f2565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6116bd806200211f83390190565b6123c280620037dc83390190565b6137d58062005b9e83390190565b613723806200937383390190565b610c72806200ca9683390190565b6110db806200d70883390190565b613043806200e7e383390190565b611f9f806201182683390190565b7f232323232323232323232323232323232323232323232323232323232323232380825260208201526511919191900560d11b604082015260460190565b61100560f11b808252600282015260006200183960048301620017dd565b92915050565b60005b838110156200185c57818101518382015260200162001842565b50506000910152565b600081518084526200187f8160208601602086016200183f565b601f01601f19169290920160200192915050565b604081526000620018c360408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b8281036020840152620018d7818562001865565b949350505050565b6040815260006200190f60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b82810360209384015260de81527f202323232323232323232323232323232323232323232323232323232323232392810192909252507f2323232323232323232323232323232323232323232323232323232323232323604082018190527f2323232323232323200a2023232323232323232323232323232323232323232360608301527f2323204445504c4f594d454e542041444452455353455320232323232323232360808301527f232323232323232323232323232323232323200a20232323232323232323232360a083015260c08201527f23232323232323232323232323232323232323232323232323232323200a000060e08201526101000190565b60006020828403121562001a2457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001a5457600080fd5b815167ffffffffffffffff8082111562001a6d57600080fd5b818401915084601f83011262001a8257600080fd5b81518181111562001a975762001a9762001a2b565b604051601f8201601f19908116603f0116810190838211818310171562001ac25762001ac262001a2b565b8160405282815287602084870101111562001adc57600080fd5b62001aef8360208301602088016200183f565b979650505050505050565b7f4465706c6f79656420746f206e6574776f726b2049443a20200000000000000081526000835162001b348160198501602088016200183f565b61100560f11b60199184019182018190526e020ba103a34b6b2b9ba30b6b81d101608d1b601b830152845162001b7281602a8501602089016200183f565b602a92019182015262001b88602c8201620017dd565b95945050505050565b7f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527001696969696969696969696969696901d1607d1b60208201526000835162001be58160318501602088016200183f565b61100560f11b60319184019182018190527f4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603383015275016969696969696969696969696969696969696901d160551b6053830152845162001c508160698501602089016200183f565b6069920191820152606b01949350505050565b7f4d6f64756c6552656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d815260007f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000000806020840152855162001cc481603a860160208a016200183f565b61100560f11b603a9185019182018190527f506c7567696e52656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603c830152605c82019290925285519162001d19836076840160208a016200183f565b828201925080607684015250507f4e6f766152656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d60788201527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000006098820152835162001d878160b08401602088016200183f565b0162001d9a60b0820161100560f11b9052565b60b20195945050505050565b7f4c6f63616c52657075746174696f6e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000060208201526000835162001e0681603b8501602088016200183f565b61100560f11b603b9184019182018190527f416c6c6f776c697374416464722d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603d8301527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000605d830152845162001e788160768501602089016200183f565b6076920191820152607801949350505050565b6000845162001e9f8184602089016200183f565b84519083019062001eb58183602089016200183f565b845191019062001eca8183602088016200183f565b0195945050505050565b600081518084526020808501945080840160005b8381101562001f065781518752958201959082019060010162001ee8565b509495945050505050565b60018060a01b03861681526000602060a0818401526000875481600182811c91508083168062001f4257607f831692505b858310810362001f6057634e487b7160e01b85526022600452602485fd5b60a0880183905260c0880181801562001f82576001811462001f995762001fc6565b60ff198616825284151560051b8201965062001fc6565b60008e81526020902060005b8681101562001fc05781548482015290850190890162001fa5565b83019750505b50505050505086604085015262001fe1606085018715159052565b838103608085015262001ff5818662001ed4565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6b028363ab3b4b724a239901d160a51b8152600085516200204181600c850160208a016200183f565b80830190506201016160ed1b80600c83015286516200206881600f850160208b016200183f565b600f9201918201819052855162002087816012850160208a016200183f565b60129201918201528351620020a48160158401602088016200183f565b016015019695505050505050565b602081526000620020c7602083018462001865565b9392505050565b604081526000620020e3604083018562001865565b90508260208301529392505050565b60408152600062002107604083018562001865565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b5060006040518060a00160405280606181526020016200165c60619139604051602001620000409190620000ee565b60408051601f1981840301815291905290506200005d8162000064565b5062000167565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290620000bc90859062000132565b60405180910390a25050565b60005b83811015620000e5578181015183820152602001620000cb565b50506000910152565b6e08cdee4eec2e4c8a4cae2eacae6e85608b1b8152600082516200011a81600f850160208701620000c8565b602960f81b600f939091019283015250601001919050565b602081526000825180602084015262000153816040850160208701620000c8565b601f01601f19169190910160400192915050565b6114e580620001776000396000f3fe6080604052600436106100a05760003560e01c8063ad9f99c711610064578063ad9f99c714610199578063c3f28abd146101b9578063c722f177146101ce578063d9210be5146101fe578063e024dc7f1461021e578063e2b62f2d1461023f57600080fd5b806301ffc9a7146100ac578063066a310c146100e157806321fe98df146101035780632d0335ab146101335780639c7b45921461017757600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610f3a565b61025f565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506100f6610296565b6040516100d89190610fbb565b34801561010f57600080fd5b506100cc61011e366004610fce565b60006020819052908152604090205460ff1681565b34801561013f57600080fd5b5061016961014e366004610fe7565b6001600160a01b031660009081526002602052604090205490565b6040519081526020016100d8565b34801561018357600080fd5b50610197610192366004611052565b6102b2565b005b3480156101a557600080fd5b506101976101b43660046110d6565b6103a9565b3480156101c557600080fd5b506100f66103ca565b3480156101da57600080fd5b506100cc6101e9366004610fce565b60016020526000908152604090205460ff1681565b34801561020a57600080fd5b50610197610219366004611052565b6103e6565b61023161022c3660046110d6565b6104e9565b6040516100d892919061117e565b34801561024b57600080fd5b506100f661025a3660046111a1565b610747565b60006001600160e01b031982166309788f9960e21b148061029057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6040518060a00160405280606181526020016113fd6061913981565b6000469050600060405180608001604052806052815260200161145e605291398051906020012086866040516102e99291906111f8565b604051809103902085856040516103019291906111f8565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c00160408051601f198184030181528282528051602080830191909120600081815260019283905293909320805460ff1916909117905592509081907f4bc68689cbe89a4a6333a3ab0a70093874da3e5bfb71e93102027f3f073687d890610398908590610fbb565b60405180910390a250505050505050565b6103b2876107e1565b6103c18787878787878761085e565b50505050505050565b60405180608001604052806052815260200161145e6052913981565b60005b8381101561049457600085858381811061040557610405611208565b909101356001600160f81b031916915050600560fb1b81148015906104385750602960f81b6001600160f81b0319821614155b6104815760405162461bcd60e51b81526020600482015260156024820152744657443a20696e76616c696420747970656e616d6560581b60448201526064015b60405180910390fd5b508061048c81611234565b9150506103e9565b50600084846040518060a00160405280606181526020016113fd6061913985856040516020016104c895949392919061124d565b60405160208183030381529060405290506104e281610a30565b5050505050565b600060606104fc8989898989898961085e565b61050589610a92565b60c089013515806105195750428960c00135115b61055c5760405162461bcd60e51b81526020600482015260146024820152731195d10e881c995c5d595cdd08195e1c1a5c995960621b6044820152606401610478565b600060408a01351561056d5750619c405b600061057c60a08c018c61129b565b61058960208e018e610fe7565b60405160200161059b939291906112e2565b60408051601f1981840301815291905290506105bb8260608d0135611308565b60405a6105c990603f61131b565b6105d39190611332565b10156106195760405162461bcd60e51b81526020600482015260156024820152744657443a20696e73756666696369656e742067617360581b6044820152606401610478565b61062960408c0160208d01610fe7565b6001600160a01b03168b606001358c604001358360405161064a9190611354565b600060405180830381858888f193505050503d8060008114610688576040519150601f19603f3d011682016040523d82523d6000602084013e61068d565b606091505b506040805180820190915260208082527f6578656375746520726573756c743a20737563636573733a202573207265743a9082015291955093506106d19085610b16565b6106da83610b5f565b60408b0135158015906106ed5750600047115b15610739576106ff60208c018c610fe7565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610737573d6000803e3d6000fd5b505b505097509795505050505050565b6060836107576020870187610fe7565b6001600160a01b03166107706040880160208901610fe7565b6001600160a01b03166040880135606089013560808a013561079560a08c018c61129b565b6040516107a39291906111f8565b6040519081900381206107c89796959493929160c08e0135908c908c90602001611370565b6040516020818303038152906040529050949350505050565b6080810135600260006107f76020850185610fe7565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b50565b60008681526001602052604090205460ff166108bc5760405162461bcd60e51b815260206004820152601d60248201527f4657443a20756e7265676973746572656420646f6d61696e207365702e0000006044820152606401610478565b60008581526020819052604090205460ff1661091a5760405162461bcd60e51b815260206004820152601a60248201527f4657443a20756e726567697374657265642074797065686173680000000000006044820152606401610478565b60008661092989888888610747565b805160209182012060405161095593920161190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090503215806109da57506109846020890189610fe7565b6001600160a01b03166109cf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610ba29050565b6001600160a01b0316145b610a265760405162461bcd60e51b815260206004820152601760248201527f4657443a207369676e6174757265206d69736d617463680000000000000000006044820152606401610478565b5050505050505050565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290610a86908590610fbb565b60405180910390a25050565b608081013560026000610aa86020850185610fe7565b6001600160a01b0316815260208101919091526040016000908120805491610acf83611234565b919050551461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b610b5b8282604051602401610b2c9291906113c2565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b179052610bc6565b5050565b61085b81604051602401610b739190610fbb565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b179052610bc6565b6000806000610bb18585610bcf565b91509150610bbe81610c3d565b509392505050565b61085b81610df3565b6000808251604103610c055760208301516040840151606085015160001a610bf987828585610e14565b94509450505050610c36565b8251604003610c2e5760208301516040840151610c23868383610f01565b935093505050610c36565b506000905060025b9250929050565b6000816004811115610c5157610c516113e6565b03610c595750565b6001816004811115610c6d57610c6d6113e6565b03610cba5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610478565b6002816004811115610cce57610cce6113e6565b03610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610478565b6003816004811115610d2f57610d2f6113e6565b03610d875760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610478565b6004816004811115610d9b57610d9b6113e6565b0361085b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610478565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e4b5750600090506003610ef8565b8460ff16601b14158015610e6357508460ff16601c14155b15610e745750600090506004610ef8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ec8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ef157600060019250925050610ef8565b9150600090505b94509492505050565b6000806001600160ff1b03831681610f1e60ff86901c601b611308565b9050610f2c87828885610e14565b935093505050935093915050565b600060208284031215610f4c57600080fd5b81356001600160e01b031981168114610f6457600080fd5b9392505050565b60005b83811015610f86578181015183820152602001610f6e565b50506000910152565b60008151808452610fa7816020860160208601610f6b565b601f01601f19169290920160200192915050565b602081526000610f646020830184610f8f565b600060208284031215610fe057600080fd5b5035919050565b600060208284031215610ff957600080fd5b81356001600160a01b0381168114610f6457600080fd5b60008083601f84011261102257600080fd5b50813567ffffffffffffffff81111561103a57600080fd5b602083019150836020828501011115610c3657600080fd5b6000806000806040858703121561106857600080fd5b843567ffffffffffffffff8082111561108057600080fd5b61108c88838901611010565b909650945060208701359150808211156110a557600080fd5b506110b287828801611010565b95989497509550505050565b600060e082840312156110d057600080fd5b50919050565b600080600080600080600060a0888a0312156110f157600080fd5b873567ffffffffffffffff8082111561110957600080fd5b6111158b838c016110be565b985060208a0135975060408a0135965060608a013591508082111561113957600080fd5b6111458b838c01611010565b909650945060808a013591508082111561115e57600080fd5b5061116b8a828b01611010565b989b979a50959850939692959293505050565b82151581526040602082015260006111996040830184610f8f565b949350505050565b600080600080606085870312156111b757600080fd5b843567ffffffffffffffff808211156111cf57600080fd5b6111db888389016110be565b95506020870135945060408701359150808211156110a557600080fd5b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112465761124661121e565b5060010190565b848682376000858201600560fb1b81528551611270816001840160208a01610f6b565b600b60fa1b600192909101918201528385600283013760009301600201928352509095945050505050565b6000808335601e198436030181126112b257600080fd5b83018035915067ffffffffffffffff8211156112cd57600080fd5b602001915036819003821315610c3657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b808201808211156102905761029061121e565b80820281158282048414176102905761029061121e565b60008261134f57634e487b7160e01b600052601260045260246000fd5b500490565b60008251611366818460208701610f6b565b9190910192915050565b8a81528960208201528860408201528760608201528660808201528560a08201528460c08201528360e082015260006101008385828501376000929093019092019081529a9950505050505050505050565b6040815260006113d56040830185610f8f565b905082151560208301529392505050565b634e487b7160e01b600052602160045260246000fdfe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a264697066735822122018c0fdb0974ade9877b4dba5170bce9fab49a47c4c6c5671e1565f4c5c9a01da64736f6c63430008130033616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300334e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204e6f76615265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204552524f523a204f6e6c79204d756d62616920616e6420476f65726c6920546573746e65747320537570706f727465640000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4c6f63616c52657075746174696f6e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d416c6c6f776c697374202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020205f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d506c7567696e5265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204d6f64756c655265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20a2646970667358221220e6714514a11472b4495c3e49974849efd68cade1098d30730b27fffeb776c75264736f6c63430008130033697066733a2f2f6261666b726569646c7278723537783766337066656e33356b7a6f7271786e6b66617475633562726f6667707a7474793371693565697336663661697066733a2f2f6261666b72656967336777686d7261656c6a756e656b3672773376796e73627861706d77646d747a616f7636757763737134717a3674326b6d6e79697066733a2f2f6261666b726569676e3336327578626678666d637a71643733616363797176666c6c6d66357034376c787975626d6478796c68696e357864617a69697066733a2f2f6261666b72656963367335326561766d737433773776656273647a6c373661353577626d336173713671756a75626a683678683333323375376634697066733a2f2f6261666b7265696534356e747778367472686c34617a6169786a367374363472636768726e736366326d6e6c6168696863747269366f7370677465697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b766a6a617561786b756d64337872656a707671627437767a64656b7734767a67767179", - "sourceMap": "3126:44:56:-:0;;;-1:-1:-1;;800:28:54;;;;;3126:44:56;750:8471:109;899:95;;750:8471;899:95;;;750:8471;899:95;;;;;;;;;:::i;:::-;;1000:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1094:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1189:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1280:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1376:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;750:8471;;;;;;;;;;;;14:127:121;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:121;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:121;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:121;;;2580:26;2531:89;-1:-1:-1;;1335:1:121;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:121;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:121;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:121;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:121:o;:::-;750:8471:109;;;;;;", + "object": "0x600b805462ff00ff19166201000117905561010060405260426080818152906201418560a039600d90620000349082620001c0565b506040518060800160405280604281526020016201420960429139600e906200005e9082620001c0565b506040518060800160405280604281526020016201424b60429139600f90620000889082620001c0565b50604051806080016040528060428152602001620141c760429139601090620000b29082620001c0565b506040518060800160405280604281526020016201428d60429139601190620000dc9082620001c0565b506040518060800160405280604281526020016201414360429139601290620001069082620001c0565b503480156200011457600080fd5b506200028c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014657607f821691505b6020821081036200016757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001bb57600081815260208120601f850160051c81016020861015620001965750805b601f850160051c820191505b81811015620001b757828155600101620001a2565b5050505b505050565b81516001600160401b03811115620001dc57620001dc6200011b565b620001f481620001ed845462000131565b846200016d565b602080601f8311600181146200022c5760008415620002135750858301515b600019600386901b1c1916600185901b178555620001b7565b600085815260208120601f198616915b828110156200025d578886015182559484019460019091019084016200023c565b50858210156200027c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b62013ea6806200029d6000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620002c2565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b46600c8190556201388103620000c657600b80546301000000600160b81b0319167669015912aa33720b842dcd6ac059ed623f28d9f70000001790555b600c54600503620000fe57600b80546301000000600160b81b03191676e041608922d06a4f26c0d4c27d8bcd01daf1f7920000001790555b600c54617a69036200015d57604051620001189062001998565b604051809103906000f08015801562000135573d6000803e3d6000fd5b50600b60036101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b54630100000090046001600160a01b0316620001d1576200019960405180606001604052806030815260200162013c40603091396200189c565b620001d16040518060400160405280601581526020017414d959481cd8dc9a5c1d1ccbd1195c1b1bde505b1b605a1b8152506200189c565b60405160008051602062013c708339815191529063897e0a9790620001f99060200162001a46565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000226919062001abe565b600060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505060405163619d897f60e01b815260008051602062013c70833981519152925063619d897f91506200028c9060040162001b0a565b600060405180830381600087803b158015620002a757600080fd5b505af1158015620002bc573d6000803e3d6000fd5b50505050565b60405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b604482015260008051602062013c708339815191529063ce817d4790829063c1978d1f90606401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062001c3c565b6040518263ffffffff1660e01b81526004016200037191815260200190565b600060405180830381600087803b1580156200038c57600080fd5b505af1158015620003a1573d6000803e3d6000fd5b50505050620003c960405180606001604052806033815260200162013ccc603391396200189c565b6200040a6040518060400160405280601a81526020017f4465706c6f79696e6720746f206e6574776f726b2049443a202000000000000081525046620018e6565b6200042e6040518060600160405280602e815260200162013d7c602e91396200189c565b60405163348051d760e11b815246600482015260008051602062013c708339815191529063897e0a97908290636900a3ae90602401600060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ab919081019062001c6c565b60405163348051d760e11b815242600482015260008051602062013c7083398151915290636900a3ae90602401600060405180830381865afa158015620004f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000520919081019062001c6c565b6040516020016200053392919062001d25565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000560919062001abe565b600060405180830381600087803b1580156200057b57600080fd5b505af115801562000590573d6000803e3d6000fd5b505050506000604051620005a490620019a6565b604051809103906000f080158015620005c1573d6000803e3d6000fd5b5090506000604051620005d490620019b4565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50905060006040516200060490620019c2565b604051809103906000f08015801562000621573d6000803e3d6000fd5b50905060006040516200063490620019d0565b604051809103906000f08015801562000651573d6000803e3d6000fd5b5090506000816040516200066590620019de565b6001600160a01b039091168152602001604051809103906000f08015801562000692573d6000803e3d6000fd5b509050600081604051620006a690620019ec565b6001600160a01b039091168152602001604051809103906000f080158015620006d3573d6000803e3d6000fd5b5090506000600b60039054906101000a90046001600160a01b0316858884604051620006ff90620019fa565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000744573d6000803e3d6000fd5b50604051632b65311f60e11b81526001600160a01b038716600482015290915060008051602062013c708339815191529063619d897f9082906356ca623e90602401600060405180830381865afa158015620007a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007ce919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038b16600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200084c919081019062001c6c565b6040516020016200085f92919062001dbc565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b03871660048301529060008051602062013c70833981519152906356ca623e90602401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000940573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200096a919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa158015620009be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009e8919081019062001c6c565b604051602001620009fc9392919062001e8e565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b038b1660048301529060008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000a5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a89919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038a16600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000add573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b07919081019062001c6c565b60405160200162000b1a92919062001fd1565b60408051601f198184030181529082905262000b3b939291602001620020b6565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000b68919062001abe565b600060405180830381600087803b15801562000b8357600080fd5b505af115801562000b98573d6000803e3d6000fd5b505060405163a9810f4560e01b81526001600160a01b0389811660048301528593508316915063a9810f4590602401600060405180830381600087803b15801562000be257600080fd5b505af115801562000bf7573d6000803e3d6000fd5b505060408051600680825260e082019092526060935060009250906020820160c0803683375050604051631a104a5d60e11b8152919250506001600160a01b0384169063342094ba9062000c6f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600d9060009060019089906004016200213c565b6020604051808303816000875af115801562000c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb5919062001c3c565b8160008151811062000ccb5762000ccb6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000d239073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600e9060009060019089906004016200213c565b6020604051808303816000875af115801562000d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d69919062001c3c565b8160018151811062000d7f5762000d7f6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000dd79073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600f9060009060019089906004016200213c565b6020604051808303816000875af115801562000df7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1d919062001c3c565b8160028151811062000e335762000e336200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000e8b9073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060109060009060019089906004016200213c565b6020604051808303816000875af115801562000eab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed1919062001c3c565b8160038151811062000ee75762000ee76200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000f3f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060119060009060019089906004016200213c565b6020604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f85919062001c3c565b8160048151811062000f9b5762000f9b6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000ff39073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060129060009060019089906004016200213c565b6020604051808303816000875af115801562001013573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001039919062001c3c565b816005815181106200104f576200104f6200222d565b6020908102919091010152805160008051602062013c708339815191529063619d897f908290636900a3ae9085906000906200108f576200108f6200222d565b60200260200101516040518263ffffffff1660e01b8152600401620010b691815260200190565b600060405180830381865afa158015620010d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010fe919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae856001815181106200113557620011356200222d565b60200260200101516040518263ffffffff1660e01b81526004016200115c91815260200190565b600060405180830381865afa1580156200117a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011a4919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae86600281518110620011db57620011db6200222d565b60200260200101516040518263ffffffff1660e01b81526004016200120291815260200190565b600060405180830381865afa15801562001220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200124a919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae876003815181106200128157620012816200222d565b60200260200101516040518263ffffffff1660e01b8152600401620012a891815260200190565b600060405180830381865afa158015620012c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f0919081019062001c6c565b60405160200162001305949392919062002243565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001332919062001abe565b600060405180830381600087803b1580156200134d57600080fd5b505af115801562001362573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152731b403ff6eb37d25dccba0540637d65550f84acb360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620013bc57600080fd5b505af1158015620013d1573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273303b24d8bb5aed7e55558aef96b282a84ecfa82a60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d4360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200149a57600080fd5b505af1158015620014af573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273cd3942171c362448cbd4faea6b2b71c8cce40bf360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200150957600080fd5b505af11580156200151e573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527391dd610e5cbe132a833f42c2df0b2eafa965da4060048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200157857600080fd5b505af11580156200158d573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152737660aa261d27a2a32d4e7e605c1bc2ba515e5f8160048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620015e757600080fd5b505af1158015620015fc573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527355954c2c092f6e973b55c5d2af28950b3b6d133860048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200165657600080fd5b505af11580156200166b573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527306a0cc2bf3f4b1b7f725ccab1d7a51547c48b8fc60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b505050506200170360405180606001604052806031815260200162013daa603191398962001933565b6200172860405180606001604052806036815260200162013bd1603691398b62001933565b6200174d6040518060600160405280603b815260200162013e36603b91398762001933565b620017726040518060600160405280603b815260200162013dfb603b91398662001933565b6200179760405180606001604052806039815260200162013c07603991398562001933565b620017bc6040518060600160405280603c815260200162013c90603c91398a62001933565b620017e160405180606001604052806036815260200162013cff603691398862001933565b6200180560405180608001604052806047815260200162013d35604791396200189c565b620018296040518060600160405280602e815260200162013d7c602e91396200189c565b60008051602062013ddb83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200187757600080fd5b505af11580156200188c573d6000803e3d6000fd5b5050505050505050505050505050565b620018e381604051602401620018b39190620022dd565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001977565b50565b6200192f8282604051602401620018ff929190620022f9565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262001977565b5050565b6200192f82826040516024016200194c9291906200231d565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6116bd806200234a83390190565b6125a38062003a0783390190565b6137d58062005faa83390190565b613723806200977f83390190565b610c72806200cea283390190565b6110db806200db1483390190565b613043806200ebef83390190565b611f9f8062011c3283390190565b7f232323232323232323232323232323232323232323232323232323232323232380825260208201526511919191900560d11b604082015260460190565b61100560f11b8082526002820152600062001a646004830162001a08565b92915050565b60005b8381101562001a8757818101518382015260200162001a6d565b50506000910152565b6000815180845262001aaa81602086016020860162001a6a565b601f01601f19169290920160200192915050565b60408152600062001aee60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b828103602084015262001b02818562001a90565b949350505050565b60408152600062001b3a60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b82810360209384015260de81527f202323232323232323232323232323232323232323232323232323232323232392810192909252507f2323232323232323232323232323232323232323232323232323232323232323604082018190527f2323232323232323200a2023232323232323232323232323232323232323232360608301527f2323204445504c4f594d454e542041444452455353455320232323232323232360808301527f232323232323232323232323232323232323200a20232323232323232323232360a083015260c08201527f23232323232323232323232323232323232323232323232323232323200a000060e08201526101000190565b60006020828403121562001c4f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001c7f57600080fd5b815167ffffffffffffffff8082111562001c9857600080fd5b818401915084601f83011262001cad57600080fd5b81518181111562001cc25762001cc262001c56565b604051601f8201601f19908116603f0116810190838211818310171562001ced5762001ced62001c56565b8160405282815287602084870101111562001d0757600080fd5b62001d1a83602083016020880162001a6a565b979650505050505050565b7f4465706c6f79656420746f206e6574776f726b2049443a20200000000000000081526000835162001d5f81601985016020880162001a6a565b61100560f11b60199184019182018190526e020ba103a34b6b2b9ba30b6b81d101608d1b601b830152845162001d9d81602a85016020890162001a6a565b602a92019182015262001db3602c820162001a08565b95945050505050565b7f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527001696969696969696969696969696901d1607d1b60208201526000835162001e1081603185016020880162001a6a565b61100560f11b60319184019182018190527f4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603383015275016969696969696969696969696969696969696901d160551b6053830152845162001e7b81606985016020890162001a6a565b6069920191820152606b01949350505050565b7f4d6f64756c6552656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d815260007f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000000806020840152855162001eef81603a860160208a0162001a6a565b61100560f11b603a9185019182018190527f506c7567696e52656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603c830152605c82019290925285519162001f44836076840160208a0162001a6a565b828201925080607684015250507f4e6f766152656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d60788201527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000006098820152835162001fb28160b084016020880162001a6a565b0162001fc560b0820161100560f11b9052565b60b20195945050505050565b7f4c6f63616c52657075746174696f6e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000006020820152600083516200203181603b85016020880162001a6a565b61100560f11b603b9184019182018190527f416c6c6f776c697374416464722d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603d8301527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000605d8301528451620020a381607685016020890162001a6a565b6076920191820152607801949350505050565b60008451620020ca81846020890162001a6a565b845190830190620020e081836020890162001a6a565b8451910190620020f581836020880162001a6a565b0195945050505050565b600081518084526020808501945080840160005b83811015620021315781518752958201959082019060010162002113565b509495945050505050565b60018060a01b03861681526000602060a0818401526000875481600182811c9150808316806200216d57607f831692505b85831081036200218b57634e487b7160e01b85526022600452602485fd5b60a0880183905260c08801818015620021ad5760018114620021c457620021f1565b60ff198616825284151560051b82019650620021f1565b60008e81526020902060005b86811015620021eb57815484820152908501908901620021d0565b83019750505b5050505050508660408501526200220c606085018715159052565b8381036080850152620022208186620020ff565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6b028363ab3b4b724a239901d160a51b8152600085516200226c81600c850160208a0162001a6a565b80830190506201016160ed1b80600c83015286516200229381600f850160208b0162001a6a565b600f92019182018190528551620022b2816012850160208a0162001a6a565b60129201918201528351620022cf81601584016020880162001a6a565b016015019695505050505050565b602081526000620022f2602083018462001a90565b9392505050565b6040815260006200230e604083018562001a90565b90508260208301529392505050565b60408152600062002332604083018562001a90565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b5060006040518060a00160405280606181526020016200165c60619139604051602001620000409190620000ee565b60408051601f1981840301815291905290506200005d8162000064565b5062000167565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290620000bc90859062000132565b60405180910390a25050565b60005b83811015620000e5578181015183820152602001620000cb565b50506000910152565b6e08cdee4eec2e4c8a4cae2eacae6e85608b1b8152600082516200011a81600f850160208701620000c8565b602960f81b600f939091019283015250601001919050565b602081526000825180602084015262000153816040850160208701620000c8565b601f01601f19169190910160400192915050565b6114e580620001776000396000f3fe6080604052600436106100a05760003560e01c8063ad9f99c711610064578063ad9f99c714610199578063c3f28abd146101b9578063c722f177146101ce578063d9210be5146101fe578063e024dc7f1461021e578063e2b62f2d1461023f57600080fd5b806301ffc9a7146100ac578063066a310c146100e157806321fe98df146101035780632d0335ab146101335780639c7b45921461017757600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610f3a565b61025f565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506100f6610296565b6040516100d89190610fbb565b34801561010f57600080fd5b506100cc61011e366004610fce565b60006020819052908152604090205460ff1681565b34801561013f57600080fd5b5061016961014e366004610fe7565b6001600160a01b031660009081526002602052604090205490565b6040519081526020016100d8565b34801561018357600080fd5b50610197610192366004611052565b6102b2565b005b3480156101a557600080fd5b506101976101b43660046110d6565b6103a9565b3480156101c557600080fd5b506100f66103ca565b3480156101da57600080fd5b506100cc6101e9366004610fce565b60016020526000908152604090205460ff1681565b34801561020a57600080fd5b50610197610219366004611052565b6103e6565b61023161022c3660046110d6565b6104e9565b6040516100d892919061117e565b34801561024b57600080fd5b506100f661025a3660046111a1565b610747565b60006001600160e01b031982166309788f9960e21b148061029057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6040518060a00160405280606181526020016113fd6061913981565b6000469050600060405180608001604052806052815260200161145e605291398051906020012086866040516102e99291906111f8565b604051809103902085856040516103019291906111f8565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c00160408051601f198184030181528282528051602080830191909120600081815260019283905293909320805460ff1916909117905592509081907f4bc68689cbe89a4a6333a3ab0a70093874da3e5bfb71e93102027f3f073687d890610398908590610fbb565b60405180910390a250505050505050565b6103b2876107e1565b6103c18787878787878761085e565b50505050505050565b60405180608001604052806052815260200161145e6052913981565b60005b8381101561049457600085858381811061040557610405611208565b909101356001600160f81b031916915050600560fb1b81148015906104385750602960f81b6001600160f81b0319821614155b6104815760405162461bcd60e51b81526020600482015260156024820152744657443a20696e76616c696420747970656e616d6560581b60448201526064015b60405180910390fd5b508061048c81611234565b9150506103e9565b50600084846040518060a00160405280606181526020016113fd6061913985856040516020016104c895949392919061124d565b60405160208183030381529060405290506104e281610a30565b5050505050565b600060606104fc8989898989898961085e565b61050589610a92565b60c089013515806105195750428960c00135115b61055c5760405162461bcd60e51b81526020600482015260146024820152731195d10e881c995c5d595cdd08195e1c1a5c995960621b6044820152606401610478565b600060408a01351561056d5750619c405b600061057c60a08c018c61129b565b61058960208e018e610fe7565b60405160200161059b939291906112e2565b60408051601f1981840301815291905290506105bb8260608d0135611308565b60405a6105c990603f61131b565b6105d39190611332565b10156106195760405162461bcd60e51b81526020600482015260156024820152744657443a20696e73756666696369656e742067617360581b6044820152606401610478565b61062960408c0160208d01610fe7565b6001600160a01b03168b606001358c604001358360405161064a9190611354565b600060405180830381858888f193505050503d8060008114610688576040519150601f19603f3d011682016040523d82523d6000602084013e61068d565b606091505b506040805180820190915260208082527f6578656375746520726573756c743a20737563636573733a202573207265743a9082015291955093506106d19085610b16565b6106da83610b5f565b60408b0135158015906106ed5750600047115b15610739576106ff60208c018c610fe7565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610737573d6000803e3d6000fd5b505b505097509795505050505050565b6060836107576020870187610fe7565b6001600160a01b03166107706040880160208901610fe7565b6001600160a01b03166040880135606089013560808a013561079560a08c018c61129b565b6040516107a39291906111f8565b6040519081900381206107c89796959493929160c08e0135908c908c90602001611370565b6040516020818303038152906040529050949350505050565b6080810135600260006107f76020850185610fe7565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b50565b60008681526001602052604090205460ff166108bc5760405162461bcd60e51b815260206004820152601d60248201527f4657443a20756e7265676973746572656420646f6d61696e207365702e0000006044820152606401610478565b60008581526020819052604090205460ff1661091a5760405162461bcd60e51b815260206004820152601a60248201527f4657443a20756e726567697374657265642074797065686173680000000000006044820152606401610478565b60008661092989888888610747565b805160209182012060405161095593920161190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090503215806109da57506109846020890189610fe7565b6001600160a01b03166109cf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610ba29050565b6001600160a01b0316145b610a265760405162461bcd60e51b815260206004820152601760248201527f4657443a207369676e6174757265206d69736d617463680000000000000000006044820152606401610478565b5050505050505050565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290610a86908590610fbb565b60405180910390a25050565b608081013560026000610aa86020850185610fe7565b6001600160a01b0316815260208101919091526040016000908120805491610acf83611234565b919050551461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b610b5b8282604051602401610b2c9291906113c2565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b179052610bc6565b5050565b61085b81604051602401610b739190610fbb565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b179052610bc6565b6000806000610bb18585610bcf565b91509150610bbe81610c3d565b509392505050565b61085b81610df3565b6000808251604103610c055760208301516040840151606085015160001a610bf987828585610e14565b94509450505050610c36565b8251604003610c2e5760208301516040840151610c23868383610f01565b935093505050610c36565b506000905060025b9250929050565b6000816004811115610c5157610c516113e6565b03610c595750565b6001816004811115610c6d57610c6d6113e6565b03610cba5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610478565b6002816004811115610cce57610cce6113e6565b03610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610478565b6003816004811115610d2f57610d2f6113e6565b03610d875760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610478565b6004816004811115610d9b57610d9b6113e6565b0361085b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610478565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e4b5750600090506003610ef8565b8460ff16601b14158015610e6357508460ff16601c14155b15610e745750600090506004610ef8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ec8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ef157600060019250925050610ef8565b9150600090505b94509492505050565b6000806001600160ff1b03831681610f1e60ff86901c601b611308565b9050610f2c87828885610e14565b935093505050935093915050565b600060208284031215610f4c57600080fd5b81356001600160e01b031981168114610f6457600080fd5b9392505050565b60005b83811015610f86578181015183820152602001610f6e565b50506000910152565b60008151808452610fa7816020860160208601610f6b565b601f01601f19169290920160200192915050565b602081526000610f646020830184610f8f565b600060208284031215610fe057600080fd5b5035919050565b600060208284031215610ff957600080fd5b81356001600160a01b0381168114610f6457600080fd5b60008083601f84011261102257600080fd5b50813567ffffffffffffffff81111561103a57600080fd5b602083019150836020828501011115610c3657600080fd5b6000806000806040858703121561106857600080fd5b843567ffffffffffffffff8082111561108057600080fd5b61108c88838901611010565b909650945060208701359150808211156110a557600080fd5b506110b287828801611010565b95989497509550505050565b600060e082840312156110d057600080fd5b50919050565b600080600080600080600060a0888a0312156110f157600080fd5b873567ffffffffffffffff8082111561110957600080fd5b6111158b838c016110be565b985060208a0135975060408a0135965060608a013591508082111561113957600080fd5b6111458b838c01611010565b909650945060808a013591508082111561115e57600080fd5b5061116b8a828b01611010565b989b979a50959850939692959293505050565b82151581526040602082015260006111996040830184610f8f565b949350505050565b600080600080606085870312156111b757600080fd5b843567ffffffffffffffff808211156111cf57600080fd5b6111db888389016110be565b95506020870135945060408701359150808211156110a557600080fd5b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112465761124661121e565b5060010190565b848682376000858201600560fb1b81528551611270816001840160208a01610f6b565b600b60fa1b600192909101918201528385600283013760009301600201928352509095945050505050565b6000808335601e198436030181126112b257600080fd5b83018035915067ffffffffffffffff8211156112cd57600080fd5b602001915036819003821315610c3657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b808201808211156102905761029061121e565b80820281158282048414176102905761029061121e565b60008261134f57634e487b7160e01b600052601260045260246000fd5b500490565b60008251611366818460208701610f6b565b9190910192915050565b8a81528960208201528860408201528760608201528660808201528560a08201528460c08201528360e082015260006101008385828501376000929093019092019081529a9950505050505050505050565b6040815260006113d56040830185610f8f565b905082151560208301529392505050565b634e487b7160e01b600052602160045260246000fdfe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a264697066735822122018c0fdb0974ade9877b4dba5170bce9fab49a47c4c6c5671e1565f4c5c9a01da64736f6c63430008130033616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300334e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204e6f76615265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204552524f523a204f6e6c79204d756d62616920616e6420476f65726c6920546573746e65747320537570706f727465640000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4c6f63616c52657075746174696f6e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d416c6c6f776c697374202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020205f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d506c7567696e5265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204d6f64756c655265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20a26469706673582212203e1460a1cc27cee5376f6691661dc57b5579ec11d4e97dfb40a309aedaf07b3964736f6c63430008130033697066733a2f2f6261666b726569646c7278723537783766337066656e33356b7a6f7271786e6b66617475633562726f6667707a7474793371693565697336663661697066733a2f2f6261666b72656967336777686d7261656c6a756e656b3672773376796e73627861706d77646d747a616f7636757763737134717a3674326b6d6e79697066733a2f2f6261666b726569676e3336327578626678666d637a71643733616363797176666c6c6d66357034376c787975626d6478796c68696e357864617a69697066733a2f2f6261666b72656963367335326561766d737433773776656273647a6c373661353577626d336173713671756a75626a683678683333323375376634697066733a2f2f6261666b7265696534356e747778367472686c34617a6169786a367374363472636768726e736366326d6e6c6168696863747269366f7370677465697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b766a6a617561786b756d64337872656a707671627437767a64656b7734767a67767179", + "sourceMap": "3126:44:69:-:0;;;-1:-1:-1;;800:28:67;;;;;3126:44:69;750:8914:122;899:95;;750:8914;899:95;;;750:8914;899:95;;;;;;;;;:::i;:::-;;1000:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1094:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1189:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1280:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1376:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;750:8914;;;;;;;;;;;;14:127:134;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:134;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:134;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:134;;;2580:26;2531:89;-1:-1:-1;;1335:1:134;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:134;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:134;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:134;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:134:o;:::-;750:8914:122;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620002c2565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b46600c8190556201388103620000c657600b80546301000000600160b81b0319167669015912aa33720b842dcd6ac059ed623f28d9f70000001790555b600c54600503620000fe57600b80546301000000600160b81b03191676e041608922d06a4f26c0d4c27d8bcd01daf1f7920000001790555b600c54617a69036200015d5760405162000118906200176d565b604051809103906000f08015801562000135573d6000803e3d6000fd5b50600b60036101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b54630100000090046001600160a01b0316620001d15762000199604051806060016040528060308152602001620138346030913962001671565b620001d16040518060400160405280601581526020017414d959481cd8dc9a5c1d1ccbd1195c1b1bde505b1b605a1b81525062001671565b604051600080516020620138648339815191529063897e0a9790620001f9906020016200181b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000226919062001893565b600060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505060405163619d897f60e01b815260008051602062013864833981519152925063619d897f91506200028c90600401620018df565b600060405180830381600087803b158015620002a757600080fd5b505af1158015620002bc573d6000803e3d6000fd5b50505050565b60405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152600080516020620138648339815191529063ce817d4790829063c1978d1f90606401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062001a11565b6040518263ffffffff1660e01b81526004016200037191815260200190565b600060405180830381600087803b1580156200038c57600080fd5b505af1158015620003a1573d6000803e3d6000fd5b50505050620003c9604051806060016040528060338152602001620138c06033913962001671565b6200040a6040518060400160405280601a81526020017f4465706c6f79696e6720746f206e6574776f726b2049443a202000000000000081525046620016bb565b6200042e6040518060600160405280602e815260200162013970602e913962001671565b60405163348051d760e11b8152466004820152600080516020620138648339815191529063897e0a97908290636900a3ae90602401600060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ab919081019062001a41565b60405163348051d760e11b81524260048201526000805160206201386483398151915290636900a3ae90602401600060405180830381865afa158015620004f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000520919081019062001a41565b6040516020016200053392919062001afa565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000560919062001893565b600060405180830381600087803b1580156200057b57600080fd5b505af115801562000590573d6000803e3d6000fd5b505050506000604051620005a4906200177b565b604051809103906000f080158015620005c1573d6000803e3d6000fd5b5090506000604051620005d49062001789565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b5090506000604051620006049062001797565b604051809103906000f08015801562000621573d6000803e3d6000fd5b50905060006040516200063490620017a5565b604051809103906000f08015801562000651573d6000803e3d6000fd5b5090506000816040516200066590620017b3565b6001600160a01b039091168152602001604051809103906000f08015801562000692573d6000803e3d6000fd5b509050600081604051620006a690620017c1565b6001600160a01b039091168152602001604051809103906000f080158015620006d3573d6000803e3d6000fd5b5090506000600b60039054906101000a90046001600160a01b0316858884604051620006ff90620017cf565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000744573d6000803e3d6000fd5b50604051632b65311f60e11b81526001600160a01b0387166004820152909150600080516020620138648339815191529063619d897f9082906356ca623e90602401600060405180830381865afa158015620007a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007ce919081019062001a41565b604051632b65311f60e11b81526001600160a01b038b16600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200084c919081019062001a41565b6040516020016200085f92919062001b91565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b03871660048301529060008051602062013864833981519152906356ca623e90602401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001a41565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000940573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200096a919081019062001a41565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa158015620009be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009e8919081019062001a41565b604051602001620009fc9392919062001c63565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b038b1660048301529060008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000a5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a89919081019062001a41565b604051632b65311f60e11b81526001600160a01b038a16600482015260008051602062013864833981519152906356ca623e90602401600060405180830381865afa15801562000add573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b07919081019062001a41565b60405160200162000b1a92919062001da6565b60408051601f198184030181529082905262000b3b93929160200162001e8b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000b68919062001893565b600060405180830381600087803b15801562000b8357600080fd5b505af115801562000b98573d6000803e3d6000fd5b505060405163a9810f4560e01b81526001600160a01b0389811660048301528593508316915063a9810f4590602401600060405180830381600087803b15801562000be257600080fd5b505af115801562000bf7573d6000803e3d6000fd5b505060408051600680825260e082019092526060935060009250906020820160c0803683375050604051631a104a5d60e11b8152919250506001600160a01b0384169063342094ba9062000c6f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600d90600090600190899060040162001f11565b6020604051808303816000875af115801562000c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb5919062001a11565b8160008151811062000ccb5762000ccb62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000d239073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600e90600090600190899060040162001f11565b6020604051808303816000875af115801562000d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d69919062001a11565b8160018151811062000d7f5762000d7f62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000dd79073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600f90600090600190899060040162001f11565b6020604051808303816000875af115801562000df7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1d919062001a11565b8160028151811062000e335762000e3362002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000e8b9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601090600090600190899060040162001f11565b6020604051808303816000875af115801562000eab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed1919062001a11565b8160038151811062000ee75762000ee762002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000f3f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601190600090600190899060040162001f11565b6020604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f85919062001a11565b8160048151811062000f9b5762000f9b62002002565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000ff39073303b24d8bb5aed7e55558aef96b282a84ecfa82a90601290600090600190899060040162001f11565b6020604051808303816000875af115801562001013573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001039919062001a11565b816005815181106200104f576200104f62002002565b60209081029190910101528051600080516020620138648339815191529063619d897f908290636900a3ae9085906000906200108f576200108f62002002565b60200260200101516040518263ffffffff1660e01b8152600401620010b691815260200190565b600060405180830381865afa158015620010d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010fe919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae8560018151811062001135576200113562002002565b60200260200101516040518263ffffffff1660e01b81526004016200115c91815260200190565b600060405180830381865afa1580156200117a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011a4919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae86600281518110620011db57620011db62002002565b60200260200101516040518263ffffffff1660e01b81526004016200120291815260200190565b600060405180830381865afa15801562001220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200124a919081019062001a41565b600080516020620139cf83398151915260001c6001600160a01b0316636900a3ae8760038151811062001281576200128162002002565b60200260200101516040518263ffffffff1660e01b8152600401620012a891815260200190565b600060405180830381865afa158015620012c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f0919081019062001a41565b60405160200162001305949392919062002018565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001332919062001893565b600060405180830381600087803b1580156200134d57600080fd5b505af115801562001362573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152731b403ff6eb37d25dccba0540637d65550f84acb360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620013bc57600080fd5b505af1158015620013d1573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273303b24d8bb5aed7e55558aef96b282a84ecfa82a60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d4360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200149a57600080fd5b505af1158015620014af573d6000803e3d6000fd5b50505050620014d86040518060600160405280603181526020016201399e603191398962001708565b620014fd604051806060016040528060368152602001620137c5603691398b62001708565b620015226040518060600160405280603b815260200162013a2a603b91398762001708565b620015476040518060600160405280603b8152602001620139ef603b91398662001708565b6200156c604051806060016040528060398152602001620137fb603991398562001708565b620015916040518060600160405280603c815260200162013884603c91398a62001708565b620015b6604051806060016040528060368152602001620138f3603691398862001708565b620015da604051806080016040528060478152602001620139296047913962001671565b620015fe6040518060600160405280602e815260200162013970602e913962001671565b600080516020620139cf83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200164c57600080fd5b505af115801562001661573d6000803e3d6000fd5b5050505050505050505050505050565b620016b881604051602401620016889190620020b2565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526200174c565b50565b620017048282604051602401620016d4929190620020ce565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b1790526200174c565b5050565b62001704828260405160240162001721929190620020f2565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6116bd806200211f83390190565b6123c280620037dc83390190565b6137d58062005b9e83390190565b613723806200937383390190565b610c72806200ca9683390190565b6110db806200d70883390190565b613043806200e7e383390190565b611f9f806201182683390190565b7f232323232323232323232323232323232323232323232323232323232323232380825260208201526511919191900560d11b604082015260460190565b61100560f11b808252600282015260006200183960048301620017dd565b92915050565b60005b838110156200185c57818101518382015260200162001842565b50506000910152565b600081518084526200187f8160208601602086016200183f565b601f01601f19169290920160200192915050565b604081526000620018c360408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b8281036020840152620018d7818562001865565b949350505050565b6040815260006200190f60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b82810360209384015260de81527f202323232323232323232323232323232323232323232323232323232323232392810192909252507f2323232323232323232323232323232323232323232323232323232323232323604082018190527f2323232323232323200a2023232323232323232323232323232323232323232360608301527f2323204445504c4f594d454e542041444452455353455320232323232323232360808301527f232323232323232323232323232323232323200a20232323232323232323232360a083015260c08201527f23232323232323232323232323232323232323232323232323232323200a000060e08201526101000190565b60006020828403121562001a2457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001a5457600080fd5b815167ffffffffffffffff8082111562001a6d57600080fd5b818401915084601f83011262001a8257600080fd5b81518181111562001a975762001a9762001a2b565b604051601f8201601f19908116603f0116810190838211818310171562001ac25762001ac262001a2b565b8160405282815287602084870101111562001adc57600080fd5b62001aef8360208301602088016200183f565b979650505050505050565b7f4465706c6f79656420746f206e6574776f726b2049443a20200000000000000081526000835162001b348160198501602088016200183f565b61100560f11b60199184019182018190526e020ba103a34b6b2b9ba30b6b81d101608d1b601b830152845162001b7281602a8501602089016200183f565b602a92019182015262001b88602c8201620017dd565b95945050505050565b7f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527001696969696969696969696969696901d1607d1b60208201526000835162001be58160318501602088016200183f565b61100560f11b60319184019182018190527f4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603383015275016969696969696969696969696969696969696901d160551b6053830152845162001c508160698501602089016200183f565b6069920191820152606b01949350505050565b7f4d6f64756c6552656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d815260007f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000000806020840152855162001cc481603a860160208a016200183f565b61100560f11b603a9185019182018190527f506c7567696e52656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603c830152605c82019290925285519162001d19836076840160208a016200183f565b828201925080607684015250507f4e6f766152656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d60788201527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000006098820152835162001d878160b08401602088016200183f565b0162001d9a60b0820161100560f11b9052565b60b20195945050505050565b7f4c6f63616c52657075746174696f6e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000060208201526000835162001e0681603b8501602088016200183f565b61100560f11b603b9184019182018190527f416c6c6f776c697374416464722d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603d8301527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000605d830152845162001e788160768501602089016200183f565b6076920191820152607801949350505050565b6000845162001e9f8184602089016200183f565b84519083019062001eb58183602089016200183f565b845191019062001eca8183602088016200183f565b0195945050505050565b600081518084526020808501945080840160005b8381101562001f065781518752958201959082019060010162001ee8565b509495945050505050565b60018060a01b03861681526000602060a0818401526000875481600182811c91508083168062001f4257607f831692505b858310810362001f6057634e487b7160e01b85526022600452602485fd5b60a0880183905260c0880181801562001f82576001811462001f995762001fc6565b60ff198616825284151560051b8201965062001fc6565b60008e81526020902060005b8681101562001fc05781548482015290850190890162001fa5565b83019750505b50505050505086604085015262001fe1606085018715159052565b838103608085015262001ff5818662001ed4565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6b028363ab3b4b724a239901d160a51b8152600085516200204181600c850160208a016200183f565b80830190506201016160ed1b80600c83015286516200206881600f850160208b016200183f565b600f9201918201819052855162002087816012850160208a016200183f565b60129201918201528351620020a48160158401602088016200183f565b016015019695505050505050565b602081526000620020c7602083018462001865565b9392505050565b604081526000620020e3604083018562001865565b90508260208301529392505050565b60408152600062002107604083018562001865565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b5060006040518060a00160405280606181526020016200165c60619139604051602001620000409190620000ee565b60408051601f1981840301815291905290506200005d8162000064565b5062000167565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290620000bc90859062000132565b60405180910390a25050565b60005b83811015620000e5578181015183820152602001620000cb565b50506000910152565b6e08cdee4eec2e4c8a4cae2eacae6e85608b1b8152600082516200011a81600f850160208701620000c8565b602960f81b600f939091019283015250601001919050565b602081526000825180602084015262000153816040850160208701620000c8565b601f01601f19169190910160400192915050565b6114e580620001776000396000f3fe6080604052600436106100a05760003560e01c8063ad9f99c711610064578063ad9f99c714610199578063c3f28abd146101b9578063c722f177146101ce578063d9210be5146101fe578063e024dc7f1461021e578063e2b62f2d1461023f57600080fd5b806301ffc9a7146100ac578063066a310c146100e157806321fe98df146101035780632d0335ab146101335780639c7b45921461017757600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610f3a565b61025f565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506100f6610296565b6040516100d89190610fbb565b34801561010f57600080fd5b506100cc61011e366004610fce565b60006020819052908152604090205460ff1681565b34801561013f57600080fd5b5061016961014e366004610fe7565b6001600160a01b031660009081526002602052604090205490565b6040519081526020016100d8565b34801561018357600080fd5b50610197610192366004611052565b6102b2565b005b3480156101a557600080fd5b506101976101b43660046110d6565b6103a9565b3480156101c557600080fd5b506100f66103ca565b3480156101da57600080fd5b506100cc6101e9366004610fce565b60016020526000908152604090205460ff1681565b34801561020a57600080fd5b50610197610219366004611052565b6103e6565b61023161022c3660046110d6565b6104e9565b6040516100d892919061117e565b34801561024b57600080fd5b506100f661025a3660046111a1565b610747565b60006001600160e01b031982166309788f9960e21b148061029057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6040518060a00160405280606181526020016113fd6061913981565b6000469050600060405180608001604052806052815260200161145e605291398051906020012086866040516102e99291906111f8565b604051809103902085856040516103019291906111f8565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c00160408051601f198184030181528282528051602080830191909120600081815260019283905293909320805460ff1916909117905592509081907f4bc68689cbe89a4a6333a3ab0a70093874da3e5bfb71e93102027f3f073687d890610398908590610fbb565b60405180910390a250505050505050565b6103b2876107e1565b6103c18787878787878761085e565b50505050505050565b60405180608001604052806052815260200161145e6052913981565b60005b8381101561049457600085858381811061040557610405611208565b909101356001600160f81b031916915050600560fb1b81148015906104385750602960f81b6001600160f81b0319821614155b6104815760405162461bcd60e51b81526020600482015260156024820152744657443a20696e76616c696420747970656e616d6560581b60448201526064015b60405180910390fd5b508061048c81611234565b9150506103e9565b50600084846040518060a00160405280606181526020016113fd6061913985856040516020016104c895949392919061124d565b60405160208183030381529060405290506104e281610a30565b5050505050565b600060606104fc8989898989898961085e565b61050589610a92565b60c089013515806105195750428960c00135115b61055c5760405162461bcd60e51b81526020600482015260146024820152731195d10e881c995c5d595cdd08195e1c1a5c995960621b6044820152606401610478565b600060408a01351561056d5750619c405b600061057c60a08c018c61129b565b61058960208e018e610fe7565b60405160200161059b939291906112e2565b60408051601f1981840301815291905290506105bb8260608d0135611308565b60405a6105c990603f61131b565b6105d39190611332565b10156106195760405162461bcd60e51b81526020600482015260156024820152744657443a20696e73756666696369656e742067617360581b6044820152606401610478565b61062960408c0160208d01610fe7565b6001600160a01b03168b606001358c604001358360405161064a9190611354565b600060405180830381858888f193505050503d8060008114610688576040519150601f19603f3d011682016040523d82523d6000602084013e61068d565b606091505b506040805180820190915260208082527f6578656375746520726573756c743a20737563636573733a202573207265743a9082015291955093506106d19085610b16565b6106da83610b5f565b60408b0135158015906106ed5750600047115b15610739576106ff60208c018c610fe7565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610737573d6000803e3d6000fd5b505b505097509795505050505050565b6060836107576020870187610fe7565b6001600160a01b03166107706040880160208901610fe7565b6001600160a01b03166040880135606089013560808a013561079560a08c018c61129b565b6040516107a39291906111f8565b6040519081900381206107c89796959493929160c08e0135908c908c90602001611370565b6040516020818303038152906040529050949350505050565b6080810135600260006107f76020850185610fe7565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b50565b60008681526001602052604090205460ff166108bc5760405162461bcd60e51b815260206004820152601d60248201527f4657443a20756e7265676973746572656420646f6d61696e207365702e0000006044820152606401610478565b60008581526020819052604090205460ff1661091a5760405162461bcd60e51b815260206004820152601a60248201527f4657443a20756e726567697374657265642074797065686173680000000000006044820152606401610478565b60008661092989888888610747565b805160209182012060405161095593920161190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090503215806109da57506109846020890189610fe7565b6001600160a01b03166109cf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610ba29050565b6001600160a01b0316145b610a265760405162461bcd60e51b815260206004820152601760248201527f4657443a207369676e6174757265206d69736d617463680000000000000000006044820152606401610478565b5050505050505050565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290610a86908590610fbb565b60405180910390a25050565b608081013560026000610aa86020850185610fe7565b6001600160a01b0316815260208101919091526040016000908120805491610acf83611234565b919050551461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b610b5b8282604051602401610b2c9291906113c2565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b179052610bc6565b5050565b61085b81604051602401610b739190610fbb565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b179052610bc6565b6000806000610bb18585610bcf565b91509150610bbe81610c3d565b509392505050565b61085b81610df3565b6000808251604103610c055760208301516040840151606085015160001a610bf987828585610e14565b94509450505050610c36565b8251604003610c2e5760208301516040840151610c23868383610f01565b935093505050610c36565b506000905060025b9250929050565b6000816004811115610c5157610c516113e6565b03610c595750565b6001816004811115610c6d57610c6d6113e6565b03610cba5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610478565b6002816004811115610cce57610cce6113e6565b03610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610478565b6003816004811115610d2f57610d2f6113e6565b03610d875760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610478565b6004816004811115610d9b57610d9b6113e6565b0361085b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610478565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e4b5750600090506003610ef8565b8460ff16601b14158015610e6357508460ff16601c14155b15610e745750600090506004610ef8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ec8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ef157600060019250925050610ef8565b9150600090505b94509492505050565b6000806001600160ff1b03831681610f1e60ff86901c601b611308565b9050610f2c87828885610e14565b935093505050935093915050565b600060208284031215610f4c57600080fd5b81356001600160e01b031981168114610f6457600080fd5b9392505050565b60005b83811015610f86578181015183820152602001610f6e565b50506000910152565b60008151808452610fa7816020860160208601610f6b565b601f01601f19169290920160200192915050565b602081526000610f646020830184610f8f565b600060208284031215610fe057600080fd5b5035919050565b600060208284031215610ff957600080fd5b81356001600160a01b0381168114610f6457600080fd5b60008083601f84011261102257600080fd5b50813567ffffffffffffffff81111561103a57600080fd5b602083019150836020828501011115610c3657600080fd5b6000806000806040858703121561106857600080fd5b843567ffffffffffffffff8082111561108057600080fd5b61108c88838901611010565b909650945060208701359150808211156110a557600080fd5b506110b287828801611010565b95989497509550505050565b600060e082840312156110d057600080fd5b50919050565b600080600080600080600060a0888a0312156110f157600080fd5b873567ffffffffffffffff8082111561110957600080fd5b6111158b838c016110be565b985060208a0135975060408a0135965060608a013591508082111561113957600080fd5b6111458b838c01611010565b909650945060808a013591508082111561115e57600080fd5b5061116b8a828b01611010565b989b979a50959850939692959293505050565b82151581526040602082015260006111996040830184610f8f565b949350505050565b600080600080606085870312156111b757600080fd5b843567ffffffffffffffff808211156111cf57600080fd5b6111db888389016110be565b95506020870135945060408701359150808211156110a557600080fd5b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112465761124661121e565b5060010190565b848682376000858201600560fb1b81528551611270816001840160208a01610f6b565b600b60fa1b600192909101918201528385600283013760009301600201928352509095945050505050565b6000808335601e198436030181126112b257600080fd5b83018035915067ffffffffffffffff8211156112cd57600080fd5b602001915036819003821315610c3657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b808201808211156102905761029061121e565b80820281158282048414176102905761029061121e565b60008261134f57634e487b7160e01b600052601260045260246000fd5b500490565b60008251611366818460208701610f6b565b9190910192915050565b8a81528960208201528860408201528760608201528660808201528560a08201528460c08201528360e082015260006101008385828501376000929093019092019081529a9950505050505050505050565b6040815260006113d56040830185610f8f565b905082151560208301529392505050565b634e487b7160e01b600052602160045260246000fdfe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a264697066735822122018c0fdb0974ade9877b4dba5170bce9fab49a47c4c6c5671e1565f4c5c9a01da64736f6c63430008130033616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300334e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204e6f76615265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204552524f523a204f6e6c79204d756d62616920616e6420476f65726c6920546573746e65747320537570706f727465640000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4c6f63616c52657075746174696f6e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d416c6c6f776c697374202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020205f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d506c7567696e5265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204d6f64756c655265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20a2646970667358221220e6714514a11472b4495c3e49974849efd68cade1098d30730b27fffeb776c75264736f6c63430008130033", - "sourceMap": "750:8471:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1479:1981;;;:::i;:::-;;3466:5753;;;:::i;800:28:54:-;;;;;;;;;;;;;;;275:14:121;;268:22;250:41;;238:2;223:18;800:28:54;;;;;;;1479:1981:109;1523:13;1513:7;:23;;;1561:5;1550:16;1546:89;;1568:22;:67;;-1:-1:-1;;;;;;1568:67:109;;;;;1546:89;1649:7;;1660:1;1649:12;1645:85;;1663:22;:67;;-1:-1:-1;;;;;;1663:67:109;;;;;1645:85;1744:7;;1755:5;1744:16;1740:78;;1795:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1762;;:56;;;;;-1:-1:-1;;;;;1762:56:109;;;;;-1:-1:-1;;;;;1762:56:109;;;;;;1740:78;1833:22;;;;;-1:-1:-1;;;;;1833:22:109;1829:180;;1885:63;;;;;;;;;;;;;;;;;;:11;:63::i;:::-;1962:36;;;;;;;;;;;;;;-1:-1:-1;;;1962:36:109;;;:11;:36::i;:::-;2075:102;;-1:-1:-1;;;;;;;;;;;2018:12:109;;;2075:102;;;;;:::i;:::-;;;;;;;;;;;;;2018:169;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2198:294:109;;-1:-1:-1;;;2198:294:109;;-1:-1:-1;;;;;;;;;;;2198:12:109;-1:-1:-1;2198:12:109;;-1:-1:-1;2198:294:109;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1479:1981::o;3466:5753::-;3530:20;;-1:-1:-1;;;3530:20:109;;3753:2:121;3530:20:109;;;3735:21:121;3792:1;3772:18;;;3765:29;-1:-1:-1;;;3810:18:121;;;3803:36;-1:-1:-1;;;;;;;;;;;3512:17:109;;;;;3530:10;;3856:18:121;;3530:20:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3512:39;;;;;;;;;;;;;4220:25:121;;4208:2;4193:18;;4074:177;3512:39:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3566:66;;;;;;;;;;;;;;;;;;:11;:66::i;:::-;3646:56;;;;;;;;;;;;;;;;;;3688:13;3646:11;:56::i;:::-;3716:61;;;;;;;;;;;;;;;;;;:11;:61::i;:::-;3941:26;;-1:-1:-1;;;3941:26:109;;3953:13;3941:26;;;4220:25:121;-1:-1:-1;;;;;;;;;;;3792:12:109;;;;;3941:11;;4193:18:121;;3941:26:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3941:26:109;;;;;;;;;;;;:::i;:::-;4055:28;;-1:-1:-1;;;4055:28:109;;4067:15;4055:28;;;4220:25:121;-1:-1:-1;;;;;;;;;;;4055:11:109;;;4193:18:121;;4055:28:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4055:28:109;;;;;;;;;;;;:::i;:::-;3857:366;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3792:445;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4258:21;4290:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4258:43;;4311:27;4349:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4311:60;;4381:13;4405:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4381:36;;4428:21;4460:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4428:48;;4486:26;4542:13;4523:33;;;;;:::i;:::-;-1:-1:-1;;;;;6681:32:121;;;6663:51;;6651:2;6636:18;4523:33:109;;;;;;;;;;;;;;;;;;;;;;;4486:71;;4567:26;4623:18;4604:38;;;;;:::i;:::-;-1:-1:-1;;;;;6681:32:121;;;6663:51;;6651:2;6636:18;4604:38:109;;;;;;;;;;;;;;;;;;;;;;;4567:76;;4653:24;4739:22;;;;;;;;;-1:-1:-1;;;;;4739:22:109;4783:5;4810:13;4845:18;4701:180;;;;;:::i;:::-;-1:-1:-1;;;;;7012:15:121;;;6994:34;;7064:15;;;7059:2;7044:18;;7037:43;7116:15;;;7111:2;7096:18;;7089:43;7168:15;;;7163:2;7148:18;;7141:43;6943:3;6928:19;4701:180:109;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5098:18:109;;-1:-1:-1;;;5098:18:109;;-1:-1:-1;;;;;6681:32:121;;5098:18:109;;;6663:51:121;4653:238:109;;-1:-1:-1;;;;;;;;;;;;4902:12:109;;;;;5098:11;;6636:18:121;;5098::109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5098:18:109;;;;;;;;;;;;:::i;:::-;5243:26;;-1:-1:-1;;;5243:26:109;;-1:-1:-1;;;;;6681:32:121;;5243:26:109;;;6663:51:121;-1:-1:-1;;;;;;;;;;;5243:11:109;;;6636:18:121;;5243:26:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5243:26:109;;;;;;;;;;;;:::i;:::-;4990:324;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;4990:324:109;;;;;;;-1:-1:-1;;;5449:31:109;;-1:-1:-1;;;;;6681:32:121;;5449:31:109;;;6663:51:121;4990:324:109;-1:-1:-1;;;;;;;;;;;5449:11:109;;;6636:18:121;;5449:31:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5449:31:109;;;;;;;;;;;;:::i;:::-;5611;;-1:-1:-1;;;5611:31:109;;-1:-1:-1;;;;;6681:32:121;;5611:31:109;;;6663:51:121;-1:-1:-1;;;;;;;;;;;5611:11:109;;;6636:18:121;;5611:31:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5611:31:109;;;;;;;;;;;;:::i;:::-;5771:29;;-1:-1:-1;;;5771:29:109;;-1:-1:-1;;;;;6681:32:121;;5771:29:109;;;6663:51:121;-1:-1:-1;;;;;;;;;;;5771:11:109;;;6636:18:121;;5771:29:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5771:29:109;;;;;;;;;;;;:::i;:::-;5332:513;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;5332:513:109;;;;;;;-1:-1:-1;;;5981:32:109;;-1:-1:-1;;;;;6681:32:121;;5981::109;;;6663:51:121;5332:513:109;-1:-1:-1;;;;;;;;;;;5981:11:109;;;6636:18:121;;5981:32:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5981:32:109;;;;;;;;;;;;:::i;:::-;6143:26;;-1:-1:-1;;;6143:26:109;;-1:-1:-1;;;;;6681:32:121;;6143:26:109;;;6663:51:121;-1:-1:-1;;;;;;;;;;;6143:11:109;;;6636:18:121;;6143:26:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6143:26:109;;;;;;;;;;;;:::i;:::-;5863:351;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5863:351:109;;;;;;;;;;4959:1269;;;;5863:351;4959:1269;;:::i;:::-;;;;;;;;;;;;;4902:1336;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6423:43:109;;-1:-1:-1;;;6423:43:109;;-1:-1:-1;;;;;6681:32:121;;;6423:43:109;;;6663:51:121;6394:18:109;;-1:-1:-1;6423:22:109;;;-1:-1:-1;6423:22:109;;6636:18:121;;6423:43:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6555:16:109;;;6569:1;6555:16;;;;;;;;;6477:29;;-1:-1:-1;6516:36:109;;-1:-1:-1;6555:16:109;;;;;;;;;-1:-1:-1;;6607:149:109;;-1:-1:-1;;;6607:149:109;;6516:55;;-1:-1:-1;;;;;;;6607:23:109;;;;;:149;;6660:42;;6706:17;;6725:1;;6728:4;;6734:12;;6607:149;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6582:19;6602:1;6582:22;;;;;;;;:::i;:::-;;;;;;;;;;:174;6791:142;;-1:-1:-1;;;6791:142:109;;-1:-1:-1;;;;;6791:23:109;;;;;:142;;6844:42;;6890:10;;6902:1;;6905:4;;6911:12;;6791:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6766:19;6786:1;6766:22;;;;;;;;:::i;:::-;;;;;;;;;;:167;6968:143;;-1:-1:-1;;;6968:143:109;;-1:-1:-1;;;;;6968:23:109;;;;;:143;;7021:42;;7067:11;;7080:1;;7083:4;;7089:12;;6968:143;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6943:19;6963:1;6943:22;;;;;;;;:::i;:::-;;;;;;;;;;:168;7146:139;;-1:-1:-1;;;7146:139:109;;-1:-1:-1;;;;;7146:23:109;;;;;:139;;7199:42;;7245:7;;7254:1;;7257:4;;7263:12;;7146:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7121:19;7141:1;7121:22;;;;;;;;:::i;:::-;;;;;;;;;;:164;7320:144;;-1:-1:-1;;;7320:144:109;;-1:-1:-1;;;;;7320:23:109;;;;;:144;;7373:42;;7419:12;;7433:1;;7436:4;;7442:12;;7320:144;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7295:19;7315:1;7295:22;;;;;;;;:::i;:::-;;;;;;;;;;:169;7499:150;;-1:-1:-1;;;7499:150:109;;-1:-1:-1;;;;;7499:23:109;;;;;:150;;7552:42;;7598:18;;7618:1;;7621:4;;7627:12;;7499:150;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7474:19;7494:1;7474:22;;;;;;;;:::i;:::-;;;;;;;;;;:175;7792:22;;-1:-1:-1;;;;;;;;;;;7660:12:109;;;;;7780:11;;7792:19;;309:37:53;;7792:22:109;;;;:::i;:::-;;;;;;;7780:35;;;;;;;;;;;;;4220:25:121;;4208:2;4193:18;;4074:177;7780:35:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7780:35:109;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;7856:11:109;;7868:19;7888:1;7868:22;;;;;;;;:::i;:::-;;;;;;;7856:35;;;;;;;;;;;;;4220:25:121;;4208:2;4193:18;;4074:177;7856:35:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7856:35:109;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;7932:11:109;;7944:19;7964:1;7944:22;;;;;;;;:::i;:::-;;;;;;;7932:35;;;;;;;;;;;;;4220:25:121;;4208:2;4193:18;;4074:177;7932:35:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7932:35:109;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;8008:11:109;;8020:19;8040:1;8020:22;;;;;;;;:::i;:::-;;;;;;;8008:35;;;;;;;;;;;;;4220:25:121;;4208:2;4193:18;;4074:177;8008:35:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8008:35:109;;;;;;;;;;;;:::i;:::-;7717:340;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7660:407;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8078:78:109;;-1:-1:-1;;;8078:78:109;;8113:42;8078:78;;;6663:51:121;-1:-1:-1;;;;;8078:34:109;;;-1:-1:-1;8078:34:109;;-1:-1:-1;6636:18:121;;8078:78:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8166:78:109;;-1:-1:-1;;;8166:78:109;;8201:42;8166:78;;;6663:51:121;-1:-1:-1;;;;;8166:34:109;;;-1:-1:-1;8166:34:109;;-1:-1:-1;6636:18:121;;8166:78:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8254:78:109;;-1:-1:-1;;;8254:78:109;;8289:42;8254:78;;;6663:51:121;-1:-1:-1;;;;;8254:34:109;;;-1:-1:-1;8254:34:109;;-1:-1:-1;6636:18:121;;8254:78:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8343:71;;;;;;;;;;;;;;;;;;8408:5;8343:11;:71::i;:::-;8424:84;;;;;;;;;;;;;;;;;;8494:13;8424:11;:84::i;:::-;8518:94;;;;;;;;;;;;;;;;;;8593:18;8518:11;:94::i;:::-;8622;;;;;;;;;;;;;;;;;;8697:18;8622:11;:94::i;:::-;8726:90;;;;;;;;;;;;;;;;;;8799:16;8726:11;:90::i;:::-;8826:96;;;;;;;;;;;;;;;;;;8902:19;8826:11;:96::i;:::-;8932:84;;;;;;;;;;;;;;;;;;9002:13;8932:11;:84::i;:::-;9026:86;;;;;;;;;;;;;;;;;;:11;:86::i;:::-;9122:61;;;;;;;;;;;;;;;;;;:11;:61::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;9194:16:109;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:5731;;;;;;;;;;3466:5753::o;5630:121:67:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:67;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:67;-1:-1:-1;;;5701:42:67;;;5685:15;:59::i;:::-;5630:121;:::o;6548:139::-;6612:68;6672:2;6676;6628:51;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6628:51:67;;;;;;;;;;;;;;-1:-1:-1;;;;;6628:51:67;-1:-1:-1;;;6628:51:67;;;6612:15;:68::i;:::-;6548:139;;:::o;6994:145::-;7061:71;7124:2;7128;7077:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7077:54:67;;;;;;;;;;;;;;-1:-1:-1;;;;;7077:54:67;-1:-1:-1;;;7077:54:67;;;181:376;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;386:255:121:-;461:34;504:15;;;544:2;535:12;;528:24;-1:-1:-1;;;577:2:121;568:12;;561:46;632:2;623:12;;386:255::o;646:526::-;-1:-1:-1;;;1061:15:121;;;1101:1;1092:11;;1085:23;1010:3;1124:42;1163:1;1154:11;;1124:42;:::i;:::-;1117:49;646:526;-1:-1:-1;;646:526:121:o;1501:250::-;1586:1;1596:113;1610:6;1607:1;1604:13;1596:113;;;1686:11;;;1680:18;1667:11;;;1660:39;1632:2;1625:10;1596:113;;;-1:-1:-1;;1743:1:121;1725:16;;1718:27;1501:250::o;1756:271::-;1798:3;1836:5;1830:12;1863:6;1858:3;1851:19;1879:76;1948:6;1941:4;1936:3;1932:14;1925:4;1918:5;1914:16;1879:76;:::i;:::-;2009:2;1988:15;-1:-1:-1;;1984:29:121;1975:39;;;;2016:4;1971:50;;1756:271;-1:-1:-1;;1756:271:121:o;2032:440::-;2282:2;2271:9;2264:21;2245:4;2308:49;2353:2;2342:9;2338:18;1409:2;1397:15;;-1:-1:-1;;;1437:4:121;1428:14;;1421:41;1487:2;1478:12;;1332:164;2308:49;2405:9;2397:6;2393:22;2388:2;2377:9;2373:18;2366:50;2433:33;2459:6;2451;2433:33;:::i;:::-;2425:41;2032:440;-1:-1:-1;;;;2032:440:121:o;2477:1069::-;2780:2;2769:9;2762:21;2743:4;2806:49;2851:2;2840:9;2836:18;1409:2;1397:15;;-1:-1:-1;;;1437:4:121;1428:14;;1421:41;1487:2;1478:12;;1332:164;2806:49;2891:22;;;2886:2;2871:18;;;2864:50;2938:3;2923:19;;2975:34;2958:15;;;2951:59;;;;-1:-1:-1;3029:34:121;3091:2;3079:15;;3072:27;;;3132:66;3127:2;3115:15;;3108:91;3233:34;3227:3;3215:16;;3208:60;3302:66;3296:3;3284:16;;3277:92;3397:3;3385:16;;3378:28;3440:66;3434:3;3422:16;;3415:92;3536:3;3524:16;;2477:1069::o;3885:184::-;3955:6;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;-1:-1:-1;4047:16:121;;3885:184;-1:-1:-1;3885:184:121:o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:897;4468:6;4521:2;4509:9;4500:7;4496:23;4492:32;4489:52;;;4537:1;4534;4527:12;4489:52;4570:9;4564:16;4599:18;4640:2;4632:6;4629:14;4626:34;;;4656:1;4653;4646:12;4626:34;4694:6;4683:9;4679:22;4669:32;;4739:7;4732:4;4728:2;4724:13;4720:27;4710:55;;4761:1;4758;4751:12;4710:55;4790:2;4784:9;4812:2;4808;4805:10;4802:36;;;4818:18;;:::i;:::-;4893:2;4887:9;4861:2;4947:13;;-1:-1:-1;;4943:22:121;;;4967:2;4939:31;4935:40;4923:53;;;4991:18;;;5011:22;;;4988:46;4985:72;;;5037:18;;:::i;:::-;5077:10;5073:2;5066:22;5112:2;5104:6;5097:18;5152:7;5147:2;5142;5138;5134:11;5130:20;5127:33;5124:53;;;5173:1;5170;5163:12;5124:53;5186:68;5251:2;5246;5238:6;5234:15;5229:2;5225;5221:11;5186:68;:::i;:::-;5273:6;4388:897;-1:-1:-1;;;;;;;4388:897:121:o;5290:1222::-;5962:27;5957:3;5950:40;5932:3;6019:6;6013:13;6035:75;6103:6;6098:2;6093:3;6089:12;6082:4;6074:6;6070:17;6035:75;:::i;:::-;-1:-1:-1;;;6202:2:121;6129:16;;;6194:11;;;6187:23;;;-1:-1:-1;;;6234:2:121;6226:11;;6219:38;6282:13;;6304:76;6282:13;6366:2;6358:11;;6351:4;6339:17;;6304:76;:::i;:::-;6440:2;6399:17;;6432:11;;;6425:23;6464:42;6502:2;6494:11;;6464:42;:::i;:::-;6457:49;5290:1222;-1:-1:-1;;;;;5290:1222:121:o;7195:1237::-;7786:34;7781:3;7774:47;-1:-1:-1;;;7846:2:121;7841:3;7837:12;7830:41;7756:3;7900:6;7894:13;7916:73;7982:6;7977:2;7972:3;7968:12;7963:2;7955:6;7951:15;7916:73;:::i;:::-;-1:-1:-1;;;8081:2:121;8008:16;;;8073:11;;;8066:23;;;8118:34;8113:2;8105:11;;8098:55;-1:-1:-1;;;8177:2:121;8169:11;;8162:45;8232:13;;8254:75;8232:13;8314:3;8306:12;;8301:2;8289:15;;8254:75;:::i;:::-;8389:3;8348:17;;8381:12;;;8374:24;8422:3;8414:12;;7195:1237;-1:-1:-1;;;;7195:1237:121:o;8437:1816::-;9267:34;9262:3;9255:47;9237:3;9321:28;9379:2;9374;9369:3;9365:12;9358:24;9411:6;9405:13;9427:73;9493:6;9488:2;9483:3;9479:12;9474:2;9466:6;9462:15;9427:73;:::i;:::-;-1:-1:-1;;;9592:2:121;9519:16;;;9584:11;;;9577:23;;;9629:34;9624:2;9616:11;;9609:55;9688:2;9680:11;;9673:23;;;;9721:13;;;9743:75;9721:13;9803:3;9795:12;;9790:2;9778:15;;9743:75;:::i;:::-;9845:8;9841:2;9837:17;9827:27;;9884:2;9878:3;9874:2;9870:12;9863:24;;;9917:34;9911:3;9907:2;9903:12;9896:56;9982:26;9976:3;9972:2;9968:12;9961:48;10040:6;10034:13;10056:75;10122:8;10116:3;10112:2;10108:12;10103:2;10095:6;10091:15;10056:75;:::i;:::-;10150:17;10176:43;10214:3;10206:12;;-1:-1:-1;;;352:27:121;;302:79;10176:43;10243:3;10235:12;;8437:1816;-1:-1:-1;;;;;8437:1816:121:o;10258:1250::-;10849:34;10844:3;10837:47;10914:29;10909:2;10904:3;10900:12;10893:51;10819:3;10973:6;10967:13;10989:73;11055:6;11050:2;11045:3;11041:12;11036:2;11028:6;11024:15;10989:73;:::i;:::-;-1:-1:-1;;;11154:2:121;11081:16;;;11146:11;;;11139:23;;;11191:34;11186:2;11178:11;;11171:55;11255:27;11250:2;11242:11;;11235:48;11308:13;;11330:75;11308:13;11390:3;11382:12;;11377:2;11365:15;;11330:75;:::i;:::-;11465:3;11424:17;;11457:12;;;11450:24;11498:3;11490:12;;10258:1250;-1:-1:-1;;;;10258:1250:121:o;11513:703::-;11740:3;11778:6;11772:13;11794:66;11853:6;11848:3;11841:4;11833:6;11829:17;11794:66;:::i;:::-;11923:13;;11882:16;;;;11945:70;11923:13;11882:16;11992:4;11980:17;;11945:70;:::i;:::-;12082:13;;12037:20;;;12104:70;12082:13;12037:20;12151:4;12139:17;;12104:70;:::i;:::-;12190:20;;11513:703;-1:-1:-1;;;;;11513:703:121:o;12347:435::-;12400:3;12438:5;12432:12;12465:6;12460:3;12453:19;12491:4;12520:2;12515:3;12511:12;12504:19;;12557:2;12550:5;12546:14;12578:1;12588:169;12602:6;12599:1;12596:13;12588:169;;;12663:13;;12651:26;;12697:12;;;;12732:15;;;;12624:1;12617:9;12588:169;;;-1:-1:-1;12773:3:121;;12347:435;-1:-1:-1;;;;;12347:435:121:o;12787:1655::-;13142:1;13138;13133:3;13129:11;13125:19;13117:6;13113:32;13102:9;13095:51;13076:4;13165:2;13203:3;13198:2;13187:9;13183:18;13176:31;13227:1;13260:6;13254:13;13290:3;13312:1;13340:9;13336:2;13332:18;13322:28;;13400:2;13389:9;13385:18;13422;13412:61;;13466:4;13458:6;13454:17;13444:27;;13412:61;13519:2;13511:6;13508:14;13488:18;13485:38;13482:165;;-1:-1:-1;;;13546:33:121;;13602:4;13599:1;13592:15;13632:4;13553:3;13620:17;13482:165;13718:3;13703:19;;1264;;;1307:14;;;13747:18;13774:128;;;;13916:1;13911:315;;;;13740:486;;13774:128;-1:-1:-1;;13807:24:121;;13795:37;;13875:14;;13868:22;13865:1;13861:30;13852:40;;;-1:-1:-1;13774:128:121;;13911:315;12294:1;12287:14;;;12331:4;12318:18;;14006:1;14020:165;14034:6;14031:1;14028:13;14020:165;;;14112:14;;14099:11;;;14092:35;14155:16;;;;14049:10;;14020:165;;;14205:11;;;-1:-1:-1;;13740:486:121;;;;;;;14262:6;14257:2;14246:9;14242:18;14235:34;14278:43;14317:2;14306:9;14302:18;14294:6;84:13;77:21;65:34;;14:91;14278:43;14367:9;14362:3;14358:19;14352:3;14341:9;14337:19;14330:48;14395:41;14432:3;14424:6;14395:41;:::i;:::-;14387:49;12787:1655;-1:-1:-1;;;;;;;;;12787:1655:121:o;14447:127::-;14508:10;14503:3;14499:20;14496:1;14489:31;14539:4;14536:1;14529:15;14563:4;14560:1;14553:15;14579:1445;-1:-1:-1;;;15240:3:121;15233:27;15215:3;15289:6;15283:13;15305:75;15373:6;15368:2;15363:3;15359:12;15352:4;15344:6;15340:17;15305:75;:::i;:::-;15408:6;15403:3;15399:16;15389:26;;-1:-1:-1;;;15468:2:121;15463;15459;15455:11;15448:23;15502:6;15496:13;15518:76;15585:8;15580:2;15576;15572:11;15565:4;15557:6;15553:17;15518:76;:::i;:::-;15654:2;15613:17;;15646:11;;;15639:23;;;15687:13;;15709:76;15687:13;15771:2;15763:11;;15756:4;15744:17;;15709:76;:::i;:::-;15845:2;15804:17;;15837:11;;;15830:23;15878:13;;15900:76;15878:13;15962:2;15954:11;;15947:4;15935:17;;15900:76;:::i;:::-;15996:17;16015:2;15992:26;;14579:1445;-1:-1:-1;;;;;;14579:1445:121:o;16029:220::-;16178:2;16167:9;16160:21;16141:4;16198:45;16239:2;16228:9;16224:18;16216:6;16198:45;:::i;:::-;16190:53;16029:220;-1:-1:-1;;;16029:220:121:o;16254:291::-;16431:2;16420:9;16413:21;16394:4;16451:45;16492:2;16481:9;16477:18;16469:6;16451:45;:::i;:::-;16443:53;;16532:6;16527:2;16516:9;16512:18;16505:34;16254:291;;;;;:::o;16550:317::-;16727:2;16716:9;16709:21;16690:4;16747:45;16788:2;16777:9;16773:18;16765:6;16747:45;:::i;:::-;16739:53;;16857:1;16853;16848:3;16844:11;16840:19;16832:6;16828:32;16823:2;16812:9;16808:18;16801:60;16550:317;;;;;:::o", + "object": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620002c2565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b46600c8190556201388103620000c657600b80546301000000600160b81b0319167669015912aa33720b842dcd6ac059ed623f28d9f70000001790555b600c54600503620000fe57600b80546301000000600160b81b03191676e041608922d06a4f26c0d4c27d8bcd01daf1f7920000001790555b600c54617a69036200015d57604051620001189062001998565b604051809103906000f08015801562000135573d6000803e3d6000fd5b50600b60036101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600b54630100000090046001600160a01b0316620001d1576200019960405180606001604052806030815260200162013c40603091396200189c565b620001d16040518060400160405280601581526020017414d959481cd8dc9a5c1d1ccbd1195c1b1bde505b1b605a1b8152506200189c565b60405160008051602062013c708339815191529063897e0a9790620001f99060200162001a46565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000226919062001abe565b600060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505060405163619d897f60e01b815260008051602062013c70833981519152925063619d897f91506200028c9060040162001b0a565b600060405180830381600087803b158015620002a757600080fd5b505af1158015620002bc573d6000803e3d6000fd5b50505050565b60405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b604482015260008051602062013c708339815191529063ce817d4790829063c1978d1f90606401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062001c3c565b6040518263ffffffff1660e01b81526004016200037191815260200190565b600060405180830381600087803b1580156200038c57600080fd5b505af1158015620003a1573d6000803e3d6000fd5b50505050620003c960405180606001604052806033815260200162013ccc603391396200189c565b6200040a6040518060400160405280601a81526020017f4465706c6f79696e6720746f206e6574776f726b2049443a202000000000000081525046620018e6565b6200042e6040518060600160405280602e815260200162013d7c602e91396200189c565b60405163348051d760e11b815246600482015260008051602062013c708339815191529063897e0a97908290636900a3ae90602401600060405180830381865afa15801562000481573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ab919081019062001c6c565b60405163348051d760e11b815242600482015260008051602062013c7083398151915290636900a3ae90602401600060405180830381865afa158015620004f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000520919081019062001c6c565b6040516020016200053392919062001d25565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000560919062001abe565b600060405180830381600087803b1580156200057b57600080fd5b505af115801562000590573d6000803e3d6000fd5b505050506000604051620005a490620019a6565b604051809103906000f080158015620005c1573d6000803e3d6000fd5b5090506000604051620005d490620019b4565b604051809103906000f080158015620005f1573d6000803e3d6000fd5b50905060006040516200060490620019c2565b604051809103906000f08015801562000621573d6000803e3d6000fd5b50905060006040516200063490620019d0565b604051809103906000f08015801562000651573d6000803e3d6000fd5b5090506000816040516200066590620019de565b6001600160a01b039091168152602001604051809103906000f08015801562000692573d6000803e3d6000fd5b509050600081604051620006a690620019ec565b6001600160a01b039091168152602001604051809103906000f080158015620006d3573d6000803e3d6000fd5b5090506000600b60039054906101000a90046001600160a01b0316858884604051620006ff90620019fa565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000744573d6000803e3d6000fd5b50604051632b65311f60e11b81526001600160a01b038716600482015290915060008051602062013c708339815191529063619d897f9082906356ca623e90602401600060405180830381865afa158015620007a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007ce919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038b16600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200084c919081019062001c6c565b6040516020016200085f92919062001dbc565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b03871660048301529060008051602062013c70833981519152906356ca623e90602401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000940573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200096a919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038716600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa158015620009be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009e8919081019062001c6c565b604051602001620009fc9392919062001e8e565b60408051808303601f1901815290829052632b65311f60e11b82526001600160a01b038b1660048301529060008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000a5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a89919081019062001c6c565b604051632b65311f60e11b81526001600160a01b038a16600482015260008051602062013c70833981519152906356ca623e90602401600060405180830381865afa15801562000add573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b07919081019062001c6c565b60405160200162000b1a92919062001fd1565b60408051601f198184030181529082905262000b3b939291602001620020b6565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162000b68919062001abe565b600060405180830381600087803b15801562000b8357600080fd5b505af115801562000b98573d6000803e3d6000fd5b505060405163a9810f4560e01b81526001600160a01b0389811660048301528593508316915063a9810f4590602401600060405180830381600087803b15801562000be257600080fd5b505af115801562000bf7573d6000803e3d6000fd5b505060408051600680825260e082019092526060935060009250906020820160c0803683375050604051631a104a5d60e11b8152919250506001600160a01b0384169063342094ba9062000c6f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600d9060009060019089906004016200213c565b6020604051808303816000875af115801562000c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb5919062001c3c565b8160008151811062000ccb5762000ccb6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000d239073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600e9060009060019089906004016200213c565b6020604051808303816000875af115801562000d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d69919062001c3c565b8160018151811062000d7f5762000d7f6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000dd79073303b24d8bb5aed7e55558aef96b282a84ecfa82a90600f9060009060019089906004016200213c565b6020604051808303816000875af115801562000df7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1d919062001c3c565b8160028151811062000e335762000e336200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000e8b9073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060109060009060019089906004016200213c565b6020604051808303816000875af115801562000eab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed1919062001c3c565b8160038151811062000ee75762000ee76200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000f3f9073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060119060009060019089906004016200213c565b6020604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f85919062001c3c565b8160048151811062000f9b5762000f9b6200222d565b6020908102919091010152604051631a104a5d60e11b81526001600160a01b0384169063342094ba9062000ff39073303b24d8bb5aed7e55558aef96b282a84ecfa82a9060129060009060019089906004016200213c565b6020604051808303816000875af115801562001013573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001039919062001c3c565b816005815181106200104f576200104f6200222d565b6020908102919091010152805160008051602062013c708339815191529063619d897f908290636900a3ae9085906000906200108f576200108f6200222d565b60200260200101516040518263ffffffff1660e01b8152600401620010b691815260200190565b600060405180830381865afa158015620010d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010fe919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae856001815181106200113557620011356200222d565b60200260200101516040518263ffffffff1660e01b81526004016200115c91815260200190565b600060405180830381865afa1580156200117a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011a4919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae86600281518110620011db57620011db6200222d565b60200260200101516040518263ffffffff1660e01b81526004016200120291815260200190565b600060405180830381865afa15801562001220573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200124a919081019062001c6c565b60008051602062013ddb83398151915260001c6001600160a01b0316636900a3ae876003815181106200128157620012816200222d565b60200260200101516040518263ffffffff1660e01b8152600401620012a891815260200190565b600060405180830381865afa158015620012c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620012f0919081019062001c6c565b60405160200162001305949392919062002243565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162001332919062001abe565b600060405180830381600087803b1580156200134d57600080fd5b505af115801562001362573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152731b403ff6eb37d25dccba0540637d65550f84acb360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620013bc57600080fd5b505af1158015620013d1573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273303b24d8bb5aed7e55558aef96b282a84ecfa82a60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d4360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200149a57600080fd5b505af1158015620014af573d6000803e3d6000fd5b5050604051630e0cb96960e31b815273cd3942171c362448cbd4faea6b2b71c8cce40bf360048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200150957600080fd5b505af11580156200151e573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527391dd610e5cbe132a833f42c2df0b2eafa965da4060048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200157857600080fd5b505af11580156200158d573d6000803e3d6000fd5b5050604051630e0cb96960e31b8152737660aa261d27a2a32d4e7e605c1bc2ba515e5f8160048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620015e757600080fd5b505af1158015620015fc573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527355954c2c092f6e973b55c5d2af28950b3b6d133860048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b1580156200165657600080fd5b505af11580156200166b573d6000803e3d6000fd5b5050604051630e0cb96960e31b81527306a0cc2bf3f4b1b7f725ccab1d7a51547c48b8fc60048201526001600160a01b038a169250637065cb489150602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b505050506200170360405180606001604052806031815260200162013daa603191398962001933565b6200172860405180606001604052806036815260200162013bd1603691398b62001933565b6200174d6040518060600160405280603b815260200162013e36603b91398762001933565b620017726040518060600160405280603b815260200162013dfb603b91398662001933565b6200179760405180606001604052806039815260200162013c07603991398562001933565b620017bc6040518060600160405280603c815260200162013c90603c91398a62001933565b620017e160405180606001604052806036815260200162013cff603691398862001933565b6200180560405180608001604052806047815260200162013d35604791396200189c565b620018296040518060600160405280602e815260200162013d7c602e91396200189c565b60008051602062013ddb83398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200187757600080fd5b505af11580156200188c573d6000803e3d6000fd5b5050505050505050505050505050565b620018e381604051602401620018b39190620022dd565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001977565b50565b6200192f8282604051602401620018ff929190620022f9565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262001977565b5050565b6200192f82826040516024016200194c9291906200231d565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b1790525b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6116bd806200234a83390190565b6125a38062003a0783390190565b6137d58062005faa83390190565b613723806200977f83390190565b610c72806200cea283390190565b6110db806200db1483390190565b613043806200ebef83390190565b611f9f8062011c3283390190565b7f232323232323232323232323232323232323232323232323232323232323232380825260208201526511919191900560d11b604082015260460190565b61100560f11b8082526002820152600062001a646004830162001a08565b92915050565b60005b8381101562001a8757818101518382015260200162001a6d565b50506000910152565b6000815180845262001aaa81602086016020860162001a6a565b601f01601f19169290920160200192915050565b60408152600062001aee60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b828103602084015262001b02818562001a90565b949350505050565b60408152600062001b3a60408301600f81526e19195c1b1bde5b595b9d1ccb9d1e1d608a1b602082015260400190565b82810360209384015260de81527f202323232323232323232323232323232323232323232323232323232323232392810192909252507f2323232323232323232323232323232323232323232323232323232323232323604082018190527f2323232323232323200a2023232323232323232323232323232323232323232360608301527f2323204445504c4f594d454e542041444452455353455320232323232323232360808301527f232323232323232323232323232323232323200a20232323232323232323232360a083015260c08201527f23232323232323232323232323232323232323232323232323232323200a000060e08201526101000190565b60006020828403121562001c4f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001c7f57600080fd5b815167ffffffffffffffff8082111562001c9857600080fd5b818401915084601f83011262001cad57600080fd5b81518181111562001cc25762001cc262001c56565b604051601f8201601f19908116603f0116810190838211818310171562001ced5762001ced62001c56565b8160405282815287602084870101111562001d0757600080fd5b62001d1a83602083016020880162001a6a565b979650505050505050565b7f4465706c6f79656420746f206e6574776f726b2049443a20200000000000000081526000835162001d5f81601985016020880162001a6a565b61100560f11b60199184019182018190526e020ba103a34b6b2b9ba30b6b81d101608d1b601b830152845162001d9d81602a85016020890162001a6a565b602a92019182015262001db3602c820162001a08565b95945050505050565b7f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527001696969696969696969696969696901d1607d1b60208201526000835162001e1081603185016020880162001a6a565b61100560f11b60319184019182018190527f4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603383015275016969696969696969696969696969696969696901d160551b6053830152845162001e7b81606985016020890162001a6a565b6069920191820152606b01949350505050565b7f4d6f64756c6552656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d815260007f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20000000000000806020840152855162001eef81603a860160208a0162001a6a565b61100560f11b603a9185019182018190527f506c7567696e52656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603c830152605c82019290925285519162001f44836076840160208a0162001a6a565b828201925080607684015250507f4e6f766152656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d60788201527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000006098820152835162001fb28160b084016020880162001a6a565b0162001fc560b0820161100560f11b9052565b60b20195945050505050565b7f4c6f63616c52657075746174696f6e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d81527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000006020820152600083516200203181603b85016020880162001a6a565b61100560f11b603b9184019182018190527f416c6c6f776c697374416464722d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d603d8301527f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2000000000000000605d8301528451620020a381607685016020890162001a6a565b6076920191820152607801949350505050565b60008451620020ca81846020890162001a6a565b845190830190620020e081836020890162001a6a565b8451910190620020f581836020880162001a6a565b0195945050505050565b600081518084526020808501945080840160005b83811015620021315781518752958201959082019060010162002113565b509495945050505050565b60018060a01b03861681526000602060a0818401526000875481600182811c9150808316806200216d57607f831692505b85831081036200218b57634e487b7160e01b85526022600452602485fd5b60a0880183905260c08801818015620021ad5760018114620021c457620021f1565b60ff198616825284151560051b82019650620021f1565b60008e81526020902060005b86811015620021eb57815484820152908501908901620021d0565b83019750505b5050505050508660408501526200220c606085018715159052565b8381036080850152620022208186620020ff565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6b028363ab3b4b724a239901d160a51b8152600085516200226c81600c850160208a0162001a6a565b80830190506201016160ed1b80600c83015286516200229381600f850160208b0162001a6a565b600f92019182018190528551620022b2816012850160208a0162001a6a565b60129201918201528351620022cf81601584016020880162001a6a565b016015019695505050505050565b602081526000620022f2602083018462001a90565b9392505050565b6040815260006200230e604083018562001a90565b90508260208301529392505050565b60408152600062002332604083018562001a90565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b5060006040518060a00160405280606181526020016200165c60619139604051602001620000409190620000ee565b60408051601f1981840301815291905290506200005d8162000064565b5062000167565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290620000bc90859062000132565b60405180910390a25050565b60005b83811015620000e5578181015183820152602001620000cb565b50506000910152565b6e08cdee4eec2e4c8a4cae2eacae6e85608b1b8152600082516200011a81600f850160208701620000c8565b602960f81b600f939091019283015250601001919050565b602081526000825180602084015262000153816040850160208701620000c8565b601f01601f19169190910160400192915050565b6114e580620001776000396000f3fe6080604052600436106100a05760003560e01c8063ad9f99c711610064578063ad9f99c714610199578063c3f28abd146101b9578063c722f177146101ce578063d9210be5146101fe578063e024dc7f1461021e578063e2b62f2d1461023f57600080fd5b806301ffc9a7146100ac578063066a310c146100e157806321fe98df146101035780632d0335ab146101335780639c7b45921461017757600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610f3a565b61025f565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b506100f6610296565b6040516100d89190610fbb565b34801561010f57600080fd5b506100cc61011e366004610fce565b60006020819052908152604090205460ff1681565b34801561013f57600080fd5b5061016961014e366004610fe7565b6001600160a01b031660009081526002602052604090205490565b6040519081526020016100d8565b34801561018357600080fd5b50610197610192366004611052565b6102b2565b005b3480156101a557600080fd5b506101976101b43660046110d6565b6103a9565b3480156101c557600080fd5b506100f66103ca565b3480156101da57600080fd5b506100cc6101e9366004610fce565b60016020526000908152604090205460ff1681565b34801561020a57600080fd5b50610197610219366004611052565b6103e6565b61023161022c3660046110d6565b6104e9565b6040516100d892919061117e565b34801561024b57600080fd5b506100f661025a3660046111a1565b610747565b60006001600160e01b031982166309788f9960e21b148061029057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6040518060a00160405280606181526020016113fd6061913981565b6000469050600060405180608001604052806052815260200161145e605291398051906020012086866040516102e99291906111f8565b604051809103902085856040516103019291906111f8565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c00160408051601f198184030181528282528051602080830191909120600081815260019283905293909320805460ff1916909117905592509081907f4bc68689cbe89a4a6333a3ab0a70093874da3e5bfb71e93102027f3f073687d890610398908590610fbb565b60405180910390a250505050505050565b6103b2876107e1565b6103c18787878787878761085e565b50505050505050565b60405180608001604052806052815260200161145e6052913981565b60005b8381101561049457600085858381811061040557610405611208565b909101356001600160f81b031916915050600560fb1b81148015906104385750602960f81b6001600160f81b0319821614155b6104815760405162461bcd60e51b81526020600482015260156024820152744657443a20696e76616c696420747970656e616d6560581b60448201526064015b60405180910390fd5b508061048c81611234565b9150506103e9565b50600084846040518060a00160405280606181526020016113fd6061913985856040516020016104c895949392919061124d565b60405160208183030381529060405290506104e281610a30565b5050505050565b600060606104fc8989898989898961085e565b61050589610a92565b60c089013515806105195750428960c00135115b61055c5760405162461bcd60e51b81526020600482015260146024820152731195d10e881c995c5d595cdd08195e1c1a5c995960621b6044820152606401610478565b600060408a01351561056d5750619c405b600061057c60a08c018c61129b565b61058960208e018e610fe7565b60405160200161059b939291906112e2565b60408051601f1981840301815291905290506105bb8260608d0135611308565b60405a6105c990603f61131b565b6105d39190611332565b10156106195760405162461bcd60e51b81526020600482015260156024820152744657443a20696e73756666696369656e742067617360581b6044820152606401610478565b61062960408c0160208d01610fe7565b6001600160a01b03168b606001358c604001358360405161064a9190611354565b600060405180830381858888f193505050503d8060008114610688576040519150601f19603f3d011682016040523d82523d6000602084013e61068d565b606091505b506040805180820190915260208082527f6578656375746520726573756c743a20737563636573733a202573207265743a9082015291955093506106d19085610b16565b6106da83610b5f565b60408b0135158015906106ed5750600047115b15610739576106ff60208c018c610fe7565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610737573d6000803e3d6000fd5b505b505097509795505050505050565b6060836107576020870187610fe7565b6001600160a01b03166107706040880160208901610fe7565b6001600160a01b03166040880135606089013560808a013561079560a08c018c61129b565b6040516107a39291906111f8565b6040519081900381206107c89796959493929160c08e0135908c908c90602001611370565b6040516020818303038152906040529050949350505050565b6080810135600260006107f76020850185610fe7565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b50565b60008681526001602052604090205460ff166108bc5760405162461bcd60e51b815260206004820152601d60248201527f4657443a20756e7265676973746572656420646f6d61696e207365702e0000006044820152606401610478565b60008581526020819052604090205460ff1661091a5760405162461bcd60e51b815260206004820152601a60248201527f4657443a20756e726567697374657265642074797065686173680000000000006044820152606401610478565b60008661092989888888610747565b805160209182012060405161095593920161190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090503215806109da57506109846020890189610fe7565b6001600160a01b03166109cf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050610ba29050565b6001600160a01b0316145b610a265760405162461bcd60e51b815260206004820152601760248201527f4657443a207369676e6174757265206d69736d617463680000000000000000006044820152606401610478565b5050505050505050565b8051602080830191909120600081815291829052604091829020805460ff19166001179055905181907f64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb20290610a86908590610fbb565b60405180910390a25050565b608081013560026000610aa86020850185610fe7565b6001600160a01b0316815260208101919091526040016000908120805491610acf83611234565b919050551461085b5760405162461bcd60e51b815260206004820152601360248201527208cae887440dcdedcc6ca40dad2e6dac2e8c6d606b1b6044820152606401610478565b610b5b8282604051602401610b2c9291906113c2565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b179052610bc6565b5050565b61085b81604051602401610b739190610fbb565b60408051601f198184030181529190526020810180516001600160e01b03166305f3bfab60e11b179052610bc6565b6000806000610bb18585610bcf565b91509150610bbe81610c3d565b509392505050565b61085b81610df3565b6000808251604103610c055760208301516040840151606085015160001a610bf987828585610e14565b94509450505050610c36565b8251604003610c2e5760208301516040840151610c23868383610f01565b935093505050610c36565b506000905060025b9250929050565b6000816004811115610c5157610c516113e6565b03610c595750565b6001816004811115610c6d57610c6d6113e6565b03610cba5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610478565b6002816004811115610cce57610cce6113e6565b03610d1b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610478565b6003816004811115610d2f57610d2f6113e6565b03610d875760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610478565b6004816004811115610d9b57610d9b6113e6565b0361085b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610478565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e4b5750600090506003610ef8565b8460ff16601b14158015610e6357508460ff16601c14155b15610e745750600090506004610ef8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ec8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ef157600060019250925050610ef8565b9150600090505b94509492505050565b6000806001600160ff1b03831681610f1e60ff86901c601b611308565b9050610f2c87828885610e14565b935093505050935093915050565b600060208284031215610f4c57600080fd5b81356001600160e01b031981168114610f6457600080fd5b9392505050565b60005b83811015610f86578181015183820152602001610f6e565b50506000910152565b60008151808452610fa7816020860160208601610f6b565b601f01601f19169290920160200192915050565b602081526000610f646020830184610f8f565b600060208284031215610fe057600080fd5b5035919050565b600060208284031215610ff957600080fd5b81356001600160a01b0381168114610f6457600080fd5b60008083601f84011261102257600080fd5b50813567ffffffffffffffff81111561103a57600080fd5b602083019150836020828501011115610c3657600080fd5b6000806000806040858703121561106857600080fd5b843567ffffffffffffffff8082111561108057600080fd5b61108c88838901611010565b909650945060208701359150808211156110a557600080fd5b506110b287828801611010565b95989497509550505050565b600060e082840312156110d057600080fd5b50919050565b600080600080600080600060a0888a0312156110f157600080fd5b873567ffffffffffffffff8082111561110957600080fd5b6111158b838c016110be565b985060208a0135975060408a0135965060608a013591508082111561113957600080fd5b6111458b838c01611010565b909650945060808a013591508082111561115e57600080fd5b5061116b8a828b01611010565b989b979a50959850939692959293505050565b82151581526040602082015260006111996040830184610f8f565b949350505050565b600080600080606085870312156111b757600080fd5b843567ffffffffffffffff808211156111cf57600080fd5b6111db888389016110be565b95506020870135945060408701359150808211156110a557600080fd5b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112465761124661121e565b5060010190565b848682376000858201600560fb1b81528551611270816001840160208a01610f6b565b600b60fa1b600192909101918201528385600283013760009301600201928352509095945050505050565b6000808335601e198436030181126112b257600080fd5b83018035915067ffffffffffffffff8211156112cd57600080fd5b602001915036819003821315610c3657600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b808201808211156102905761029061121e565b80820281158282048414176102905761029061121e565b60008261134f57634e487b7160e01b600052601260045260246000fd5b500490565b60008251611366818460208701610f6b565b9190910192915050565b8a81528960208201528860408201528760608201528660808201528560a08201528460c08201528360e082015260006101008385828501376000929093019092019081529a9950505050505050505050565b6040815260006113d56040830185610f8f565b905082151560208301529392505050565b634e487b7160e01b600052602160045260246000fdfe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a264697066735822122018c0fdb0974ade9877b4dba5170bce9fab49a47c4c6c5671e1565f4c5c9a01da64736f6c63430008130033616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c54696d65608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300334e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204e6f76615265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204552524f523a204f6e6c79204d756d62616920616e6420476f65726c6920546573746e65747320537570706f727465640000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4c6f63616c52657075746174696f6e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d416c6c6f776c697374202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020205f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d506c7567696e5265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a204d6f64756c655265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20a26469706673582212203e1460a1cc27cee5376f6691661dc57b5579ec11d4e97dfb40a309aedaf07b3964736f6c63430008130033", + "sourceMap": "750:8914:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1479:1981;;;:::i;:::-;;3466:6193;;;:::i;800:28:67:-;;;;;;;;;;;;;;;275:14:134;;268:22;250:41;;238:2;223:18;800:28:67;;;;;;;1479:1981:122;1523:13;1513:7;:23;;;1561:5;1550:16;1546:89;;1568:22;:67;;-1:-1:-1;;;;;;1568:67:122;;;;;1546:89;1649:7;;1660:1;1649:12;1645:85;;1663:22;:67;;-1:-1:-1;;;;;;1663:67:122;;;;;1645:85;1744:7;;1755:5;1744:16;1740:78;;1795:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1762;;:56;;;;;-1:-1:-1;;;;;1762:56:122;;;;;-1:-1:-1;;;;;1762:56:122;;;;;;1740:78;1833:22;;;;;-1:-1:-1;;;;;1833:22:122;1829:180;;1885:63;;;;;;;;;;;;;;;;;;:11;:63::i;:::-;1962:36;;;;;;;;;;;;;;-1:-1:-1;;;1962:36:122;;;:11;:36::i;:::-;2075:102;;-1:-1:-1;;;;;;;;;;;2018:12:122;;;2075:102;;;;;:::i;:::-;;;;;;;;;;;;;2018:169;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2198:294:122;;-1:-1:-1;;;2198:294:122;;-1:-1:-1;;;;;;;;;;;2198:12:122;-1:-1:-1;2198:12:122;;-1:-1:-1;2198:294:122;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1479:1981::o;3466:6193::-;3530:20;;-1:-1:-1;;;3530:20:122;;3753:2:134;3530:20:122;;;3735:21:134;3792:1;3772:18;;;3765:29;-1:-1:-1;;;3810:18:134;;;3803:36;-1:-1:-1;;;;;;;;;;;3512:17:122;;;;;3530:10;;3856:18:134;;3530:20:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3512:39;;;;;;;;;;;;;4220:25:134;;4208:2;4193:18;;4074:177;3512:39:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3566:66;;;;;;;;;;;;;;;;;;:11;:66::i;:::-;3646:56;;;;;;;;;;;;;;;;;;3688:13;3646:11;:56::i;:::-;3716:61;;;;;;;;;;;;;;;;;;:11;:61::i;:::-;3941:26;;-1:-1:-1;;;3941:26:122;;3953:13;3941:26;;;4220:25:134;-1:-1:-1;;;;;;;;;;;3792:12:122;;;;;3941:11;;4193:18:134;;3941:26:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3941:26:122;;;;;;;;;;;;:::i;:::-;4055:28;;-1:-1:-1;;;4055:28:122;;4067:15;4055:28;;;4220:25:134;-1:-1:-1;;;;;;;;;;;4055:11:122;;;4193:18:134;;4055:28:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4055:28:122;;;;;;;;;;;;:::i;:::-;3857:366;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3792:445;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4258:21;4290:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4258:43;;4311:27;4349:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4311:60;;4381:13;4405:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4381:36;;4428:21;4460:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4428:48;;4486:26;4542:13;4523:33;;;;;:::i;:::-;-1:-1:-1;;;;;6681:32:134;;;6663:51;;6651:2;6636:18;4523:33:122;;;;;;;;;;;;;;;;;;;;;;;4486:71;;4567:26;4623:18;4604:38;;;;;:::i;:::-;-1:-1:-1;;;;;6681:32:134;;;6663:51;;6651:2;6636:18;4604:38:122;;;;;;;;;;;;;;;;;;;;;;;4567:76;;4653:24;4739:22;;;;;;;;;-1:-1:-1;;;;;4739:22:122;4783:5;4810:13;4845:18;4701:180;;;;;:::i;:::-;-1:-1:-1;;;;;7012:15:134;;;6994:34;;7064:15;;;7059:2;7044:18;;7037:43;7116:15;;;7111:2;7096:18;;7089:43;7168:15;;;7163:2;7148:18;;7141:43;6943:3;6928:19;4701:180:122;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5098:18:122;;-1:-1:-1;;;5098:18:122;;-1:-1:-1;;;;;6681:32:134;;5098:18:122;;;6663:51:134;4653:238:122;;-1:-1:-1;;;;;;;;;;;;4902:12:122;;;;;5098:11;;6636:18:134;;5098::122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5098:18:122;;;;;;;;;;;;:::i;:::-;5243:26;;-1:-1:-1;;;5243:26:122;;-1:-1:-1;;;;;6681:32:134;;5243:26:122;;;6663:51:134;-1:-1:-1;;;;;;;;;;;5243:11:122;;;6636:18:134;;5243:26:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5243:26:122;;;;;;;;;;;;:::i;:::-;4990:324;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;4990:324:122;;;;;;;-1:-1:-1;;;5449:31:122;;-1:-1:-1;;;;;6681:32:134;;5449:31:122;;;6663:51:134;4990:324:122;-1:-1:-1;;;;;;;;;;;5449:11:122;;;6636:18:134;;5449:31:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5449:31:122;;;;;;;;;;;;:::i;:::-;5611;;-1:-1:-1;;;5611:31:122;;-1:-1:-1;;;;;6681:32:134;;5611:31:122;;;6663:51:134;-1:-1:-1;;;;;;;;;;;5611:11:122;;;6636:18:134;;5611:31:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5611:31:122;;;;;;;;;;;;:::i;:::-;5771:29;;-1:-1:-1;;;5771:29:122;;-1:-1:-1;;;;;6681:32:134;;5771:29:122;;;6663:51:134;-1:-1:-1;;;;;;;;;;;5771:11:122;;;6636:18:134;;5771:29:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5771:29:122;;;;;;;;;;;;:::i;:::-;5332:513;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;5332:513:122;;;;;;;-1:-1:-1;;;5981:32:122;;-1:-1:-1;;;;;6681:32:134;;5981::122;;;6663:51:134;5332:513:122;-1:-1:-1;;;;;;;;;;;5981:11:122;;;6636:18:134;;5981:32:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5981:32:122;;;;;;;;;;;;:::i;:::-;6143:26;;-1:-1:-1;;;6143:26:122;;-1:-1:-1;;;;;6681:32:134;;6143:26:122;;;6663:51:134;-1:-1:-1;;;;;;;;;;;6143:11:122;;;6636:18:134;;6143:26:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6143:26:122;;;;;;;;;;;;:::i;:::-;5863:351;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5863:351:122;;;;;;;;;;4959:1269;;;;5863:351;4959:1269;;:::i;:::-;;;;;;;;;;;;;4902:1336;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6423:43:122;;-1:-1:-1;;;6423:43:122;;-1:-1:-1;;;;;6681:32:134;;;6423:43:122;;;6663:51:134;6394:18:122;;-1:-1:-1;6423:22:122;;;-1:-1:-1;6423:22:122;;6636:18:134;;6423:43:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6555:16:122;;;6569:1;6555:16;;;;;;;;;6477:29;;-1:-1:-1;6516:36:122;;-1:-1:-1;6555:16:122;;;;;;;;;-1:-1:-1;;6607:149:122;;-1:-1:-1;;;6607:149:122;;6516:55;;-1:-1:-1;;;;;;;6607:23:122;;;;;:149;;6660:42;;6706:17;;6725:1;;6728:4;;6734:12;;6607:149;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6582:19;6602:1;6582:22;;;;;;;;:::i;:::-;;;;;;;;;;:174;6791:142;;-1:-1:-1;;;6791:142:122;;-1:-1:-1;;;;;6791:23:122;;;;;:142;;6844:42;;6890:10;;6902:1;;6905:4;;6911:12;;6791:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6766:19;6786:1;6766:22;;;;;;;;:::i;:::-;;;;;;;;;;:167;6968:143;;-1:-1:-1;;;6968:143:122;;-1:-1:-1;;;;;6968:23:122;;;;;:143;;7021:42;;7067:11;;7080:1;;7083:4;;7089:12;;6968:143;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6943:19;6963:1;6943:22;;;;;;;;:::i;:::-;;;;;;;;;;:168;7146:139;;-1:-1:-1;;;7146:139:122;;-1:-1:-1;;;;;7146:23:122;;;;;:139;;7199:42;;7245:7;;7254:1;;7257:4;;7263:12;;7146:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7121:19;7141:1;7121:22;;;;;;;;:::i;:::-;;;;;;;;;;:164;7320:144;;-1:-1:-1;;;7320:144:122;;-1:-1:-1;;;;;7320:23:122;;;;;:144;;7373:42;;7419:12;;7433:1;;7436:4;;7442:12;;7320:144;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7295:19;7315:1;7295:22;;;;;;;;:::i;:::-;;;;;;;;;;:169;7499:150;;-1:-1:-1;;;7499:150:122;;-1:-1:-1;;;;;7499:23:122;;;;;:150;;7552:42;;7598:18;;7618:1;;7621:4;;7627:12;;7499:150;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7474:19;7494:1;7474:22;;;;;;;;:::i;:::-;;;;;;;;;;:175;7792:22;;-1:-1:-1;;;;;;;;;;;7660:12:122;;;;;7780:11;;7792:19;;309:37:66;;7792:22:122;;;;:::i;:::-;;;;;;;7780:35;;;;;;;;;;;;;4220:25:134;;4208:2;4193:18;;4074:177;7780:35:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7780:35:122;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;7856:11:122;;7868:19;7888:1;7868:22;;;;;;;;:::i;:::-;;;;;;;7856:35;;;;;;;;;;;;;4220:25:134;;4208:2;4193:18;;4074:177;7856:35:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7856:35:122;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;7932:11:122;;7944:19;7964:1;7944:22;;;;;;;;:::i;:::-;;;;;;;7932:35;;;;;;;;;;;;;4220:25:134;;4208:2;4193:18;;4074:177;7932:35:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7932:35:122;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;8008:11:122;;8020:19;8040:1;8020:22;;;;;;;;:::i;:::-;;;;;;;8008:35;;;;;;;;;;;;;4220:25:134;;4208:2;4193:18;;4074:177;8008:35:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8008:35:122;;;;;;;;;;;;:::i;:::-;7717:340;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7660:407;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8078:78:122;;-1:-1:-1;;;8078:78:122;;8113:42;8078:78;;;6663:51:134;-1:-1:-1;;;;;8078:34:122;;;-1:-1:-1;8078:34:122;;-1:-1:-1;6636:18:134;;8078:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8166:78:122;;-1:-1:-1;;;8166:78:122;;8201:42;8166:78;;;6663:51:134;-1:-1:-1;;;;;8166:34:122;;;-1:-1:-1;8166:34:122;;-1:-1:-1;6636:18:134;;8166:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8254:78:122;;-1:-1:-1;;;8254:78:122;;8289:42;8254:78;;;6663:51:134;-1:-1:-1;;;;;8254:34:122;;;-1:-1:-1;8254:34:122;;-1:-1:-1;6636:18:134;;8254:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8342:78:122;;-1:-1:-1;;;8342:78:122;;8377:42;8342:78;;;6663:51:134;-1:-1:-1;;;;;8342:34:122;;;-1:-1:-1;8342:34:122;;-1:-1:-1;6636:18:134;;8342:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8430:78:122;;-1:-1:-1;;;8430:78:122;;8465:42;8430:78;;;6663:51:134;-1:-1:-1;;;;;8430:34:122;;;-1:-1:-1;8430:34:122;;-1:-1:-1;6636:18:134;;8430:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8518:78:122;;-1:-1:-1;;;8518:78:122;;8553:42;8518:78;;;6663:51:134;-1:-1:-1;;;;;8518:34:122;;;-1:-1:-1;8518:34:122;;-1:-1:-1;6636:18:134;;8518:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8606:78:122;;-1:-1:-1;;;8606:78:122;;8641:42;8606:78;;;6663:51:134;-1:-1:-1;;;;;8606:34:122;;;-1:-1:-1;8606:34:122;;-1:-1:-1;6636:18:134;;8606:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8694:78:122;;-1:-1:-1;;;8694:78:122;;8729:42;8694:78;;;6663:51:134;-1:-1:-1;;;;;8694:34:122;;;-1:-1:-1;8694:34:122;;-1:-1:-1;6636:18:134;;8694:78:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8783:71;;;;;;;;;;;;;;;;;;8848:5;8783:11;:71::i;:::-;8864:84;;;;;;;;;;;;;;;;;;8934:13;8864:11;:84::i;:::-;8958:94;;;;;;;;;;;;;;;;;;9033:18;8958:11;:94::i;:::-;9062;;;;;;;;;;;;;;;;;;9137:18;9062:11;:94::i;:::-;9166:90;;;;;;;;;;;;;;;;;;9239:16;9166:11;:90::i;:::-;9266:96;;;;;;;;;;;;;;;;;;9342:19;9266:11;:96::i;:::-;9372:84;;;;;;;;;;;;;;;;;;9442:13;9372:11;:84::i;:::-;9466:86;;;;;;;;;;;;;;;;;;:11;:86::i;:::-;9562:61;;;;;;;;;;;;;;;;;;:11;:61::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;9634:16:122;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:6171;;;;;;;;;;3466:6193::o;5630:121:80:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:80;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:80;-1:-1:-1;;;5701:42:80;;;5685:15;:59::i;:::-;5630:121;:::o;6548:139::-;6612:68;6672:2;6676;6628:51;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6628:51:80;;;;;;;;;;;;;;-1:-1:-1;;;;;6628:51:80;-1:-1:-1;;;6628:51:80;;;6612:15;:68::i;:::-;6548:139;;:::o;6994:145::-;7061:71;7124:2;7128;7077:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7077:54:80;;;;;;;;;;;;;;-1:-1:-1;;;;;7077:54:80;-1:-1:-1;;;7077:54:80;;;181:376;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;386:255:134:-;461:34;504:15;;;544:2;535:12;;528:24;-1:-1:-1;;;577:2:134;568:12;;561:46;632:2;623:12;;386:255::o;646:526::-;-1:-1:-1;;;1061:15:134;;;1101:1;1092:11;;1085:23;1010:3;1124:42;1163:1;1154:11;;1124:42;:::i;:::-;1117:49;646:526;-1:-1:-1;;646:526:134:o;1501:250::-;1586:1;1596:113;1610:6;1607:1;1604:13;1596:113;;;1686:11;;;1680:18;1667:11;;;1660:39;1632:2;1625:10;1596:113;;;-1:-1:-1;;1743:1:134;1725:16;;1718:27;1501:250::o;1756:271::-;1798:3;1836:5;1830:12;1863:6;1858:3;1851:19;1879:76;1948:6;1941:4;1936:3;1932:14;1925:4;1918:5;1914:16;1879:76;:::i;:::-;2009:2;1988:15;-1:-1:-1;;1984:29:134;1975:39;;;;2016:4;1971:50;;1756:271;-1:-1:-1;;1756:271:134:o;2032:440::-;2282:2;2271:9;2264:21;2245:4;2308:49;2353:2;2342:9;2338:18;1409:2;1397:15;;-1:-1:-1;;;1437:4:134;1428:14;;1421:41;1487:2;1478:12;;1332:164;2308:49;2405:9;2397:6;2393:22;2388:2;2377:9;2373:18;2366:50;2433:33;2459:6;2451;2433:33;:::i;:::-;2425:41;2032:440;-1:-1:-1;;;;2032:440:134:o;2477:1069::-;2780:2;2769:9;2762:21;2743:4;2806:49;2851:2;2840:9;2836:18;1409:2;1397:15;;-1:-1:-1;;;1437:4:134;1428:14;;1421:41;1487:2;1478:12;;1332:164;2806:49;2891:22;;;2886:2;2871:18;;;2864:50;2938:3;2923:19;;2975:34;2958:15;;;2951:59;;;;-1:-1:-1;3029:34:134;3091:2;3079:15;;3072:27;;;3132:66;3127:2;3115:15;;3108:91;3233:34;3227:3;3215:16;;3208:60;3302:66;3296:3;3284:16;;3277:92;3397:3;3385:16;;3378:28;3440:66;3434:3;3422:16;;3415:92;3536:3;3524:16;;2477:1069::o;3885:184::-;3955:6;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;-1:-1:-1;4047:16:134;;3885:184;-1:-1:-1;3885:184:134:o;4256:127::-;4317:10;4312:3;4308:20;4305:1;4298:31;4348:4;4345:1;4338:15;4372:4;4369:1;4362:15;4388:897;4468:6;4521:2;4509:9;4500:7;4496:23;4492:32;4489:52;;;4537:1;4534;4527:12;4489:52;4570:9;4564:16;4599:18;4640:2;4632:6;4629:14;4626:34;;;4656:1;4653;4646:12;4626:34;4694:6;4683:9;4679:22;4669:32;;4739:7;4732:4;4728:2;4724:13;4720:27;4710:55;;4761:1;4758;4751:12;4710:55;4790:2;4784:9;4812:2;4808;4805:10;4802:36;;;4818:18;;:::i;:::-;4893:2;4887:9;4861:2;4947:13;;-1:-1:-1;;4943:22:134;;;4967:2;4939:31;4935:40;4923:53;;;4991:18;;;5011:22;;;4988:46;4985:72;;;5037:18;;:::i;:::-;5077:10;5073:2;5066:22;5112:2;5104:6;5097:18;5152:7;5147:2;5142;5138;5134:11;5130:20;5127:33;5124:53;;;5173:1;5170;5163:12;5124:53;5186:68;5251:2;5246;5238:6;5234:15;5229:2;5225;5221:11;5186:68;:::i;:::-;5273:6;4388:897;-1:-1:-1;;;;;;;4388:897:134:o;5290:1222::-;5962:27;5957:3;5950:40;5932:3;6019:6;6013:13;6035:75;6103:6;6098:2;6093:3;6089:12;6082:4;6074:6;6070:17;6035:75;:::i;:::-;-1:-1:-1;;;6202:2:134;6129:16;;;6194:11;;;6187:23;;;-1:-1:-1;;;6234:2:134;6226:11;;6219:38;6282:13;;6304:76;6282:13;6366:2;6358:11;;6351:4;6339:17;;6304:76;:::i;:::-;6440:2;6399:17;;6432:11;;;6425:23;6464:42;6502:2;6494:11;;6464:42;:::i;:::-;6457:49;5290:1222;-1:-1:-1;;;;;5290:1222:134:o;7195:1237::-;7786:34;7781:3;7774:47;-1:-1:-1;;;7846:2:134;7841:3;7837:12;7830:41;7756:3;7900:6;7894:13;7916:73;7982:6;7977:2;7972:3;7968:12;7963:2;7955:6;7951:15;7916:73;:::i;:::-;-1:-1:-1;;;8081:2:134;8008:16;;;8073:11;;;8066:23;;;8118:34;8113:2;8105:11;;8098:55;-1:-1:-1;;;8177:2:134;8169:11;;8162:45;8232:13;;8254:75;8232:13;8314:3;8306:12;;8301:2;8289:15;;8254:75;:::i;:::-;8389:3;8348:17;;8381:12;;;8374:24;8422:3;8414:12;;7195:1237;-1:-1:-1;;;;7195:1237:134:o;8437:1816::-;9267:34;9262:3;9255:47;9237:3;9321:28;9379:2;9374;9369:3;9365:12;9358:24;9411:6;9405:13;9427:73;9493:6;9488:2;9483:3;9479:12;9474:2;9466:6;9462:15;9427:73;:::i;:::-;-1:-1:-1;;;9592:2:134;9519:16;;;9584:11;;;9577:23;;;9629:34;9624:2;9616:11;;9609:55;9688:2;9680:11;;9673:23;;;;9721:13;;;9743:75;9721:13;9803:3;9795:12;;9790:2;9778:15;;9743:75;:::i;:::-;9845:8;9841:2;9837:17;9827:27;;9884:2;9878:3;9874:2;9870:12;9863:24;;;9917:34;9911:3;9907:2;9903:12;9896:56;9982:26;9976:3;9972:2;9968:12;9961:48;10040:6;10034:13;10056:75;10122:8;10116:3;10112:2;10108:12;10103:2;10095:6;10091:15;10056:75;:::i;:::-;10150:17;10176:43;10214:3;10206:12;;-1:-1:-1;;;352:27:134;;302:79;10176:43;10243:3;10235:12;;8437:1816;-1:-1:-1;;;;;8437:1816:134:o;10258:1250::-;10849:34;10844:3;10837:47;10914:29;10909:2;10904:3;10900:12;10893:51;10819:3;10973:6;10967:13;10989:73;11055:6;11050:2;11045:3;11041:12;11036:2;11028:6;11024:15;10989:73;:::i;:::-;-1:-1:-1;;;11154:2:134;11081:16;;;11146:11;;;11139:23;;;11191:34;11186:2;11178:11;;11171:55;11255:27;11250:2;11242:11;;11235:48;11308:13;;11330:75;11308:13;11390:3;11382:12;;11377:2;11365:15;;11330:75;:::i;:::-;11465:3;11424:17;;11457:12;;;11450:24;11498:3;11490:12;;10258:1250;-1:-1:-1;;;;10258:1250:134:o;11513:703::-;11740:3;11778:6;11772:13;11794:66;11853:6;11848:3;11841:4;11833:6;11829:17;11794:66;:::i;:::-;11923:13;;11882:16;;;;11945:70;11923:13;11882:16;11992:4;11980:17;;11945:70;:::i;:::-;12082:13;;12037:20;;;12104:70;12082:13;12037:20;12151:4;12139:17;;12104:70;:::i;:::-;12190:20;;11513:703;-1:-1:-1;;;;;11513:703:134:o;12347:435::-;12400:3;12438:5;12432:12;12465:6;12460:3;12453:19;12491:4;12520:2;12515:3;12511:12;12504:19;;12557:2;12550:5;12546:14;12578:1;12588:169;12602:6;12599:1;12596:13;12588:169;;;12663:13;;12651:26;;12697:12;;;;12732:15;;;;12624:1;12617:9;12588:169;;;-1:-1:-1;12773:3:134;;12347:435;-1:-1:-1;;;;;12347:435:134:o;12787:1655::-;13142:1;13138;13133:3;13129:11;13125:19;13117:6;13113:32;13102:9;13095:51;13076:4;13165:2;13203:3;13198:2;13187:9;13183:18;13176:31;13227:1;13260:6;13254:13;13290:3;13312:1;13340:9;13336:2;13332:18;13322:28;;13400:2;13389:9;13385:18;13422;13412:61;;13466:4;13458:6;13454:17;13444:27;;13412:61;13519:2;13511:6;13508:14;13488:18;13485:38;13482:165;;-1:-1:-1;;;13546:33:134;;13602:4;13599:1;13592:15;13632:4;13553:3;13620:17;13482:165;13718:3;13703:19;;1264;;;1307:14;;;13747:18;13774:128;;;;13916:1;13911:315;;;;13740:486;;13774:128;-1:-1:-1;;13807:24:134;;13795:37;;13875:14;;13868:22;13865:1;13861:30;13852:40;;;-1:-1:-1;13774:128:134;;13911:315;12294:1;12287:14;;;12331:4;12318:18;;14006:1;14020:165;14034:6;14031:1;14028:13;14020:165;;;14112:14;;14099:11;;;14092:35;14155:16;;;;14049:10;;14020:165;;;14205:11;;;-1:-1:-1;;13740:486:134;;;;;;;14262:6;14257:2;14246:9;14242:18;14235:34;14278:43;14317:2;14306:9;14302:18;14294:6;84:13;77:21;65:34;;14:91;14278:43;14367:9;14362:3;14358:19;14352:3;14341:9;14337:19;14330:48;14395:41;14432:3;14424:6;14395:41;:::i;:::-;14387:49;12787:1655;-1:-1:-1;;;;;;;;;12787:1655:134:o;14447:127::-;14508:10;14503:3;14499:20;14496:1;14489:31;14539:4;14536:1;14529:15;14563:4;14560:1;14553:15;14579:1445;-1:-1:-1;;;15240:3:134;15233:27;15215:3;15289:6;15283:13;15305:75;15373:6;15368:2;15363:3;15359:12;15352:4;15344:6;15340:17;15305:75;:::i;:::-;15408:6;15403:3;15399:16;15389:26;;-1:-1:-1;;;15468:2:134;15463;15459;15455:11;15448:23;15502:6;15496:13;15518:76;15585:8;15580:2;15576;15572:11;15565:4;15557:6;15553:17;15518:76;:::i;:::-;15654:2;15613:17;;15646:11;;;15639:23;;;15687:13;;15709:76;15687:13;15771:2;15763:11;;15756:4;15744:17;;15709:76;:::i;:::-;15845:2;15804:17;;15837:11;;;15830:23;15878:13;;15900:76;15878:13;15962:2;15954:11;;15947:4;15935:17;;15900:76;:::i;:::-;15996:17;16015:2;15992:26;;14579:1445;-1:-1:-1;;;;;;14579:1445:134:o;16029:220::-;16178:2;16167:9;16160:21;16141:4;16198:45;16239:2;16228:9;16224:18;16216:6;16198:45;:::i;:::-;16190:53;16029:220;-1:-1:-1;;;16029:220:134:o;16254:291::-;16431:2;16420:9;16413:21;16394:4;16451:45;16492:2;16481:9;16477:18;16469:6;16451:45;:::i;:::-;16443:53;;16532:6;16527:2;16516:9;16512:18;16505:34;16254:291;;;;;:::o;16550:317::-;16727:2;16716:9;16709:21;16690:4;16747:45;16788:2;16777:9;16773:18;16765:6;16747:45;:::i;:::-;16739:53;;16857:1;16853;16848:3;16844:11;16840:19;16832:6;16828:32;16823:2;16812:9;16808:18;16801:60;16550:317;;;;;:::o", "linkReferences": {} }, "methodIdentifiers": { @@ -43,7 +43,7 @@ "run()": "c0406226", "setUp()": "0a9254e4" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployAll.s.sol\":\"DeployScript\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/mocks/TrustedForwarder.sol\":{\"keccak256\":\"0x5c491e9c99cd3fadb559ed12c9b705b193d1ebcfe89247fb9ae9cc48ba5e0f57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f43ec255c63f7c792c7903f431a23fc859a932534a1f407fcf0c0daa42c70556\",\"dweb:/ipfs/QmcknHtsav8UFeoERzFLepz2jj6BCRWXe6VaACq6euhdyG\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/forwarder/Forwarder.sol\":{\"keccak256\":\"0x649ea2f205b514ccafbe0bd928e0cf309cde425dfd403a73b83e276309be651a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://8c5160839d80d07d6f3aa31c0f38ddbffd8df032d1e38d164c27984e688869c7\",\"dweb:/ipfs/QmSZyRCZHizKF6AcsPJnnGtnC3mxebePap3erqzJzTFaxr\"]},\"node_modules/@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0x28669953bd3dcc98a5f959fa3cac97444584b6fbe59341681b9a59f11a83b171\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a21d3f5fb9861fecd89da8aab73fc458e48bdfd2d7d9fd8a2f05b1afe54de278\",\"dweb:/ipfs/QmcNDQsr83ASBADBQmqdrvSvRt81rhUmyJwSVTu5is7WzW\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/hardhat/console.sol\":{\"keccak256\":\"0x7434453e6d3b7d0e5d0eb7846ffdbc27f0ccf3b163591263739b628074dc103a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49355f780520494d1d5a0f01858385e51bb5280ce0ecfb960f16995065dca395\",\"dweb:/ipfs/QmSwJ6C5QLz6xKeQZS8wbwjU1KxRFTYfwbGmtzisd5sRW4\"]},\"script/DeployAll.s.sol\":{\"keccak256\":\"0xf8b030e21f0c302c16f7914492efd5cf376f6c0c0785014174a942983121faca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://375812378cf51981c039d292fa32652a5045699c8bc0dbaddee1c3c3e078a322\",\"dweb:/ipfs/QmQWnczp5mdb2KcWrkfAZZPitwbTiYqte8b1e6h8YM3FRC\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployAll.s.sol\":\"DeployScript\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/mocks/TrustedForwarder.sol\":{\"keccak256\":\"0x5c491e9c99cd3fadb559ed12c9b705b193d1ebcfe89247fb9ae9cc48ba5e0f57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f43ec255c63f7c792c7903f431a23fc859a932534a1f407fcf0c0daa42c70556\",\"dweb:/ipfs/QmcknHtsav8UFeoERzFLepz2jj6BCRWXe6VaACq6euhdyG\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/forwarder/Forwarder.sol\":{\"keccak256\":\"0x649ea2f205b514ccafbe0bd928e0cf309cde425dfd403a73b83e276309be651a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://8c5160839d80d07d6f3aa31c0f38ddbffd8df032d1e38d164c27984e688869c7\",\"dweb:/ipfs/QmSZyRCZHizKF6AcsPJnnGtnC3mxebePap3erqzJzTFaxr\"]},\"node_modules/@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0x28669953bd3dcc98a5f959fa3cac97444584b6fbe59341681b9a59f11a83b171\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a21d3f5fb9861fecd89da8aab73fc458e48bdfd2d7d9fd8a2f05b1afe54de278\",\"dweb:/ipfs/QmcNDQsr83ASBADBQmqdrvSvRt81rhUmyJwSVTu5is7WzW\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/hardhat/console.sol\":{\"keccak256\":\"0x7434453e6d3b7d0e5d0eb7846ffdbc27f0ccf3b163591263739b628074dc103a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49355f780520494d1d5a0f01858385e51bb5280ce0ecfb960f16995065dca395\",\"dweb:/ipfs/QmSwJ6C5QLz6xKeQZS8wbwjU1KxRFTYfwbGmtzisd5sRW4\"]},\"script/DeployAll.s.sol\":{\"keccak256\":\"0xcc5f17fab99c9ef2da3ebebbb0d4cd055ee5a0e81d29575a9c61b1440b81ddde\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://13af143dd4de242b399228ddbb6e7d8e0fb91363164a29e4b4bbf8a16206e006\",\"dweb:/ipfs/QmacheASWsjhTGBpUi7sx3ij2JSakf32ATLmYnMZ4VKJrj\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -150,6 +150,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -214,6 +222,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -335,10 +351,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -839,10 +855,10 @@ "license": "MIT" }, "script/DeployAll.s.sol": { - "keccak256": "0xf8b030e21f0c302c16f7914492efd5cf376f6c0c0785014174a942983121faca", + "keccak256": "0xcc5f17fab99c9ef2da3ebebbb0d4cd055ee5a0e81d29575a9c61b1440b81ddde", "urls": [ - "bzz-raw://375812378cf51981c039d292fa32652a5045699c8bc0dbaddee1c3c3e078a322", - "dweb:/ipfs/QmQWnczp5mdb2KcWrkfAZZPitwbTiYqte8b1e6h8YM3FRC" + "bzz-raw://13af143dd4de242b399228ddbb6e7d8e0fb91363164a29e4b4bbf8a16206e006", + "dweb:/ipfs/QmacheASWsjhTGBpUi7sx3ij2JSakf32ATLmYnMZ4VKJrj" ], "license": "UNLICENSED" } @@ -851,103 +867,103 @@ }, "ast": { "absolutePath": "script/DeployAll.s.sol", - "id": 68149, + "id": 68935, "exportedSymbols": { "Allowlist": [ - 10353 + 11104 ], "AutID": [ 1016 ], "DeployScript": [ - 68148 + 68934 ], "IAllowlist": [ - 10439 + 11190 ], "IAutID": [ 1194 ], "IModuleRegistry": [ - 4295 + 5018 ], "INovaRegistry": [ - 5711 + 6462 ], "IPluginRegistry": [ - 8823 + 9574 ], "LocalReputation": [ 2915 ], "ModuleRegistry": [ - 4488 + 5211 ], "Nova": [ - 4940 + 5691 ], "NovaRegistry": [ - 5370 + 6121 ], "PluginRegistry": [ - 6344 + 7095 ], "SWLegacyDAO": [ - 3996 + 4719 ], "Script": [ - 12845 + 13596 ], "ScriptBase": [ - 12806 + 13557 ], "StdChains": [ - 15001 + 15752 ], "StdCheatsSafe": [ - 17061 + 17812 ], "StdStorage": [ - 18929 + 19680 ], "StdStyle": [ - 21779 + 22530 ], "StdUtils": [ - 22627 + 23378 ], "TrustedForwarder": [ - 4009 + 4732 ], "VmSafe": [ - 23899 + 24650 ], "console": [ - 32435 + 33186 ], "console2": [ - 40560 + 41311 ], "safeconsole": [ - 53798 + 54549 ], "stdJson": [ - 18755 + 19506 ], "stdMath": [ - 18897 + 19648 ], "stdStorageSafe": [ - 19977 + 20728 ] }, "nodeType": "SourceUnit", - "src": "39:9183:109", + "src": "39:9626:122", "nodes": [ { - "id": 67551, + "id": 68302, "nodeType": "PragmaDirective", - "src": "39:23:109", + "src": "39:23:122", "nodes": [], "literals": [ "solidity", @@ -956,24 +972,24 @@ ] }, { - "id": 67553, + "id": 68304, "nodeType": "ImportDirective", - "src": "64:48:109", + "src": "64:48:122", "nodes": [], "absolutePath": "contracts/nova/Nova.sol", "file": "../contracts/nova/Nova.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 4941, + "scope": 68935, + "sourceUnit": 5692, "symbolAliases": [ { "foreign": { - "id": 67552, + "id": 68303, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4940, - "src": "72:4:109", + "referencedDeclaration": 5691, + "src": "72:4:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -982,36 +998,36 @@ "unitAlias": "" }, { - "id": 67556, + "id": 68307, "nodeType": "ImportDirective", - "src": "113:79:109", + "src": "113:79:122", "nodes": [], "absolutePath": "contracts/nova/NovaRegistry.sol", "file": "../contracts/nova/NovaRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 5371, + "scope": 68935, + "sourceUnit": 6122, "symbolAliases": [ { "foreign": { - "id": 67554, + "id": 68305, "name": "NovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5370, - "src": "121:12:109", + "referencedDeclaration": 6121, + "src": "121:12:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 67555, + "id": 68306, "name": "INovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5711, - "src": "135:13:109", + "referencedDeclaration": 6462, + "src": "135:13:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1020,36 +1036,36 @@ "unitAlias": "" }, { - "id": 67559, + "id": 68310, "nodeType": "ImportDirective", - "src": "193:97:109", + "src": "193:97:122", "nodes": [], "absolutePath": "contracts/modules/registry/ModuleRegistry.sol", "file": "../contracts/modules/registry/ModuleRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 4489, + "scope": 68935, + "sourceUnit": 5212, "symbolAliases": [ { "foreign": { - "id": 67557, + "id": 68308, "name": "ModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4488, - "src": "201:14:109", + "referencedDeclaration": 5211, + "src": "201:14:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 67558, + "id": 68309, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4295, - "src": "217:15:109", + "referencedDeclaration": 5018, + "src": "217:15:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1058,36 +1074,36 @@ "unitAlias": "" }, { - "id": 67562, + "id": 68313, "nodeType": "ImportDirective", - "src": "291:88:109", + "src": "291:88:122", "nodes": [], "absolutePath": "contracts/plugins/PluginRegistry.sol", "file": "../contracts/plugins/PluginRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 6345, + "scope": 68935, + "sourceUnit": 7096, "symbolAliases": [ { "foreign": { - "id": 67560, + "id": 68311, "name": "PluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6344, - "src": "299:14:109", + "referencedDeclaration": 7095, + "src": "299:14:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 67561, + "id": 68312, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8823, - "src": "315:15:109", + "referencedDeclaration": 9574, + "src": "315:15:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1096,36 +1112,36 @@ "unitAlias": "" }, { - "id": 67565, + "id": 68316, "nodeType": "ImportDirective", - "src": "380:53:109", + "src": "380:53:122", "nodes": [], "absolutePath": "contracts/AutID.sol", "file": "../contracts/AutID.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, + "scope": 68935, "sourceUnit": 1017, "symbolAliases": [ { "foreign": { - "id": 67563, + "id": 68314, "name": "AutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, - "src": "388:5:109", + "src": "388:5:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 67564, + "id": 68315, "name": "IAutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, - "src": "395:6:109", + "src": "395:6:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1134,24 +1150,24 @@ "unitAlias": "" }, { - "id": 67567, + "id": 68318, "nodeType": "ImportDirective", - "src": "434:69:109", + "src": "434:69:122", "nodes": [], "absolutePath": "contracts/mocks/SWLegacyCommunity.sol", "file": "../contracts/mocks/SWLegacyCommunity.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 3997, + "scope": 68935, + "sourceUnit": 4720, "symbolAliases": [ { "foreign": { - "id": 67566, + "id": 68317, "name": "SWLegacyDAO", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3996, - "src": "442:11:109", + "referencedDeclaration": 4719, + "src": "442:11:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1160,24 +1176,24 @@ "unitAlias": "" }, { - "id": 67569, + "id": 68320, "nodeType": "ImportDirective", - "src": "504:65:109", + "src": "504:65:122", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, + "scope": 68935, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 67568, + "id": 68319, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "512:15:109", + "src": "512:15:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1186,24 +1202,24 @@ "unitAlias": "" }, { - "id": 67571, + "id": 68322, "nodeType": "ImportDirective", - "src": "570:73:109", + "src": "570:73:122", "nodes": [], "absolutePath": "contracts/mocks/TrustedForwarder.sol", "file": "../contracts/mocks/TrustedForwarder.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 4010, + "scope": 68935, + "sourceUnit": 4733, "symbolAliases": [ { "foreign": { - "id": 67570, + "id": 68321, "name": "TrustedForwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4009, - "src": "578:16:109", + "referencedDeclaration": 4732, + "src": "578:16:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1212,36 +1228,36 @@ "unitAlias": "" }, { - "id": 67574, + "id": 68325, "nodeType": "ImportDirective", - "src": "645:71:109", + "src": "645:71:122", "nodes": [], "absolutePath": "contracts/utils/Allowlist.sol", "file": "../contracts/utils/Allowlist.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 10354, + "scope": 68935, + "sourceUnit": 11105, "symbolAliases": [ { "foreign": { - "id": 67572, + "id": 68323, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "653:10:109", + "referencedDeclaration": 11190, + "src": "653:10:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 67573, + "id": 68324, "name": "Allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10353, - "src": "665:9:109", + "referencedDeclaration": 11104, + "src": "665:9:122", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1250,33 +1266,33 @@ "unitAlias": "" }, { - "id": 67575, + "id": 68326, "nodeType": "ImportDirective", - "src": "718:30:109", + "src": "718:30:122", "nodes": [], "absolutePath": "lib/forge-std/src/Script.sol", "file": "forge-std/Script.sol", "nameLocation": "-1:-1:-1", - "scope": 68149, - "sourceUnit": 12846, + "scope": 68935, + "sourceUnit": 13597, "symbolAliases": [], "unitAlias": "" }, { - "id": 68148, + "id": 68934, "nodeType": "ContractDefinition", - "src": "750:8471:109", + "src": "750:8914:122", "nodes": [ { - "id": 67579, + "id": 68330, "nodeType": "VariableDeclaration", - "src": "788:30:109", + "src": "788:30:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "biconomyTrustedForward", - "nameLocation": "796:22:109", - "scope": 68148, + "nameLocation": "796:22:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1284,10 +1300,10 @@ "typeString": "address" }, "typeName": { - "id": 67578, + "id": 68329, "name": "address", "nodeType": "ElementaryTypeName", - "src": "788:7:109", + "src": "788:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1297,15 +1313,15 @@ "visibility": "internal" }, { - "id": 67581, + "id": 68332, "nodeType": "VariableDeclaration", - "src": "824:15:109", + "src": "824:15:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "chainID", - "nameLocation": "832:7:109", - "scope": 68148, + "nameLocation": "832:7:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1313,10 +1329,10 @@ "typeString": "uint256" }, "typeName": { - "id": 67580, + "id": 68331, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "824:7:109", + "src": "824:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1325,21 +1341,21 @@ "visibility": "internal" }, { - "id": 67585, + "id": 68336, "nodeType": "VariableDeclaration", - "src": "899:95:109", + "src": "899:95:122", "nodes": [], "constant": false, "documentation": { - "id": 67582, + "id": 68333, "nodeType": "StructuredDocumentation", - "src": "846:48:109", + "src": "846:48:122", "text": "plugin definition hardcoded init metadatauri" }, "mutability": "mutable", "name": "onboardingIpfsUrl", - "nameLocation": "906:17:109", - "scope": 68148, + "nameLocation": "906:17:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1347,10 +1363,10 @@ "typeString": "string" }, "typeName": { - "id": 67583, + "id": 68334, "name": "string", "nodeType": "ElementaryTypeName", - "src": "899:6:109", + "src": "899:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1358,14 +1374,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b72656967336777686d7261656c6a756e656b3672773376796e73627861706d77646d747a616f7636757763737134717a3674326b6d6e79", - "id": 67584, + "id": 68335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "926:68:109", + "src": "926:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_26d44c6bb46f0a1a2ab50124c311d07cf62c3f25d5fc49436c0191d87f630b5d", "typeString": "literal_string \"ipfs://bafkreig3gwhmraeljunek6rw3vynsbxapmwdmtzaov6uwcsq4qz6t2kmny\"" @@ -1375,15 +1391,15 @@ "visibility": "internal" }, { - "id": 67588, + "id": 68339, "nodeType": "VariableDeclaration", - "src": "1000:88:109", + "src": "1000:88:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "discordUrl", - "nameLocation": "1007:10:109", - "scope": 68148, + "nameLocation": "1007:10:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1391,10 +1407,10 @@ "typeString": "string" }, "typeName": { - "id": 67586, + "id": 68337, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1000:6:109", + "src": "1000:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1402,14 +1418,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b72656963367335326561766d737433773776656273647a6c373661353577626d336173713671756a75626a683678683333323375376634", - "id": 67587, + "id": 68338, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1020:68:109", + "src": "1020:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4dfe18615a0054d30af6eb0b1dc861832799c46accf461e3c913cbb5d0e98bec", "typeString": "literal_string \"ipfs://bafkreic6s52eavmst3w7vebsdzl76a55wbm3asq6qujubjh6xh3323u7f4\"" @@ -1419,15 +1435,15 @@ "visibility": "internal" }, { - "id": 67591, + "id": 68342, "nodeType": "VariableDeclaration", - "src": "1094:89:109", + "src": "1094:89:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "openTaskUrl", - "nameLocation": "1101:11:109", - "scope": 68148, + "nameLocation": "1101:11:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1435,10 +1451,10 @@ "typeString": "string" }, "typeName": { - "id": 67589, + "id": 68340, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1094:6:109", + "src": "1094:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1446,14 +1462,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b7265696534356e747778367472686c34617a6169786a367374363472636768726e736366326d6e6c6168696863747269366f7370677465", - "id": 67590, + "id": 68341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1115:68:109", + "src": "1115:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_84696ab29462bef9185cda348d843622965caef91aef40f060a5e1533fdf942f", "typeString": "literal_string \"ipfs://bafkreie45ntwx6trhl4azaixj6st64rcghrnscf2mnlahihctri6ospgte\"" @@ -1463,15 +1479,15 @@ "visibility": "internal" }, { - "id": 67594, + "id": 68345, "nodeType": "VariableDeclaration", - "src": "1189:85:109", + "src": "1189:85:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "quizUrl", - "nameLocation": "1196:7:109", - "scope": 68148, + "nameLocation": "1196:7:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1479,10 +1495,10 @@ "typeString": "string" }, "typeName": { - "id": 67592, + "id": 68343, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1189:6:109", + "src": "1189:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1490,14 +1506,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b726569676e3336327578626678666d637a71643733616363797176666c6c6d66357034376c787975626d6478796c68696e357864617a69", - "id": 67593, + "id": 68344, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1206:68:109", + "src": "1206:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3ddd1cdfc0586b353f94085d53026d1c8e485741aabc660433899662a09864da", "typeString": "literal_string \"ipfs://bafkreign362uxbfxfmczqd73accyqvfllmf5p47lxyubmdxylhin5xdazi\"" @@ -1507,15 +1523,15 @@ "visibility": "internal" }, { - "id": 67597, + "id": 68348, "nodeType": "VariableDeclaration", - "src": "1280:90:109", + "src": "1280:90:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "socialBotUrl", - "nameLocation": "1287:12:109", - "scope": 68148, + "nameLocation": "1287:12:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1523,10 +1539,10 @@ "typeString": "string" }, "typeName": { - "id": 67595, + "id": 68346, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1280:6:109", + "src": "1280:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1534,14 +1550,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b766a6a617561786b756d64337872656a707671627437767a64656b7734767a67767179", - "id": 67596, + "id": 68347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1302:68:109", + "src": "1302:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f871abe1e6d5527866099706a6dd32093fc53e5593c506731663816f303aeee8", "typeString": "literal_string \"ipfs://bafkreidz4ik2na4wj54ha3kvjjauaxkumd3xrejpvqbt7vzdekw4vzgvqy\"" @@ -1551,15 +1567,15 @@ "visibility": "internal" }, { - "id": 67600, + "id": 68351, "nodeType": "VariableDeclaration", - "src": "1376:96:109", + "src": "1376:96:122", "nodes": [], "constant": false, "mutability": "mutable", "name": "transactionTaskUrl", - "nameLocation": "1383:18:109", - "scope": 68148, + "nameLocation": "1383:18:122", + "scope": 68934, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1567,10 +1583,10 @@ "typeString": "string" }, "typeName": { - "id": 67598, + "id": 68349, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1376:6:109", + "src": "1376:6:122", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1578,14 +1594,14 @@ }, "value": { "hexValue": "697066733a2f2f6261666b726569646c7278723537783766337066656e33356b7a6f7271786e6b66617475633562726f6667707a7474793371693565697336663661", - "id": 67599, + "id": 68350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1404:68:109", + "src": "1404:68:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0a4f55cafd3a1135ecad78cac4957e1ad3b9eaef203b526537b455a9ebc4348e", "typeString": "literal_string \"ipfs://bafkreidlrxr57x7f3pfen35kzorqxnkfatuc5brofgpztty3qi5eis6f6a\"" @@ -1595,30 +1611,30 @@ "visibility": "internal" }, { - "id": 67679, + "id": 68430, "nodeType": "FunctionDefinition", - "src": "1479:1981:109", + "src": "1479:1981:122", "nodes": [], "body": { - "id": 67678, + "id": 68429, "nodeType": "Block", - "src": "1503:1957:109", + "src": "1503:1957:122", "nodes": [], "statements": [ { "expression": { - "id": 67606, + "id": 68357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 67603, + "id": 68354, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67581, - "src": "1513:7:109", + "referencedDeclaration": 68332, + "src": "1513:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1628,40 +1644,40 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 67604, + "id": 68355, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "1523:5:109", + "src": "1523:5:122", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 67605, + "id": 68356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1529:7:109", + "memberLocation": "1529:7:122", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "1523:13:109", + "src": "1523:13:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1513:23:109", + "src": "1513:23:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67607, + "id": 68358, "nodeType": "ExpressionStatement", - "src": "1513:23:109" + "src": "1513:23:122" }, { "condition": { @@ -1669,18 +1685,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 67610, + "id": 68361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 67608, + "id": 68359, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67581, - "src": "1550:7:109", + "referencedDeclaration": 68332, + "src": "1550:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1690,43 +1706,43 @@ "operator": "==", "rightExpression": { "hexValue": "3830303031", - "id": 67609, + "id": 68360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1561:5:109", + "src": "1561:5:122", "typeDescriptions": { "typeIdentifier": "t_rational_80001_by_1", "typeString": "int_const 80001" }, "value": "80001" }, - "src": "1550:16:109", + "src": "1550:16:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 67615, + "id": 68366, "nodeType": "IfStatement", - "src": "1546:89:109", + "src": "1546:89:122", "trueBody": { "expression": { - "id": 67613, + "id": 68364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 67611, + "id": 68362, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67579, - "src": "1568:22:109", + "referencedDeclaration": 68330, + "src": "1568:22:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1736,29 +1752,29 @@ "operator": "=", "rightHandSide": { "hexValue": "307836393031353931324141333337323062383432644344366143303539456436323346323864396637", - "id": 67612, + "id": 68363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1593:42:109", + "src": "1593:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x69015912AA33720b842dCD6aC059Ed623F28d9f7" }, - "src": "1568:67:109", + "src": "1568:67:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 67614, + "id": 68365, "nodeType": "ExpressionStatement", - "src": "1568:67:109" + "src": "1568:67:122" } }, { @@ -1767,18 +1783,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 67618, + "id": 68369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 67616, + "id": 68367, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67581, - "src": "1649:7:109", + "referencedDeclaration": 68332, + "src": "1649:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1788,43 +1804,43 @@ "operator": "==", "rightExpression": { "hexValue": "35", - "id": 67617, + "id": 68368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1660:1:109", + "src": "1660:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, - "src": "1649:12:109", + "src": "1649:12:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 67623, + "id": 68374, "nodeType": "IfStatement", - "src": "1645:85:109", + "src": "1645:85:122", "trueBody": { "expression": { - "id": 67621, + "id": 68372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 67619, + "id": 68370, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67579, - "src": "1663:22:109", + "referencedDeclaration": 68330, + "src": "1663:22:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1834,29 +1850,29 @@ "operator": "=", "rightHandSide": { "hexValue": "307845303431363038393232643036613446323643306434633237643862434430316461663166373932", - "id": 67620, + "id": 68371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1688:42:109", + "src": "1688:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0xE041608922d06a4F26C0d4c27d8bCD01daf1f792" }, - "src": "1663:67:109", + "src": "1663:67:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 67622, + "id": 68373, "nodeType": "ExpressionStatement", - "src": "1663:67:109" + "src": "1663:67:122" } }, { @@ -1865,18 +1881,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 67626, + "id": 68377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 67624, + "id": 68375, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67581, - "src": "1744:7:109", + "referencedDeclaration": 68332, + "src": "1744:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1886,43 +1902,43 @@ "operator": "==", "rightExpression": { "hexValue": "3331333337", - "id": 67625, + "id": 68376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1755:5:109", + "src": "1755:5:122", "typeDescriptions": { "typeIdentifier": "t_rational_31337_by_1", "typeString": "int_const 31337" }, "value": "31337" }, - "src": "1744:16:109", + "src": "1744:16:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 67637, + "id": 68388, "nodeType": "IfStatement", - "src": "1740:78:109", + "src": "1740:78:122", "trueBody": { "expression": { - "id": 67635, + "id": 68386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 67627, + "id": 68378, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67579, - "src": "1762:22:109", + "referencedDeclaration": 68330, + "src": "1762:22:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1936,39 +1952,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 67632, + "id": 68383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1795:20:109", + "src": "1795:20:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_TrustedForwarder_$4009_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_TrustedForwarder_$4732_$", "typeString": "function () returns (contract TrustedForwarder)" }, "typeName": { - "id": 67631, + "id": 68382, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67630, + "id": 68381, "name": "TrustedForwarder", "nameLocations": [ - "1799:16:109" + "1799:16:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4009, - "src": "1799:16:109" + "referencedDeclaration": 4732, + "src": "1799:16:122" }, - "referencedDeclaration": 4009, - "src": "1799:16:109", + "referencedDeclaration": 4732, + "src": "1799:16:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_TrustedForwarder_$4009", + "typeIdentifier": "t_contract$_TrustedForwarder_$4732", "typeString": "contract TrustedForwarder" } } }, - "id": 67633, + "id": 68384, "isConstant": false, "isLValue": false, "isPure": false, @@ -1977,10 +1993,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1795:22:109", + "src": "1795:22:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_TrustedForwarder_$4009", + "typeIdentifier": "t_contract$_TrustedForwarder_$4732", "typeString": "contract TrustedForwarder" } } @@ -1988,30 +2004,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_TrustedForwarder_$4009", + "typeIdentifier": "t_contract$_TrustedForwarder_$4732", "typeString": "contract TrustedForwarder" } ], - "id": 67629, + "id": 68380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1787:7:109", + "src": "1787:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67628, + "id": 68379, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1787:7:109", + "src": "1787:7:122", "typeDescriptions": {} } }, - "id": 67634, + "id": 68385, "isConstant": false, "isLValue": false, "isPure": false, @@ -2020,22 +2036,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1787:31:109", + "src": "1787:31:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1762:56:109", + "src": "1762:56:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 67636, + "id": 68387, "nodeType": "ExpressionStatement", - "src": "1762:56:109" + "src": "1762:56:122" } }, { @@ -2044,18 +2060,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 67643, + "id": 68394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 67638, + "id": 68389, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67579, - "src": "1833:22:109", + "referencedDeclaration": 68330, + "src": "1833:22:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2067,14 +2083,14 @@ "arguments": [ { "hexValue": "30", - "id": 67641, + "id": 68392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1867:1:109", + "src": "1867:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2089,26 +2105,26 @@ "typeString": "int_const 0" } ], - "id": 67640, + "id": 68391, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1859:7:109", + "src": "1859:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67639, + "id": 68390, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1859:7:109", + "src": "1859:7:122", "typeDescriptions": {} } }, - "id": 67642, + "id": 68393, "isConstant": false, "isLValue": false, "isPure": true, @@ -2117,40 +2133,40 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1859:10:109", + "src": "1859:10:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1833:36:109", + "src": "1833:36:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 67657, + "id": 68408, "nodeType": "IfStatement", - "src": "1829:180:109", + "src": "1829:180:122", "trueBody": { - "id": 67656, + "id": 68407, "nodeType": "Block", - "src": "1871:138:109", + "src": "1871:138:122", "statements": [ { "expression": { "arguments": [ { "hexValue": "4552524f523a204f6e6c79204d756d62616920616e6420476f65726c6920546573746e65747320537570706f72746564", - "id": 67647, + "id": 68398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1897:50:109", + "src": "1897:50:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1971d8ca9695abf86f017775858c4a9160f2a2de732898a045f7987ed2d6dacb", "typeString": "literal_string \"ERROR: Only Mumbai and Goerli Testnets Supported\"" @@ -2166,33 +2182,33 @@ } ], "expression": { - "id": 67644, + "id": 68395, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "1885:7:109", + "referencedDeclaration": 33186, + "src": "1885:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 67646, + "id": 68397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1893:3:109", + "memberLocation": "1893:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "1885:11:109", + "referencedDeclaration": 25717, + "src": "1885:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 67648, + "id": 68399, "isConstant": false, "isLValue": false, "isPure": false, @@ -2201,30 +2217,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1885:63:109", + "src": "1885:63:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67649, + "id": 68400, "nodeType": "ExpressionStatement", - "src": "1885:63:109" + "src": "1885:63:122" }, { "expression": { "arguments": [ { "hexValue": "53656520736372697074732f4465706c6f79416c6c", - "id": 67653, + "id": 68404, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1974:23:109", + "src": "1974:23:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c0597341c83c582b2b156804b41c77fbc2c7e6dde5185433ccbafeecd4706d7c", "typeString": "literal_string \"See scripts/DeployAll\"" @@ -2240,33 +2256,33 @@ } ], "expression": { - "id": 67650, + "id": 68401, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "1962:7:109", + "referencedDeclaration": 33186, + "src": "1962:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 67652, + "id": 68403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1970:3:109", + "memberLocation": "1970:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "1962:11:109", + "referencedDeclaration": 25717, + "src": "1962:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 67654, + "id": 68405, "isConstant": false, "isLValue": false, "isPure": false, @@ -2275,16 +2291,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1962:36:109", + "src": "1962:36:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67655, + "id": 68406, "nodeType": "ExpressionStatement", - "src": "1962:36:109" + "src": "1962:36:122" } ] } @@ -2294,14 +2310,14 @@ "arguments": [ { "hexValue": "6465706c6f796d656e74732e747874", - "id": 67661, + "id": 68412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2044:17:109", + "src": "2044:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa4fd90b36d5b6a58f7c24a6bc1cd84c87e642274bb9e0432374b29e626ca20e", "typeString": "literal_string \"deployments.txt\"" @@ -2312,14 +2328,14 @@ "arguments": [ { "hexValue": "200a", - "id": 67665, + "id": 68416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:5:109", + "src": "2089:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -2328,14 +2344,14 @@ }, { "hexValue": "200a", - "id": 67666, + "id": 68417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2096:5:109", + "src": "2096:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -2344,14 +2360,14 @@ }, { "hexValue": "2323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a", - "id": 67667, + "id": 68418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2103:73:109", + "src": "2103:73:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cb1be83ad0e05034fb6588f0227c8e0bd60cfeae295864f0c6b763e596e5d509", "typeString": "literal_string hex\"2323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a\"" @@ -2375,40 +2391,40 @@ } ], "expression": { - "id": 67663, + "id": 68414, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2075:6:109", + "src": "2075:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67662, + "id": 68413, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2075:6:109", + "src": "2075:6:122", "typeDescriptions": {} } }, - "id": 67664, + "id": 68415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2082:6:109", + "memberLocation": "2082:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "2075:13:109", + "src": "2075:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67668, + "id": 68419, "isConstant": false, "isLValue": false, "isPure": false, @@ -2417,7 +2433,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2075:102:109", + "src": "2075:102:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -2437,33 +2453,33 @@ } ], "expression": { - "id": 67658, + "id": 68409, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2018:2:109", + "referencedDeclaration": 13541, + "src": "2018:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67660, + "id": 68411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2021:9:109", + "memberLocation": "2021:9:122", "memberName": "writeFile", "nodeType": "MemberAccess", - "referencedDeclaration": 23227, - "src": "2018:12:109", + "referencedDeclaration": 23978, + "src": "2018:12:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory) external" } }, - "id": 67669, + "id": 68420, "isConstant": false, "isLValue": false, "isPure": false, @@ -2472,30 +2488,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2018:169:109", + "src": "2018:169:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67670, + "id": 68421, "nodeType": "ExpressionStatement", - "src": "2018:169:109" + "src": "2018:169:122" }, { "expression": { "arguments": [ { "hexValue": "6465706c6f796d656e74732e747874", - "id": 67674, + "id": 68425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2224:17:109", + "src": "2224:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa4fd90b36d5b6a58f7c24a6bc1cd84c87e642274bb9e0432374b29e626ca20e", "typeString": "literal_string \"deployments.txt\"" @@ -2504,14 +2520,14 @@ }, { "hexValue": "202323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a202323232323232323232323232323232323232323232323204445504c4f594d454e5420414444524553534553202323232323232323232323232323232323232323232323232323200a202323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a", - "id": 67675, + "id": 68426, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2255:227:109", + "src": "2255:227:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_600e069ef25831dd973abf91296e1c77bd1908c6ee25ec2451cf58d5c489ce44", "typeString": "literal_string hex\"202323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a202323232323232323232323232323232323232323232323204445504c4f594d454e5420414444524553534553202323232323232323232323232323232323232323232323232323200a202323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a\"" @@ -2531,33 +2547,33 @@ } ], "expression": { - "id": 67671, + "id": 68422, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2198:2:109", + "referencedDeclaration": 13541, + "src": "2198:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67673, + "id": 68424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2201:9:109", + "memberLocation": "2201:9:122", "memberName": "writeLine", "nodeType": "MemberAccess", - "referencedDeclaration": 23241, - "src": "2198:12:109", + "referencedDeclaration": 23992, + "src": "2198:12:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory) external" } }, - "id": 67676, + "id": 68427, "isConstant": false, "isLValue": false, "isPure": false, @@ -2566,16 +2582,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2198:294:109", + "src": "2198:294:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67677, + "id": 68428, "nodeType": "ExpressionStatement", - "src": "2198:294:109" + "src": "2198:294:122" } ] }, @@ -2584,39 +2600,39 @@ "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "1488:5:109", + "nameLocation": "1488:5:122", "parameters": { - "id": 67601, + "id": 68352, "nodeType": "ParameterList", "parameters": [], - "src": "1493:2:109" + "src": "1493:2:122" }, "returnParameters": { - "id": 67602, + "id": 68353, "nodeType": "ParameterList", "parameters": [], - "src": "1503:0:109" + "src": "1503:0:122" }, - "scope": 68148, + "scope": 68934, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 68147, + "id": 68933, "nodeType": "FunctionDefinition", - "src": "3466:5753:109", + "src": "3466:6193:122", "nodes": [], "body": { - "id": 68146, + "id": 68932, "nodeType": "Block", - "src": "3488:5731:109", + "src": "3488:6171:122", "nodes": [], "statements": [ { - "id": 67736, + "id": 68487, "nodeType": "Block", - "src": "3498:750:109", + "src": "3498:750:122", "statements": [ { "expression": { @@ -2625,14 +2641,14 @@ "arguments": [ { "hexValue": "50564b5f4131", - "id": 67687, + "id": 68438, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3541:8:109", + "src": "3541:8:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c90e4c31eb3f5711ec52480a807196fe521a97d0d7706bb93b0b3ad8489d3d37", "typeString": "literal_string \"PVK_A1\"" @@ -2648,33 +2664,33 @@ } ], "expression": { - "id": 67685, + "id": 68436, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3530:2:109", + "referencedDeclaration": 13541, + "src": "3530:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67686, + "id": 68437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3533:7:109", + "memberLocation": "3533:7:122", "memberName": "envUint", "nodeType": "MemberAccess", - "referencedDeclaration": 22864, - "src": "3530:10:109", + "referencedDeclaration": 23615, + "src": "3530:10:122", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) view external returns (uint256)" } }, - "id": 67688, + "id": 68439, "isConstant": false, "isLValue": false, "isPure": false, @@ -2683,7 +2699,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3530:20:109", + "src": "3530:20:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2699,33 +2715,33 @@ } ], "expression": { - "id": 67682, + "id": 68433, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3512:2:109", + "referencedDeclaration": 13541, + "src": "3512:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67684, + "id": 68435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3515:14:109", + "memberLocation": "3515:14:122", "memberName": "startBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23191, - "src": "3512:17:109", + "referencedDeclaration": 23942, + "src": "3512:17:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 67689, + "id": 68440, "isConstant": false, "isLValue": false, "isPure": false, @@ -2734,30 +2750,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3512:39:109", + "src": "3512:39:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67690, + "id": 68441, "nodeType": "ExpressionStatement", - "src": "3512:39:109" + "src": "3512:39:122" }, { "expression": { "arguments": [ { "hexValue": "2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d", - "id": 67694, + "id": 68445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3578:53:109", + "src": "3578:53:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7656b077f8d4b7c1650bb4a59f60bde5ead5bfa8a0bd4f4cb9f7ba3126abd627", "typeString": "literal_string \"---------------------------------------------------\"" @@ -2773,33 +2789,33 @@ } ], "expression": { - "id": 67691, + "id": 68442, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "3566:7:109", + "referencedDeclaration": 33186, + "src": "3566:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 67693, + "id": 68444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3574:3:109", + "memberLocation": "3574:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "3566:11:109", + "referencedDeclaration": 25717, + "src": "3566:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 67695, + "id": 68446, "isConstant": false, "isLValue": false, "isPure": false, @@ -2808,30 +2824,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3566:66:109", + "src": "3566:66:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67696, + "id": 68447, "nodeType": "ExpressionStatement", - "src": "3566:66:109" + "src": "3566:66:122" }, { "expression": { "arguments": [ { "hexValue": "4465706c6f79696e6720746f206e6574776f726b2049443a2020", - "id": 67700, + "id": 68451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3658:28:109", + "src": "3658:28:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b89818780029ff6eed9a62b8293196f2673041dd88d34e9c0b5e13cfb5a6ed3", "typeString": "literal_string \"Deploying to network ID: \"" @@ -2840,26 +2856,26 @@ }, { "expression": { - "id": 67701, + "id": 68452, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "3688:5:109", + "src": "3688:5:122", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 67702, + "id": 68453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3694:7:109", + "memberLocation": "3694:7:122", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "3688:13:109", + "src": "3688:13:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2878,33 +2894,33 @@ } ], "expression": { - "id": 67697, + "id": 68448, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "3646:7:109", + "referencedDeclaration": 33186, + "src": "3646:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 67699, + "id": 68450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3654:3:109", + "memberLocation": "3654:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25079, - "src": "3646:11:109", + "referencedDeclaration": 25830, + "src": "3646:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (string memory,uint256) view" } }, - "id": 67703, + "id": 68454, "isConstant": false, "isLValue": false, "isPure": false, @@ -2913,30 +2929,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3646:56:109", + "src": "3646:56:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67704, + "id": 68455, "nodeType": "ExpressionStatement", - "src": "3646:56:109" + "src": "3646:56:122" }, { "expression": { "arguments": [ { "hexValue": "5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "id": 67708, + "id": 68459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3728:48:109", + "src": "3728:48:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_974a4998ccfb5bf65b058bf6ca1ad3612ffe56fa85ebfb1600d53c057a19d5c6", "typeString": "literal_string \"______________________________________________\"" @@ -2952,33 +2968,33 @@ } ], "expression": { - "id": 67705, + "id": 68456, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "3716:7:109", + "referencedDeclaration": 33186, + "src": "3716:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 67707, + "id": 68458, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3724:3:109", + "memberLocation": "3724:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "3716:11:109", + "referencedDeclaration": 25717, + "src": "3716:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 67709, + "id": 68460, "isConstant": false, "isLValue": false, "isPure": false, @@ -2987,30 +3003,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3716:61:109", + "src": "3716:61:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67710, + "id": 68461, "nodeType": "ExpressionStatement", - "src": "3716:61:109" + "src": "3716:61:122" }, { "expression": { "arguments": [ { "hexValue": "6465706c6f796d656e74732e747874", - "id": 67714, + "id": 68465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3822:17:109", + "src": "3822:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa4fd90b36d5b6a58f7c24a6bc1cd84c87e642274bb9e0432374b29e626ca20e", "typeString": "literal_string \"deployments.txt\"" @@ -3021,14 +3037,14 @@ "arguments": [ { "hexValue": "4465706c6f79656420746f206e6574776f726b2049443a2020", - "id": 67718, + "id": 68469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3892:27:109", + "src": "3892:27:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6d333767d763be76d6c6317ba775857e05448e840544c8388132d41143c340ed", "typeString": "literal_string \"Deployed to network ID: \"" @@ -3039,26 +3055,26 @@ "arguments": [ { "expression": { - "id": 67721, + "id": 68472, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "3953:5:109", + "src": "3953:5:122", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 67722, + "id": 68473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3959:7:109", + "memberLocation": "3959:7:122", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "3953:13:109", + "src": "3953:13:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3073,33 +3089,33 @@ } ], "expression": { - "id": 67719, + "id": 68470, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3941:2:109", + "referencedDeclaration": 13541, + "src": "3941:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67720, + "id": 68471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3944:8:109", + "memberLocation": "3944:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "3941:11:109", + "referencedDeclaration": 24129, + "src": "3941:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 67723, + "id": 68474, "isConstant": false, "isLValue": false, "isPure": false, @@ -3108,7 +3124,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3941:26:109", + "src": "3941:26:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -3117,14 +3133,14 @@ }, { "hexValue": "200a", - "id": 67724, + "id": 68475, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3989:5:109", + "src": "3989:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -3133,14 +3149,14 @@ }, { "hexValue": "41742074696d657374616d703a2020", - "id": 67725, + "id": 68476, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4016:17:109", + "src": "4016:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_100d0cffbe8df3d3176dd503db1f09f2b53b84b556477510125138068d3c742c", "typeString": "literal_string \"At timestamp: \"" @@ -3151,26 +3167,26 @@ "arguments": [ { "expression": { - "id": 67728, + "id": 68479, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "4067:5:109", + "src": "4067:5:122", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 67729, + "id": 68480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4073:9:109", + "memberLocation": "4073:9:122", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "4067:15:109", + "src": "4067:15:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3185,33 +3201,33 @@ } ], "expression": { - "id": 67726, + "id": 68477, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4055:2:109", + "referencedDeclaration": 13541, + "src": "4055:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67727, + "id": 68478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4058:8:109", + "memberLocation": "4058:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "4055:11:109", + "referencedDeclaration": 24129, + "src": "4055:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 67730, + "id": 68481, "isConstant": false, "isLValue": false, "isPure": false, @@ -3220,7 +3236,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4055:28:109", + "src": "4055:28:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -3229,14 +3245,14 @@ }, { "hexValue": "200a", - "id": 67731, + "id": 68482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4105:5:109", + "src": "4105:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -3245,14 +3261,14 @@ }, { "hexValue": "2323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a", - "id": 67732, + "id": 68483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4132:73:109", + "src": "4132:73:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cb1be83ad0e05034fb6588f0227c8e0bd60cfeae295864f0c6b763e596e5d509", "typeString": "literal_string hex\"2323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323200a\"" @@ -3292,40 +3308,40 @@ } ], "expression": { - "id": 67716, + "id": 68467, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3857:6:109", + "src": "3857:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67715, + "id": 68466, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3857:6:109", + "src": "3857:6:122", "typeDescriptions": {} } }, - "id": 67717, + "id": 68468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3864:6:109", + "memberLocation": "3864:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "3857:13:109", + "src": "3857:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67733, + "id": 68484, "isConstant": false, "isLValue": false, "isPure": false, @@ -3334,7 +3350,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3857:366:109", + "src": "3857:366:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -3354,33 +3370,33 @@ } ], "expression": { - "id": 67711, + "id": 68462, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3792:2:109", + "referencedDeclaration": 13541, + "src": "3792:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67713, + "id": 68464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3795:9:109", + "memberLocation": "3795:9:122", "memberName": "writeFile", "nodeType": "MemberAccess", - "referencedDeclaration": 23227, - "src": "3792:12:109", + "referencedDeclaration": 23978, + "src": "3792:12:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory) external" } }, - "id": 67734, + "id": 68485, "isConstant": false, "isLValue": false, "isPure": false, @@ -3389,33 +3405,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3792:445:109", + "src": "3792:445:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67735, + "id": 68486, "nodeType": "ExpressionStatement", - "src": "3792:445:109" + "src": "3792:445:122" } ] }, { "assignments": [ - 67738 + 68489 ], "declarations": [ { "constant": false, - "id": 67738, + "id": 68489, "mutability": "mutable", "name": "NovaLogicAddr", - "nameLocation": "4266:13:109", + "nameLocation": "4266:13:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4258:21:109", + "scope": 68932, + "src": "4258:21:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3423,10 +3439,10 @@ "typeString": "address" }, "typeName": { - "id": 67737, + "id": 68488, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4258:7:109", + "src": "4258:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3436,46 +3452,46 @@ "visibility": "internal" } ], - "id": 67746, + "id": 68497, "initialValue": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], - "id": 67743, + "id": 68494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4290:8:109", + "src": "4290:8:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Nova_$4940_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Nova_$5691_$", "typeString": "function () returns (contract Nova)" }, "typeName": { - "id": 67742, + "id": 68493, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67741, + "id": 68492, "name": "Nova", "nameLocations": [ - "4294:4:109" + "4294:4:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4940, - "src": "4294:4:109" + "referencedDeclaration": 5691, + "src": "4294:4:122" }, - "referencedDeclaration": 4940, - "src": "4294:4:109", + "referencedDeclaration": 5691, + "src": "4294:4:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } }, - "id": 67744, + "id": 68495, "isConstant": false, "isLValue": false, "isPure": false, @@ -3484,10 +3500,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4290:10:109", + "src": "4290:10:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } @@ -3495,30 +3511,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } ], - "id": 67740, + "id": 68491, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4282:7:109", + "src": "4282:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67739, + "id": 68490, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4282:7:109", + "src": "4282:7:122", "typeDescriptions": {} } }, - "id": 67745, + "id": 68496, "isConstant": false, "isLValue": false, "isPure": false, @@ -3527,7 +3543,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4282:19:109", + "src": "4282:19:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3535,22 +3551,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4258:43:109" + "src": "4258:43:122" }, { "assignments": [ - 67748 + 68499 ], "declarations": [ { "constant": false, - "id": 67748, + "id": 68499, "mutability": "mutable", "name": "LocalReputationAddr", - "nameLocation": "4319:19:109", + "nameLocation": "4319:19:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4311:27:109", + "scope": 68932, + "src": "4311:27:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3558,10 +3574,10 @@ "typeString": "address" }, "typeName": { - "id": 67747, + "id": 68498, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4311:7:109", + "src": "4311:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3571,46 +3587,46 @@ "visibility": "internal" } ], - "id": 67756, + "id": 68507, "initialValue": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], - "id": 67753, + "id": 68504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4349:19:109", + "src": "4349:19:122", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LocalReputation_$2915_$", "typeString": "function () returns (contract LocalReputation)" }, "typeName": { - "id": 67752, + "id": 68503, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67751, + "id": 68502, "name": "LocalReputation", "nameLocations": [ - "4353:15:109" + "4353:15:122" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "4353:15:109" + "src": "4353:15:122" }, "referencedDeclaration": 2915, - "src": "4353:15:109", + "src": "4353:15:122", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } } }, - "id": 67754, + "id": 68505, "isConstant": false, "isLValue": false, "isPure": false, @@ -3619,7 +3635,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4349:21:109", + "src": "4349:21:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", @@ -3634,26 +3650,26 @@ "typeString": "contract LocalReputation" } ], - "id": 67750, + "id": 68501, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4341:7:109", + "src": "4341:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67749, + "id": 68500, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4341:7:109", + "src": "4341:7:122", "typeDescriptions": {} } }, - "id": 67755, + "id": 68506, "isConstant": false, "isLValue": false, "isPure": false, @@ -3662,7 +3678,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4341:30:109", + "src": "4341:30:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3670,22 +3686,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4311:60:109" + "src": "4311:60:122" }, { "assignments": [ - 67758 + 68509 ], "declarations": [ { "constant": false, - "id": 67758, + "id": 68509, "mutability": "mutable", "name": "AUTid", - "nameLocation": "4389:5:109", + "nameLocation": "4389:5:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4381:13:109", + "scope": 68932, + "src": "4381:13:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3693,10 +3709,10 @@ "typeString": "address" }, "typeName": { - "id": 67757, + "id": 68508, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4381:7:109", + "src": "4381:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3706,46 +3722,46 @@ "visibility": "internal" } ], - "id": 67766, + "id": 68517, "initialValue": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], - "id": 67763, + "id": 68514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4405:9:109", + "src": "4405:9:122", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_AutID_$1016_$", "typeString": "function () returns (contract AutID)" }, "typeName": { - "id": 67762, + "id": 68513, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67761, + "id": 68512, "name": "AutID", "nameLocations": [ - "4409:5:109" + "4409:5:122" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1016, - "src": "4409:5:109" + "src": "4409:5:122" }, "referencedDeclaration": 1016, - "src": "4409:5:109", + "src": "4409:5:122", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" } } }, - "id": 67764, + "id": 68515, "isConstant": false, "isLValue": false, "isPure": false, @@ -3754,7 +3770,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4405:11:109", + "src": "4405:11:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", @@ -3769,26 +3785,26 @@ "typeString": "contract AutID" } ], - "id": 67760, + "id": 68511, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4397:7:109", + "src": "4397:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67759, + "id": 68510, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4397:7:109", + "src": "4397:7:122", "typeDescriptions": {} } }, - "id": 67765, + "id": 68516, "isConstant": false, "isLValue": false, "isPure": false, @@ -3797,7 +3813,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4397:20:109", + "src": "4397:20:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3805,22 +3821,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4381:36:109" + "src": "4381:36:122" }, { "assignments": [ - 67768 + 68519 ], "declarations": [ { "constant": false, - "id": 67768, + "id": 68519, "mutability": "mutable", "name": "AllowlistAddr", - "nameLocation": "4436:13:109", + "nameLocation": "4436:13:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4428:21:109", + "scope": 68932, + "src": "4428:21:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3828,10 +3844,10 @@ "typeString": "address" }, "typeName": { - "id": 67767, + "id": 68518, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4428:7:109", + "src": "4428:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3841,46 +3857,46 @@ "visibility": "internal" } ], - "id": 67776, + "id": 68527, "initialValue": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], - "id": 67773, + "id": 68524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4460:13:109", + "src": "4460:13:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Allowlist_$10353_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Allowlist_$11104_$", "typeString": "function () returns (contract Allowlist)" }, "typeName": { - "id": 67772, + "id": 68523, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67771, + "id": 68522, "name": "Allowlist", "nameLocations": [ - "4464:9:109" + "4464:9:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10353, - "src": "4464:9:109" + "referencedDeclaration": 11104, + "src": "4464:9:122" }, - "referencedDeclaration": 10353, - "src": "4464:9:109", + "referencedDeclaration": 11104, + "src": "4464:9:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } } }, - "id": 67774, + "id": 68525, "isConstant": false, "isLValue": false, "isPure": false, @@ -3889,10 +3905,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4460:15:109", + "src": "4460:15:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } } @@ -3900,30 +3916,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } ], - "id": 67770, + "id": 68521, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4452:7:109", + "src": "4452:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67769, + "id": 68520, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4452:7:109", + "src": "4452:7:122", "typeDescriptions": {} } }, - "id": 67775, + "id": 68526, "isConstant": false, "isLValue": false, "isPure": false, @@ -3932,7 +3948,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4452:24:109", + "src": "4452:24:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3940,22 +3956,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4428:48:109" + "src": "4428:48:122" }, { "assignments": [ - 67778 + 68529 ], "declarations": [ { "constant": false, - "id": 67778, + "id": 68529, "mutability": "mutable", "name": "ModuleRegistryAddr", - "nameLocation": "4494:18:109", + "nameLocation": "4494:18:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4486:26:109", + "scope": 68932, + "src": "4486:26:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3963,10 +3979,10 @@ "typeString": "address" }, "typeName": { - "id": 67777, + "id": 68528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4486:7:109", + "src": "4486:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3976,18 +3992,18 @@ "visibility": "internal" } ], - "id": 67787, + "id": 68538, "initialValue": { "arguments": [ { "arguments": [ { - "id": 67784, + "id": 68535, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "4542:13:109", + "referencedDeclaration": 68519, + "src": "4542:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4001,39 +4017,39 @@ "typeString": "address" } ], - "id": 67783, + "id": 68534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4523:18:109", + "src": "4523:18:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ModuleRegistry_$4488_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ModuleRegistry_$5211_$", "typeString": "function (address) returns (contract ModuleRegistry)" }, "typeName": { - "id": 67782, + "id": 68533, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67781, + "id": 68532, "name": "ModuleRegistry", "nameLocations": [ - "4527:14:109" + "4527:14:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4488, - "src": "4527:14:109" + "referencedDeclaration": 5211, + "src": "4527:14:122" }, - "referencedDeclaration": 4488, - "src": "4527:14:109", + "referencedDeclaration": 5211, + "src": "4527:14:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } } }, - "id": 67785, + "id": 68536, "isConstant": false, "isLValue": false, "isPure": false, @@ -4042,10 +4058,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4523:33:109", + "src": "4523:33:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } } @@ -4053,30 +4069,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } ], - "id": 67780, + "id": 68531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4515:7:109", + "src": "4515:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67779, + "id": 68530, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4515:7:109", + "src": "4515:7:122", "typeDescriptions": {} } }, - "id": 67786, + "id": 68537, "isConstant": false, "isLValue": false, "isPure": false, @@ -4085,7 +4101,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4515:42:109", + "src": "4515:42:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4093,22 +4109,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4486:71:109" + "src": "4486:71:122" }, { "assignments": [ - 67789 + 68540 ], "declarations": [ { "constant": false, - "id": 67789, + "id": 68540, "mutability": "mutable", "name": "PluginRegistryAddr", - "nameLocation": "4575:18:109", + "nameLocation": "4575:18:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4567:26:109", + "scope": 68932, + "src": "4567:26:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4116,10 +4132,10 @@ "typeString": "address" }, "typeName": { - "id": 67788, + "id": 68539, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4567:7:109", + "src": "4567:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4129,18 +4145,18 @@ "visibility": "internal" } ], - "id": 67798, + "id": 68549, "initialValue": { "arguments": [ { "arguments": [ { - "id": 67795, + "id": 68546, "name": "ModuleRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67778, - "src": "4623:18:109", + "referencedDeclaration": 68529, + "src": "4623:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4154,39 +4170,39 @@ "typeString": "address" } ], - "id": 67794, + "id": 68545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4604:18:109", + "src": "4604:18:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_PluginRegistry_$6344_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_PluginRegistry_$7095_$", "typeString": "function (address) returns (contract PluginRegistry)" }, "typeName": { - "id": 67793, + "id": 68544, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67792, + "id": 68543, "name": "PluginRegistry", "nameLocations": [ - "4608:14:109" + "4608:14:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6344, - "src": "4608:14:109" + "referencedDeclaration": 7095, + "src": "4608:14:122" }, - "referencedDeclaration": 6344, - "src": "4608:14:109", + "referencedDeclaration": 7095, + "src": "4608:14:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } } }, - "id": 67796, + "id": 68547, "isConstant": false, "isLValue": false, "isPure": false, @@ -4195,10 +4211,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4604:38:109", + "src": "4604:38:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } } @@ -4206,30 +4222,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } ], - "id": 67791, + "id": 68542, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4596:7:109", + "src": "4596:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67790, + "id": 68541, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4596:7:109", + "src": "4596:7:122", "typeDescriptions": {} } }, - "id": 67797, + "id": 68548, "isConstant": false, "isLValue": false, "isPure": false, @@ -4238,7 +4254,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4596:47:109", + "src": "4596:47:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4246,22 +4262,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4567:76:109" + "src": "4567:76:122" }, { "assignments": [ - 67800 + 68551 ], "declarations": [ { "constant": false, - "id": 67800, + "id": 68551, "mutability": "mutable", "name": "NovaRegistryAddr", - "nameLocation": "4661:16:109", + "nameLocation": "4661:16:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "4653:24:109", + "scope": 68932, + "src": "4653:24:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4269,10 +4285,10 @@ "typeString": "address" }, "typeName": { - "id": 67799, + "id": 68550, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4653:7:109", + "src": "4653:7:122", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4282,54 +4298,54 @@ "visibility": "internal" } ], - "id": 67812, + "id": 68563, "initialValue": { "arguments": [ { "arguments": [ { - "id": 67806, + "id": 68557, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67579, - "src": "4739:22:109", + "referencedDeclaration": 68330, + "src": "4739:22:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 67807, + "id": 68558, "name": "AUTid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67758, - "src": "4783:5:109", + "referencedDeclaration": 68509, + "src": "4783:5:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 67808, + "id": 68559, "name": "NovaLogicAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67738, - "src": "4810:13:109", + "referencedDeclaration": 68489, + "src": "4810:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 67809, + "id": 68560, "name": "PluginRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67789, - "src": "4845:18:109", + "referencedDeclaration": 68540, + "src": "4845:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4355,39 +4371,39 @@ "typeString": "address" } ], - "id": 67805, + "id": 68556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4701:16:109", + "src": "4701:16:122", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$_t_contract$_NovaRegistry_$5370_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$_t_contract$_NovaRegistry_$6121_$", "typeString": "function (address,address,address,address) returns (contract NovaRegistry)" }, "typeName": { - "id": 67804, + "id": 68555, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67803, + "id": 68554, "name": "NovaRegistry", "nameLocations": [ - "4705:12:109" + "4705:12:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5370, - "src": "4705:12:109" + "referencedDeclaration": 6121, + "src": "4705:12:122" }, - "referencedDeclaration": 5370, - "src": "4705:12:109", + "referencedDeclaration": 6121, + "src": "4705:12:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } } }, - "id": 67810, + "id": 68561, "isConstant": false, "isLValue": false, "isPure": false, @@ -4396,10 +4412,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4701:180:109", + "src": "4701:180:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } } @@ -4407,30 +4423,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } ], - "id": 67802, + "id": 68553, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4680:7:109", + "src": "4680:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67801, + "id": 68552, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4680:7:109", + "src": "4680:7:122", "typeDescriptions": {} } }, - "id": 67811, + "id": 68562, "isConstant": false, "isLValue": false, "isPure": false, @@ -4439,7 +4455,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4680:211:109", + "src": "4680:211:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4447,21 +4463,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4653:238:109" + "src": "4653:238:122" }, { "expression": { "arguments": [ { "hexValue": "6465706c6f796d656e74732e747874", - "id": 67816, + "id": 68567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4928:17:109", + "src": "4928:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa4fd90b36d5b6a58f7c24a6bc1cd84c87e642274bb9e0432374b29e626ca20e", "typeString": "literal_string \"deployments.txt\"" @@ -4474,14 +4490,14 @@ "arguments": [ { "hexValue": "41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67823, + "id": 68574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5025:51:109", + "src": "5025:51:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a4db4277b180428ea2f2907995691d169a32e94a0c39af52ad3c381b69c1e6bc", "typeString": "literal_string \"AUTid----------------------------------------- : \"" @@ -4491,12 +4507,12 @@ { "arguments": [ { - "id": 67826, + "id": 68577, "name": "AUTid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67758, - "src": "5110:5:109", + "referencedDeclaration": 68509, + "src": "5110:5:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4511,33 +4527,33 @@ } ], "expression": { - "id": 67824, + "id": 68575, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5098:2:109", + "referencedDeclaration": 13541, + "src": "5098:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67825, + "id": 68576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5101:8:109", + "memberLocation": "5101:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5098:11:109", + "referencedDeclaration": 24101, + "src": "5098:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67827, + "id": 68578, "isConstant": false, "isLValue": false, "isPure": false, @@ -4546,7 +4562,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5098:18:109", + "src": "5098:18:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4555,14 +4571,14 @@ }, { "hexValue": "200a", - "id": 67828, + "id": 68579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5138:5:109", + "src": "5138:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -4571,14 +4587,14 @@ }, { "hexValue": "4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67829, + "id": 68580, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5165:56:109", + "src": "5165:56:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_002a99fc56b423b4c163377974c5cae438f0b8d32a4c100e6fc423c5b815d9be", "typeString": "literal_string \"Nova Logic----------------------------------------- : \"" @@ -4588,12 +4604,12 @@ { "arguments": [ { - "id": 67832, + "id": 68583, "name": "NovaLogicAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67738, - "src": "5255:13:109", + "referencedDeclaration": 68489, + "src": "5255:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4608,33 +4624,33 @@ } ], "expression": { - "id": 67830, + "id": 68581, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5243:2:109", + "referencedDeclaration": 13541, + "src": "5243:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67831, + "id": 68582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5246:8:109", + "memberLocation": "5246:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5243:11:109", + "referencedDeclaration": 24101, + "src": "5243:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67833, + "id": 68584, "isConstant": false, "isLValue": false, "isPure": false, @@ -4643,7 +4659,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5243:26:109", + "src": "5243:26:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4652,14 +4668,14 @@ }, { "hexValue": "200a", - "id": 67834, + "id": 68585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5291:5:109", + "src": "5291:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -4695,40 +4711,40 @@ } ], "expression": { - "id": 67821, + "id": 68572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4990:6:109", + "src": "4990:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67820, + "id": 68571, "name": "string", "nodeType": "ElementaryTypeName", - "src": "4990:6:109", + "src": "4990:6:122", "typeDescriptions": {} } }, - "id": 67822, + "id": 68573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4997:6:109", + "memberLocation": "4997:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "4990:13:109", + "src": "4990:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67835, + "id": 68586, "isConstant": false, "isLValue": false, "isPure": false, @@ -4737,7 +4753,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4990:324:109", + "src": "4990:324:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4748,14 +4764,14 @@ "arguments": [ { "hexValue": "4d6f64756c6552656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67839, + "id": 68590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5367:60:109", + "src": "5367:60:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5411eef53872f6fc5b07baaabd0b3c3c6e289b7fcfb480be55baabacdca24b11", "typeString": "literal_string \"ModuleRegistry----------------------------------------- : \"" @@ -4765,12 +4781,12 @@ { "arguments": [ { - "id": 67842, + "id": 68593, "name": "ModuleRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67778, - "src": "5461:18:109", + "referencedDeclaration": 68529, + "src": "5461:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4785,33 +4801,33 @@ } ], "expression": { - "id": 67840, + "id": 68591, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5449:2:109", + "referencedDeclaration": 13541, + "src": "5449:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67841, + "id": 68592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5452:8:109", + "memberLocation": "5452:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5449:11:109", + "referencedDeclaration": 24101, + "src": "5449:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67843, + "id": 68594, "isConstant": false, "isLValue": false, "isPure": false, @@ -4820,7 +4836,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5449:31:109", + "src": "5449:31:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4829,14 +4845,14 @@ }, { "hexValue": "200a", - "id": 67844, + "id": 68595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5502:5:109", + "src": "5502:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -4845,14 +4861,14 @@ }, { "hexValue": "506c7567696e52656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67845, + "id": 68596, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5529:60:109", + "src": "5529:60:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4bafbcb11f6616d4a98d5d94d8f3b89e6583b234db3993ec68fc39925b8ff22c", "typeString": "literal_string \"PluginRegistry----------------------------------------- : \"" @@ -4862,12 +4878,12 @@ { "arguments": [ { - "id": 67848, + "id": 68599, "name": "PluginRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67789, - "src": "5623:18:109", + "referencedDeclaration": 68540, + "src": "5623:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4882,33 +4898,33 @@ } ], "expression": { - "id": 67846, + "id": 68597, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5611:2:109", + "referencedDeclaration": 13541, + "src": "5611:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67847, + "id": 68598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5614:8:109", + "memberLocation": "5614:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5611:11:109", + "referencedDeclaration": 24101, + "src": "5611:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67849, + "id": 68600, "isConstant": false, "isLValue": false, "isPure": false, @@ -4917,7 +4933,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5611:31:109", + "src": "5611:31:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4926,14 +4942,14 @@ }, { "hexValue": "200a", - "id": 67850, + "id": 68601, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5664:5:109", + "src": "5664:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -4942,14 +4958,14 @@ }, { "hexValue": "4e6f766152656769737472792d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67851, + "id": 68602, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5691:58:109", + "src": "5691:58:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ac13875946d000b41c24fd1fda18e30014c5082d9e7654c03bfa8672720b4b24", "typeString": "literal_string \"NovaRegistry----------------------------------------- : \"" @@ -4959,12 +4975,12 @@ { "arguments": [ { - "id": 67854, + "id": 68605, "name": "NovaRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67800, - "src": "5783:16:109", + "referencedDeclaration": 68551, + "src": "5783:16:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4979,33 +4995,33 @@ } ], "expression": { - "id": 67852, + "id": 68603, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5771:2:109", + "referencedDeclaration": 13541, + "src": "5771:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67853, + "id": 68604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5774:8:109", + "memberLocation": "5774:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5771:11:109", + "referencedDeclaration": 24101, + "src": "5771:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67855, + "id": 68606, "isConstant": false, "isLValue": false, "isPure": false, @@ -5014,7 +5030,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5771:29:109", + "src": "5771:29:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5023,14 +5039,14 @@ }, { "hexValue": "200a", - "id": 67856, + "id": 68607, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5822:5:109", + "src": "5822:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -5078,40 +5094,40 @@ } ], "expression": { - "id": 67837, + "id": 68588, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5332:6:109", + "src": "5332:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67836, + "id": 68587, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5332:6:109", + "src": "5332:6:122", "typeDescriptions": {} } }, - "id": 67838, + "id": 68589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5339:6:109", + "memberLocation": "5339:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "5332:13:109", + "src": "5332:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67857, + "id": 68608, "isConstant": false, "isLValue": false, "isPure": false, @@ -5120,7 +5136,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5332:513:109", + "src": "5332:513:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5131,14 +5147,14 @@ "arguments": [ { "hexValue": "4c6f63616c52657075746174696f6e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67861, + "id": 68612, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5898:61:109", + "src": "5898:61:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_105875305168fdad2afa919af6d6c6af975dac82821eba9bb7a3a3ff9a713779", "typeString": "literal_string \"LocalReputation----------------------------------------- : \"" @@ -5148,12 +5164,12 @@ { "arguments": [ { - "id": 67864, + "id": 68615, "name": "LocalReputationAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67748, - "src": "5993:19:109", + "referencedDeclaration": 68499, + "src": "5993:19:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5168,33 +5184,33 @@ } ], "expression": { - "id": 67862, + "id": 68613, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5981:2:109", + "referencedDeclaration": 13541, + "src": "5981:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67863, + "id": 68614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5984:8:109", + "memberLocation": "5984:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "5981:11:109", + "referencedDeclaration": 24101, + "src": "5981:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67865, + "id": 68616, "isConstant": false, "isLValue": false, "isPure": false, @@ -5203,7 +5219,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5981:32:109", + "src": "5981:32:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5212,14 +5228,14 @@ }, { "hexValue": "200a", - "id": 67866, + "id": 68617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6035:5:109", + "src": "6035:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -5228,14 +5244,14 @@ }, { "hexValue": "416c6c6f776c697374416464722d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 67867, + "id": 68618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6062:59:109", + "src": "6062:59:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_37de67cc71a97364ceba721fc535d00a491c6c5aa649ea1813c79d6522f0099b", "typeString": "literal_string \"AllowlistAddr----------------------------------------- : \"" @@ -5245,12 +5261,12 @@ { "arguments": [ { - "id": 67870, + "id": 68621, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "6155:13:109", + "referencedDeclaration": 68519, + "src": "6155:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5265,33 +5281,33 @@ } ], "expression": { - "id": 67868, + "id": 68619, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6143:2:109", + "referencedDeclaration": 13541, + "src": "6143:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67869, + "id": 68620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6146:8:109", + "memberLocation": "6146:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23350, - "src": "6143:11:109", + "referencedDeclaration": 24101, + "src": "6143:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_address_$returns$_t_string_memory_ptr_$", "typeString": "function (address) pure external returns (string memory)" } }, - "id": 67871, + "id": 68622, "isConstant": false, "isLValue": false, "isPure": false, @@ -5300,7 +5316,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6143:26:109", + "src": "6143:26:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5309,14 +5325,14 @@ }, { "hexValue": "200a", - "id": 67872, + "id": 68623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6191:5:109", + "src": "6191:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_026a9f41d8826d9e0fb3f95c10df61a2d46af96268084c445682fa892973a0a8", "typeString": "literal_string hex\"200a\"" @@ -5352,40 +5368,40 @@ } ], "expression": { - "id": 67859, + "id": 68610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5863:6:109", + "src": "5863:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67858, + "id": 68609, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5863:6:109", + "src": "5863:6:122", "typeDescriptions": {} } }, - "id": 67860, + "id": 68611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5870:6:109", + "memberLocation": "5870:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "5863:13:109", + "src": "5863:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67873, + "id": 68624, "isConstant": false, "isLValue": false, "isPure": false, @@ -5394,7 +5410,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5863:351:109", + "src": "5863:351:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5418,40 +5434,40 @@ } ], "expression": { - "id": 67818, + "id": 68569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4959:6:109", + "src": "4959:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 67817, + "id": 68568, "name": "string", "nodeType": "ElementaryTypeName", - "src": "4959:6:109", + "src": "4959:6:122", "typeDescriptions": {} } }, - "id": 67819, + "id": 68570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4966:6:109", + "memberLocation": "4966:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "4959:13:109", + "src": "4959:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 67874, + "id": 68625, "isConstant": false, "isLValue": false, "isPure": false, @@ -5460,7 +5476,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4959:1269:109", + "src": "4959:1269:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -5480,33 +5496,33 @@ } ], "expression": { - "id": 67813, + "id": 68564, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4902:2:109", + "referencedDeclaration": 13541, + "src": "4902:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 67815, + "id": 68566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4905:9:109", + "memberLocation": "4905:9:122", "memberName": "writeLine", "nodeType": "MemberAccess", - "referencedDeclaration": 23241, - "src": "4902:12:109", + "referencedDeclaration": 23992, + "src": "4902:12:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory) external" } }, - "id": 67875, + "id": 68626, "isConstant": false, "isLValue": false, "isPure": false, @@ -5515,70 +5531,70 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4902:1336:109", + "src": "4902:1336:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67876, + "id": 68627, "nodeType": "ExpressionStatement", - "src": "4902:1336:109" + "src": "4902:1336:122" }, { "assignments": [ - 67879 + 68630 ], "declarations": [ { "constant": false, - "id": 67879, + "id": 68630, "mutability": "mutable", "name": "IPR", - "nameLocation": "6372:3:109", + "nameLocation": "6372:3:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "6356:19:109", + "scope": 68932, + "src": "6356:19:122", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" }, "typeName": { - "id": 67878, + "id": 68629, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 67877, + "id": 68628, "name": "IPluginRegistry", "nameLocations": [ - "6356:15:109" + "6356:15:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 8823, - "src": "6356:15:109" + "referencedDeclaration": 9574, + "src": "6356:15:122" }, - "referencedDeclaration": 8823, - "src": "6356:15:109", + "referencedDeclaration": 9574, + "src": "6356:15:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, "visibility": "internal" } ], - "id": 67883, + "id": 68634, "initialValue": { "arguments": [ { - "id": 67881, + "id": 68632, "name": "PluginRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67789, - "src": "6394:18:109", + "referencedDeclaration": 68540, + "src": "6394:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,18 +5608,18 @@ "typeString": "address" } ], - "id": 67880, + "id": 68631, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8823, - "src": "6378:15:109", + "referencedDeclaration": 9574, + "src": "6378:15:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$8823_$", + "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$9574_$", "typeString": "type(contract IPluginRegistry)" } }, - "id": 67882, + "id": 68633, "isConstant": false, "isLValue": false, "isPure": false, @@ -5612,26 +5628,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6378:35:109", + "src": "6378:35:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, "nodeType": "VariableDeclarationStatement", - "src": "6356:57:109" + "src": "6356:57:122" }, { "expression": { "arguments": [ { - "id": 67887, + "id": 68638, "name": "LocalReputationAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67748, - "src": "6446:19:109", + "referencedDeclaration": 68499, + "src": "6446:19:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5646,33 +5662,33 @@ } ], "expression": { - "id": 67884, + "id": 68635, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "6423:3:109", + "referencedDeclaration": 68630, + "src": "6423:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67886, + "id": 68637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6427:18:109", + "memberLocation": "6427:18:122", "memberName": "setDefaulLRAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8816, - "src": "6423:22:109", + "referencedDeclaration": 9567, + "src": "6423:22:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 67888, + "id": 68639, "isConstant": false, "isLValue": false, "isPure": false, @@ -5681,31 +5697,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6423:43:109", + "src": "6423:43:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 67889, + "id": 68640, "nodeType": "ExpressionStatement", - "src": "6423:43:109" + "src": "6423:43:122" }, { "assignments": [ - 67894 + 68645 ], "declarations": [ { "constant": false, - "id": 67894, + "id": 68645, "mutability": "mutable", "name": "dependencies", - "nameLocation": "6494:12:109", + "nameLocation": "6494:12:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "6477:29:109", + "scope": 68932, + "src": "6477:29:122", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5714,18 +5730,18 @@ }, "typeName": { "baseType": { - "id": 67892, + "id": 68643, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6477:7:109", + "src": "6477:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67893, + "id": 68644, "nodeType": "ArrayTypeName", - "src": "6477:9:109", + "src": "6477:9:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -5734,24 +5750,24 @@ "visibility": "internal" } ], - "id": 67895, + "id": 68646, "nodeType": "VariableDeclarationStatement", - "src": "6477:29:109" + "src": "6477:29:122" }, { "assignments": [ - 67900 + 68651 ], "declarations": [ { "constant": false, - "id": 67900, + "id": 68651, "mutability": "mutable", "name": "pluginDefinitionIds", - "nameLocation": "6533:19:109", + "nameLocation": "6533:19:122", "nodeType": "VariableDeclaration", - "scope": 68146, - "src": "6516:36:109", + "scope": 68932, + "src": "6516:36:122", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5760,18 +5776,18 @@ }, "typeName": { "baseType": { - "id": 67898, + "id": 68649, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6516:7:109", + "src": "6516:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67899, + "id": 68650, "nodeType": "ArrayTypeName", - "src": "6516:9:109", + "src": "6516:9:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -5780,19 +5796,19 @@ "visibility": "internal" } ], - "id": 67906, + "id": 68657, "initialValue": { "arguments": [ { "hexValue": "36", - "id": 67904, + "id": 68655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6569:1:109", + "src": "6569:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" @@ -5807,38 +5823,38 @@ "typeString": "int_const 6" } ], - "id": 67903, + "id": 68654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "6555:13:109", + "src": "6555:13:122", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { - "id": 67901, + "id": 68652, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6559:7:109", + "src": "6559:7:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67902, + "id": 68653, "nodeType": "ArrayTypeName", - "src": "6559:9:109", + "src": "6559:9:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, - "id": 67905, + "id": 68656, "isConstant": false, "isLValue": false, "isPure": true, @@ -5847,7 +5863,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6555:16:109", + "src": "6555:16:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -5855,39 +5871,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6516:55:109" + "src": "6516:55:122" }, { "expression": { - "id": 67924, + "id": 68675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 67907, + "id": 68658, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "6582:19:109", + "referencedDeclaration": 68651, + "src": "6582:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 67909, + "id": 68660, "indexExpression": { "hexValue": "30", - "id": 67908, + "id": 68659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6602:1:109", + "src": "6602:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5899,7 +5915,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6582:22:109", + "src": "6582:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5915,14 +5931,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 67916, + "id": 68667, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6660:42:109", + "src": "6660:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5937,26 +5953,26 @@ "typeString": "address" } ], - "id": 67915, + "id": 68666, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6652:7:109", + "src": "6652:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67914, + "id": 68665, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6652:7:109", + "src": "6652:7:122", "typeDescriptions": {} } }, - "id": 67917, + "id": 68668, "isConstant": false, "isLValue": false, "isPure": true, @@ -5965,7 +5981,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6652:51:109", + "src": "6652:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5980,27 +5996,27 @@ "typeString": "address" } ], - "id": 67913, + "id": 68664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6644:8:109", + "src": "6644:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 67912, + "id": 68663, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6644:8:109", + "src": "6644:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 67918, + "id": 68669, "isConstant": false, "isLValue": false, "isPure": true, @@ -6009,7 +6025,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6644:60:109", + "src": "6644:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6017,12 +6033,12 @@ } }, { - "id": 67919, + "id": 68670, "name": "onboardingIpfsUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67585, - "src": "6706:17:109", + "referencedDeclaration": 68336, + "src": "6706:17:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -6030,14 +6046,14 @@ }, { "hexValue": "30", - "id": 67920, + "id": 68671, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6725:1:109", + "src": "6725:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6046,14 +6062,14 @@ }, { "hexValue": "74727565", - "id": 67921, + "id": 68672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "6728:4:109", + "src": "6728:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6061,12 +6077,12 @@ "value": "true" }, { - "id": 67922, + "id": 68673, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "6734:12:109", + "referencedDeclaration": 68645, + "src": "6734:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -6097,33 +6113,33 @@ } ], "expression": { - "id": 67910, + "id": 68661, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "6607:3:109", + "referencedDeclaration": 68630, + "src": "6607:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67911, + "id": 68662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6611:19:109", + "memberLocation": "6611:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "6607:23:109", + "referencedDeclaration": 9556, + "src": "6607:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 67923, + "id": 68674, "isConstant": false, "isLValue": false, "isPure": false, @@ -6132,54 +6148,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6607:149:109", + "src": "6607:149:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6582:174:109", + "src": "6582:174:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67925, + "id": 68676, "nodeType": "ExpressionStatement", - "src": "6582:174:109" + "src": "6582:174:122" }, { "expression": { - "id": 67943, + "id": 68694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 67926, + "id": 68677, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "6766:19:109", + "referencedDeclaration": 68651, + "src": "6766:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 67928, + "id": 68679, "indexExpression": { "hexValue": "31", - "id": 67927, + "id": 68678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6786:1:109", + "src": "6786:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6191,7 +6207,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6766:22:109", + "src": "6766:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6207,14 +6223,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 67935, + "id": 68686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6844:42:109", + "src": "6844:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6229,26 +6245,26 @@ "typeString": "address" } ], - "id": 67934, + "id": 68685, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6836:7:109", + "src": "6836:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67933, + "id": 68684, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6836:7:109", + "src": "6836:7:122", "typeDescriptions": {} } }, - "id": 67936, + "id": 68687, "isConstant": false, "isLValue": false, "isPure": true, @@ -6257,7 +6273,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6836:51:109", + "src": "6836:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6272,27 +6288,27 @@ "typeString": "address" } ], - "id": 67932, + "id": 68683, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6828:8:109", + "src": "6828:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 67931, + "id": 68682, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6828:8:109", + "src": "6828:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 67937, + "id": 68688, "isConstant": false, "isLValue": false, "isPure": true, @@ -6301,7 +6317,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6828:60:109", + "src": "6828:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6309,12 +6325,12 @@ } }, { - "id": 67938, + "id": 68689, "name": "discordUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67588, - "src": "6890:10:109", + "referencedDeclaration": 68339, + "src": "6890:10:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -6322,14 +6338,14 @@ }, { "hexValue": "30", - "id": 67939, + "id": 68690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6902:1:109", + "src": "6902:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6338,14 +6354,14 @@ }, { "hexValue": "74727565", - "id": 67940, + "id": 68691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "6905:4:109", + "src": "6905:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6353,12 +6369,12 @@ "value": "true" }, { - "id": 67941, + "id": 68692, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "6911:12:109", + "referencedDeclaration": 68645, + "src": "6911:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -6389,33 +6405,33 @@ } ], "expression": { - "id": 67929, + "id": 68680, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "6791:3:109", + "referencedDeclaration": 68630, + "src": "6791:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67930, + "id": 68681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6795:19:109", + "memberLocation": "6795:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "6791:23:109", + "referencedDeclaration": 9556, + "src": "6791:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 67942, + "id": 68693, "isConstant": false, "isLValue": false, "isPure": false, @@ -6424,54 +6440,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6791:142:109", + "src": "6791:142:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6766:167:109", + "src": "6766:167:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67944, + "id": 68695, "nodeType": "ExpressionStatement", - "src": "6766:167:109" + "src": "6766:167:122" }, { "expression": { - "id": 67962, + "id": 68713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 67945, + "id": 68696, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "6943:19:109", + "referencedDeclaration": 68651, + "src": "6943:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 67947, + "id": 68698, "indexExpression": { "hexValue": "32", - "id": 67946, + "id": 68697, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6963:1:109", + "src": "6963:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -6483,7 +6499,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6943:22:109", + "src": "6943:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6499,14 +6515,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 67954, + "id": 68705, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7021:42:109", + "src": "7021:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6521,26 +6537,26 @@ "typeString": "address" } ], - "id": 67953, + "id": 68704, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7013:7:109", + "src": "7013:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67952, + "id": 68703, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7013:7:109", + "src": "7013:7:122", "typeDescriptions": {} } }, - "id": 67955, + "id": 68706, "isConstant": false, "isLValue": false, "isPure": true, @@ -6549,7 +6565,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7013:51:109", + "src": "7013:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6564,27 +6580,27 @@ "typeString": "address" } ], - "id": 67951, + "id": 68702, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7005:8:109", + "src": "7005:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 67950, + "id": 68701, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7005:8:109", + "src": "7005:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 67956, + "id": 68707, "isConstant": false, "isLValue": false, "isPure": true, @@ -6593,7 +6609,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7005:60:109", + "src": "7005:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6601,12 +6617,12 @@ } }, { - "id": 67957, + "id": 68708, "name": "openTaskUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67591, - "src": "7067:11:109", + "referencedDeclaration": 68342, + "src": "7067:11:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -6614,14 +6630,14 @@ }, { "hexValue": "30", - "id": 67958, + "id": 68709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7080:1:109", + "src": "7080:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6630,14 +6646,14 @@ }, { "hexValue": "74727565", - "id": 67959, + "id": 68710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "7083:4:109", + "src": "7083:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6645,12 +6661,12 @@ "value": "true" }, { - "id": 67960, + "id": 68711, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "7089:12:109", + "referencedDeclaration": 68645, + "src": "7089:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -6681,33 +6697,33 @@ } ], "expression": { - "id": 67948, + "id": 68699, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "6968:3:109", + "referencedDeclaration": 68630, + "src": "6968:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67949, + "id": 68700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6972:19:109", + "memberLocation": "6972:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "6968:23:109", + "referencedDeclaration": 9556, + "src": "6968:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 67961, + "id": 68712, "isConstant": false, "isLValue": false, "isPure": false, @@ -6716,54 +6732,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6968:143:109", + "src": "6968:143:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6943:168:109", + "src": "6943:168:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67963, + "id": 68714, "nodeType": "ExpressionStatement", - "src": "6943:168:109" + "src": "6943:168:122" }, { "expression": { - "id": 67981, + "id": 68732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 67964, + "id": 68715, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7121:19:109", + "referencedDeclaration": 68651, + "src": "7121:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 67966, + "id": 68717, "indexExpression": { "hexValue": "33", - "id": 67965, + "id": 68716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7141:1:109", + "src": "7141:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -6775,7 +6791,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7121:22:109", + "src": "7121:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6791,14 +6807,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 67973, + "id": 68724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7199:42:109", + "src": "7199:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6813,26 +6829,26 @@ "typeString": "address" } ], - "id": 67972, + "id": 68723, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7191:7:109", + "src": "7191:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67971, + "id": 68722, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7191:7:109", + "src": "7191:7:122", "typeDescriptions": {} } }, - "id": 67974, + "id": 68725, "isConstant": false, "isLValue": false, "isPure": true, @@ -6841,7 +6857,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7191:51:109", + "src": "7191:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6856,27 +6872,27 @@ "typeString": "address" } ], - "id": 67970, + "id": 68721, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7183:8:109", + "src": "7183:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 67969, + "id": 68720, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7183:8:109", + "src": "7183:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 67975, + "id": 68726, "isConstant": false, "isLValue": false, "isPure": true, @@ -6885,7 +6901,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7183:60:109", + "src": "7183:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6893,12 +6909,12 @@ } }, { - "id": 67976, + "id": 68727, "name": "quizUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67594, - "src": "7245:7:109", + "referencedDeclaration": 68345, + "src": "7245:7:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -6906,14 +6922,14 @@ }, { "hexValue": "30", - "id": 67977, + "id": 68728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7254:1:109", + "src": "7254:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6922,14 +6938,14 @@ }, { "hexValue": "74727565", - "id": 67978, + "id": 68729, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "7257:4:109", + "src": "7257:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6937,12 +6953,12 @@ "value": "true" }, { - "id": 67979, + "id": 68730, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "7263:12:109", + "referencedDeclaration": 68645, + "src": "7263:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -6973,33 +6989,33 @@ } ], "expression": { - "id": 67967, + "id": 68718, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "7146:3:109", + "referencedDeclaration": 68630, + "src": "7146:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67968, + "id": 68719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7150:19:109", + "memberLocation": "7150:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "7146:23:109", + "referencedDeclaration": 9556, + "src": "7146:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 67980, + "id": 68731, "isConstant": false, "isLValue": false, "isPure": false, @@ -7008,54 +7024,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7146:139:109", + "src": "7146:139:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7121:164:109", + "src": "7121:164:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 67982, + "id": 68733, "nodeType": "ExpressionStatement", - "src": "7121:164:109" + "src": "7121:164:122" }, { "expression": { - "id": 68000, + "id": 68751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 67983, + "id": 68734, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7295:19:109", + "referencedDeclaration": 68651, + "src": "7295:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 67985, + "id": 68736, "indexExpression": { "hexValue": "34", - "id": 67984, + "id": 68735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7315:1:109", + "src": "7315:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -7067,7 +7083,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7295:22:109", + "src": "7295:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7083,14 +7099,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 67992, + "id": 68743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7373:42:109", + "src": "7373:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7105,26 +7121,26 @@ "typeString": "address" } ], - "id": 67991, + "id": 68742, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7365:7:109", + "src": "7365:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 67990, + "id": 68741, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7365:7:109", + "src": "7365:7:122", "typeDescriptions": {} } }, - "id": 67993, + "id": 68744, "isConstant": false, "isLValue": false, "isPure": true, @@ -7133,7 +7149,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7365:51:109", + "src": "7365:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7148,27 +7164,27 @@ "typeString": "address" } ], - "id": 67989, + "id": 68740, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7357:8:109", + "src": "7357:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 67988, + "id": 68739, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7357:8:109", + "src": "7357:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 67994, + "id": 68745, "isConstant": false, "isLValue": false, "isPure": true, @@ -7177,7 +7193,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7357:60:109", + "src": "7357:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -7185,12 +7201,12 @@ } }, { - "id": 67995, + "id": 68746, "name": "socialBotUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67597, - "src": "7419:12:109", + "referencedDeclaration": 68348, + "src": "7419:12:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -7198,14 +7214,14 @@ }, { "hexValue": "30", - "id": 67996, + "id": 68747, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7433:1:109", + "src": "7433:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7214,14 +7230,14 @@ }, { "hexValue": "74727565", - "id": 67997, + "id": 68748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "7436:4:109", + "src": "7436:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7229,12 +7245,12 @@ "value": "true" }, { - "id": 67998, + "id": 68749, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "7442:12:109", + "referencedDeclaration": 68645, + "src": "7442:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -7265,33 +7281,33 @@ } ], "expression": { - "id": 67986, + "id": 68737, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "7320:3:109", + "referencedDeclaration": 68630, + "src": "7320:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 67987, + "id": 68738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7324:19:109", + "memberLocation": "7324:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "7320:23:109", + "referencedDeclaration": 9556, + "src": "7320:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 67999, + "id": 68750, "isConstant": false, "isLValue": false, "isPure": false, @@ -7300,54 +7316,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7320:144:109", + "src": "7320:144:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7295:169:109", + "src": "7295:169:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68001, + "id": 68752, "nodeType": "ExpressionStatement", - "src": "7295:169:109" + "src": "7295:169:122" }, { "expression": { - "id": 68019, + "id": 68770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68002, + "id": 68753, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7474:19:109", + "referencedDeclaration": 68651, + "src": "7474:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68004, + "id": 68755, "indexExpression": { "hexValue": "35", - "id": 68003, + "id": 68754, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7494:1:109", + "src": "7494:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -7359,7 +7375,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7474:22:109", + "src": "7474:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7375,14 +7391,14 @@ "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 68011, + "id": 68762, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7552:42:109", + "src": "7552:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7397,26 +7413,26 @@ "typeString": "address" } ], - "id": 68010, + "id": 68761, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7544:7:109", + "src": "7544:7:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68009, + "id": 68760, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7544:7:109", + "src": "7544:7:122", "typeDescriptions": {} } }, - "id": 68012, + "id": 68763, "isConstant": false, "isLValue": false, "isPure": true, @@ -7425,7 +7441,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7544:51:109", + "src": "7544:51:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7440,27 +7456,27 @@ "typeString": "address" } ], - "id": 68008, + "id": 68759, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7536:8:109", + "src": "7536:8:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 68007, + "id": 68758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7536:8:109", + "src": "7536:8:122", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 68013, + "id": 68764, "isConstant": false, "isLValue": false, "isPure": true, @@ -7469,7 +7485,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7536:60:109", + "src": "7536:60:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -7477,12 +7493,12 @@ } }, { - "id": 68014, + "id": 68765, "name": "transactionTaskUrl", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67600, - "src": "7598:18:109", + "referencedDeclaration": 68351, + "src": "7598:18:122", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -7490,14 +7506,14 @@ }, { "hexValue": "30", - "id": 68015, + "id": 68766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7618:1:109", + "src": "7618:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7506,14 +7522,14 @@ }, { "hexValue": "74727565", - "id": 68016, + "id": 68767, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "7621:4:109", + "src": "7621:4:122", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7521,12 +7537,12 @@ "value": "true" }, { - "id": 68017, + "id": 68768, "name": "dependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67894, - "src": "7627:12:109", + "referencedDeclaration": 68645, + "src": "7627:12:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -7557,33 +7573,33 @@ } ], "expression": { - "id": 68005, + "id": 68756, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67879, - "src": "7499:3:109", + "referencedDeclaration": 68630, + "src": "7499:3:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 68006, + "id": 68757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7503:19:109", + "memberLocation": "7503:19:122", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "7499:23:109", + "referencedDeclaration": 9556, + "src": "7499:23:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 68018, + "id": 68769, "isConstant": false, "isLValue": false, "isPure": false, @@ -7592,36 +7608,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7499:150:109", + "src": "7499:150:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7474:175:109", + "src": "7474:175:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68020, + "id": 68771, "nodeType": "ExpressionStatement", - "src": "7474:175:109" + "src": "7474:175:122" }, { "expression": { "arguments": [ { "hexValue": "6465706c6f796d656e74732e747874", - "id": 68024, + "id": 68775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7686:17:109", + "src": "7686:17:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa4fd90b36d5b6a58f7c24a6bc1cd84c87e642274bb9e0432374b29e626ca20e", "typeString": "literal_string \"deployments.txt\"" @@ -7632,14 +7648,14 @@ "arguments": [ { "hexValue": "506c7567696e494473203a20", - "id": 68028, + "id": 68779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7748:14:109", + "src": "7748:14:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_42265122b102b02a4fa179a02d91bf8d976f2d6548763b270358c1695aff73c5", "typeString": "literal_string \"PluginIDs : \"" @@ -7650,28 +7666,28 @@ "arguments": [ { "baseExpression": { - "id": 68031, + "id": 68782, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7792:19:109", + "referencedDeclaration": 68651, + "src": "7792:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68033, + "id": 68784, "indexExpression": { "hexValue": "30", - "id": 68032, + "id": 68783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7812:1:109", + "src": "7812:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7683,7 +7699,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7792:22:109", + "src": "7792:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7698,33 +7714,33 @@ } ], "expression": { - "id": 68029, + "id": 68780, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7780:2:109", + "referencedDeclaration": 13541, + "src": "7780:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68030, + "id": 68781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7783:8:109", + "memberLocation": "7783:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "7780:11:109", + "referencedDeclaration": 24129, + "src": "7780:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68034, + "id": 68785, "isConstant": false, "isLValue": false, "isPure": false, @@ -7733,7 +7749,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7780:35:109", + "src": "7780:35:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7742,14 +7758,14 @@ }, { "hexValue": "202c20", - "id": 68035, + "id": 68786, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7833:5:109", + "src": "7833:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3d60f2ae64b85f8eee425f26fcace0e24d12f985de0c5f32c353d024ed37da42", "typeString": "literal_string \" , \"" @@ -7760,28 +7776,28 @@ "arguments": [ { "baseExpression": { - "id": 68038, + "id": 68789, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7868:19:109", + "referencedDeclaration": 68651, + "src": "7868:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68040, + "id": 68791, "indexExpression": { "hexValue": "31", - "id": 68039, + "id": 68790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7888:1:109", + "src": "7888:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7793,7 +7809,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7868:22:109", + "src": "7868:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7808,33 +7824,33 @@ } ], "expression": { - "id": 68036, + "id": 68787, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7856:2:109", + "referencedDeclaration": 13541, + "src": "7856:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68037, + "id": 68788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7859:8:109", + "memberLocation": "7859:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "7856:11:109", + "referencedDeclaration": 24129, + "src": "7856:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68041, + "id": 68792, "isConstant": false, "isLValue": false, "isPure": false, @@ -7843,7 +7859,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7856:35:109", + "src": "7856:35:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7852,14 +7868,14 @@ }, { "hexValue": "202c20", - "id": 68042, + "id": 68793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7909:5:109", + "src": "7909:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3d60f2ae64b85f8eee425f26fcace0e24d12f985de0c5f32c353d024ed37da42", "typeString": "literal_string \" , \"" @@ -7870,28 +7886,28 @@ "arguments": [ { "baseExpression": { - "id": 68045, + "id": 68796, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "7944:19:109", + "referencedDeclaration": 68651, + "src": "7944:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68047, + "id": 68798, "indexExpression": { "hexValue": "32", - "id": 68046, + "id": 68797, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7964:1:109", + "src": "7964:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -7903,7 +7919,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7944:22:109", + "src": "7944:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7918,33 +7934,33 @@ } ], "expression": { - "id": 68043, + "id": 68794, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7932:2:109", + "referencedDeclaration": 13541, + "src": "7932:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68044, + "id": 68795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7935:8:109", + "memberLocation": "7935:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "7932:11:109", + "referencedDeclaration": 24129, + "src": "7932:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68048, + "id": 68799, "isConstant": false, "isLValue": false, "isPure": false, @@ -7953,7 +7969,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7932:35:109", + "src": "7932:35:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7962,14 +7978,14 @@ }, { "hexValue": "202c20", - "id": 68049, + "id": 68800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7985:5:109", + "src": "7985:5:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3d60f2ae64b85f8eee425f26fcace0e24d12f985de0c5f32c353d024ed37da42", "typeString": "literal_string \" , \"" @@ -7980,28 +7996,28 @@ "arguments": [ { "baseExpression": { - "id": 68052, + "id": 68803, "name": "pluginDefinitionIds", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67900, - "src": "8020:19:109", + "referencedDeclaration": 68651, + "src": "8020:19:122", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68054, + "id": 68805, "indexExpression": { "hexValue": "33", - "id": 68053, + "id": 68804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8040:1:109", + "src": "8040:1:122", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -8013,7 +8029,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "8020:22:109", + "src": "8020:22:122", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8028,33 +8044,33 @@ } ], "expression": { - "id": 68050, + "id": 68801, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "8008:2:109", + "referencedDeclaration": 13541, + "src": "8008:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68051, + "id": 68802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8011:8:109", + "memberLocation": "8011:8:122", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "8008:11:109", + "referencedDeclaration": 24129, + "src": "8008:11:122", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68055, + "id": 68806, "isConstant": false, "isLValue": false, "isPure": false, @@ -8063,7 +8079,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8008:35:109", + "src": "8008:35:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -8107,40 +8123,40 @@ } ], "expression": { - "id": 68026, + "id": 68777, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7717:6:109", + "src": "7717:6:122", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 68025, + "id": 68776, "name": "string", "nodeType": "ElementaryTypeName", - "src": "7717:6:109", + "src": "7717:6:122", "typeDescriptions": {} } }, - "id": 68027, + "id": 68778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7724:6:109", + "memberLocation": "7724:6:122", "memberName": "concat", "nodeType": "MemberAccess", - "src": "7717:13:109", + "src": "7717:13:122", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 68056, + "id": 68807, "isConstant": false, "isLValue": false, "isPure": false, @@ -8149,7 +8165,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7717:340:109", + "src": "7717:340:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -8169,33 +8185,33 @@ } ], "expression": { - "id": 68021, + "id": 68772, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7660:2:109", + "referencedDeclaration": 13541, + "src": "7660:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68023, + "id": 68774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7663:9:109", + "memberLocation": "7663:9:122", "memberName": "writeLine", "nodeType": "MemberAccess", - "referencedDeclaration": 23241, - "src": "7660:12:109", + "referencedDeclaration": 23992, + "src": "7660:12:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory) external" } }, - "id": 68057, + "id": 68808, "isConstant": false, "isLValue": false, "isPure": false, @@ -8204,30 +8220,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7660:407:109", + "src": "7660:407:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68058, + "id": 68809, "nodeType": "ExpressionStatement", - "src": "7660:407:109" + "src": "7660:407:122" }, { "expression": { "arguments": [ { "hexValue": "307831623430336666364542333744323564434362413035343036333744363535353066383461434233", - "id": 68063, + "id": 68814, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8113:42:109", + "src": "8113:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8245,12 +8261,12 @@ "expression": { "arguments": [ { - "id": 68060, + "id": 68811, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "8089:13:109", + "referencedDeclaration": 68519, + "src": "8089:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8264,18 +8280,18 @@ "typeString": "address" } ], - "id": 68059, + "id": 68810, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "8078:10:109", + "referencedDeclaration": 11190, + "src": "8078:10:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$10439_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 68061, + "id": 68812, "isConstant": false, "isLValue": false, "isPure": false, @@ -8284,29 +8300,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8078:25:109", + "src": "8078:25:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 68062, + "id": 68813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8104:8:109", + "memberLocation": "8104:8:122", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "8078:34:109", + "referencedDeclaration": 11154, + "src": "8078:34:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 68064, + "id": 68815, "isConstant": false, "isLValue": false, "isPure": false, @@ -8315,30 +8331,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8078:78:109", + "src": "8078:78:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68065, + "id": 68816, "nodeType": "ExpressionStatement", - "src": "8078:78:109" + "src": "8078:78:122" }, { "expression": { "arguments": [ { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 68070, + "id": 68821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8201:42:109", + "src": "8201:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8356,12 +8372,12 @@ "expression": { "arguments": [ { - "id": 68067, + "id": 68818, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "8177:13:109", + "referencedDeclaration": 68519, + "src": "8177:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8375,18 +8391,18 @@ "typeString": "address" } ], - "id": 68066, + "id": 68817, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "8166:10:109", + "referencedDeclaration": 11190, + "src": "8166:10:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$10439_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 68068, + "id": 68819, "isConstant": false, "isLValue": false, "isPure": false, @@ -8395,29 +8411,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8166:25:109", + "src": "8166:25:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 68069, + "id": 68820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8192:8:109", + "memberLocation": "8192:8:122", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "8166:34:109", + "referencedDeclaration": 11154, + "src": "8166:34:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 68071, + "id": 68822, "isConstant": false, "isLValue": false, "isPure": false, @@ -8426,30 +8442,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8166:78:109", + "src": "8166:78:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68072, + "id": 68823, "nodeType": "ExpressionStatement", - "src": "8166:78:109" + "src": "8166:78:122" }, { "expression": { "arguments": [ { "hexValue": "307830394564323342423646394363633346643962334243344338353944303439626634414234443433", - "id": 68077, + "id": 68828, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8289:42:109", + "src": "8289:42:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8467,12 +8483,567 @@ "expression": { "arguments": [ { - "id": 68074, + "id": 68825, + "name": "AllowlistAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68519, + "src": "8265:13:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 68824, + "name": "IAllowlist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8254:10:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", + "typeString": "type(contract IAllowlist)" + } + }, + "id": 68826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8254:25:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAllowlist_$11190", + "typeString": "contract IAllowlist" + } + }, + "id": 68827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8280:8:122", + "memberName": "addOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11154, + "src": "8254:34:122", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 68829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8254:78:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 68830, + "nodeType": "ExpressionStatement", + "src": "8254:78:122" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307863443339343231373143333632343438634244344641654136623242373163386343653430424633", + "id": 68835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8377:42:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0xcD3942171C362448cBD4FAeA6b2B71c8cCe40BF3" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 68832, + "name": "AllowlistAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68519, + "src": "8353:13:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 68831, + "name": "IAllowlist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8342:10:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", + "typeString": "type(contract IAllowlist)" + } + }, + "id": 68833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8342:25:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAllowlist_$11190", + "typeString": "contract IAllowlist" + } + }, + "id": 68834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8368:8:122", + "memberName": "addOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11154, + "src": "8342:34:122", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 68836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8342:78:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 68837, + "nodeType": "ExpressionStatement", + "src": "8342:78:122" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307839316444363130453563426531333241383333463432633264463062326561666139363544413430", + "id": 68842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8465:42:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x91dD610E5cBe132A833F42c2dF0b2eafa965DA40" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 68839, + "name": "AllowlistAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68519, + "src": "8441:13:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 68838, + "name": "IAllowlist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8430:10:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", + "typeString": "type(contract IAllowlist)" + } + }, + "id": 68840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8430:25:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAllowlist_$11190", + "typeString": "contract IAllowlist" + } + }, + "id": 68841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8456:8:122", + "memberName": "addOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11154, + "src": "8430:34:122", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 68843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8430:78:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 68844, + "nodeType": "ExpressionStatement", + "src": "8430:78:122" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307837363630616132363164323741324133326434653765363035433162633242413531354535663831", + "id": 68849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8553:42:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x7660aa261d27A2A32d4e7e605C1bc2BA515E5f81" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 68846, + "name": "AllowlistAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68519, + "src": "8529:13:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 68845, + "name": "IAllowlist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8518:10:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", + "typeString": "type(contract IAllowlist)" + } + }, + "id": 68847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8518:25:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAllowlist_$11190", + "typeString": "contract IAllowlist" + } + }, + "id": 68848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8544:8:122", + "memberName": "addOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11154, + "src": "8518:34:122", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 68850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8518:78:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 68851, + "nodeType": "ExpressionStatement", + "src": "8518:78:122" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307835353935344332433039326636653937334235354335443241663238393530623362364431333338", + "id": 68856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8641:42:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x55954C2C092f6e973B55C5D2Af28950b3b6D1338" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 68853, + "name": "AllowlistAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68519, + "src": "8617:13:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 68852, + "name": "IAllowlist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11190, + "src": "8606:10:122", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", + "typeString": "type(contract IAllowlist)" + } + }, + "id": 68854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8606:25:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAllowlist_$11190", + "typeString": "contract IAllowlist" + } + }, + "id": 68855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8632:8:122", + "memberName": "addOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 11154, + "src": "8606:34:122", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 68857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8606:78:122", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 68858, + "nodeType": "ExpressionStatement", + "src": "8606:78:122" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "307830366130634332624633463442316237663732356363614231443741353135343763343842384663", + "id": 68863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8729:42:122", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x06a0cC2bF3F4B1b7f725ccaB1D7A51547c48B8Fc" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 68860, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "8265:13:109", + "referencedDeclaration": 68519, + "src": "8705:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8486,18 +9057,18 @@ "typeString": "address" } ], - "id": 68073, + "id": 68859, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "8254:10:109", + "referencedDeclaration": 11190, + "src": "8694:10:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$10439_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 68075, + "id": 68861, "isConstant": false, "isLValue": false, "isPure": false, @@ -8506,29 +9077,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8254:25:109", + "src": "8694:25:122", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 68076, + "id": 68862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8280:8:109", + "memberLocation": "8720:8:122", "memberName": "addOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 10403, - "src": "8254:34:109", + "referencedDeclaration": 11154, + "src": "8694:34:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 68078, + "id": 68864, "isConstant": false, "isLValue": false, "isPure": false, @@ -8537,30 +9108,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8254:78:109", + "src": "8694:78:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68079, + "id": 68865, "nodeType": "ExpressionStatement", - "src": "8254:78:109" + "src": "8694:78:122" }, { "expression": { "arguments": [ { "hexValue": "41555469642d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68083, + "id": 68869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8355:51:109", + "src": "8795:51:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a4db4277b180428ea2f2907995691d169a32e94a0c39af52ad3c381b69c1e6bc", "typeString": "literal_string \"AUTid----------------------------------------- : \"" @@ -8568,12 +9139,12 @@ "value": "AUTid----------------------------------------- : " }, { - "id": 68084, + "id": 68870, "name": "AUTid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67758, - "src": "8408:5:109", + "referencedDeclaration": 68509, + "src": "8848:5:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8592,33 +9163,33 @@ } ], "expression": { - "id": 68080, + "id": 68866, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8343:7:109", + "referencedDeclaration": 33186, + "src": "8783:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68082, + "id": 68868, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8351:3:109", + "memberLocation": "8791:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8343:11:109", + "referencedDeclaration": 25881, + "src": "8783:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68085, + "id": 68871, "isConstant": false, "isLValue": false, "isPure": false, @@ -8627,30 +9198,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8343:71:109", + "src": "8783:71:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68086, + "id": 68872, "nodeType": "ExpressionStatement", - "src": "8343:71:109" + "src": "8783:71:122" }, { "expression": { "arguments": [ { "hexValue": "4e6f7661204c6f6769632d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68090, + "id": 68876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8436:56:109", + "src": "8876:56:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_002a99fc56b423b4c163377974c5cae438f0b8d32a4c100e6fc423c5b815d9be", "typeString": "literal_string \"Nova Logic----------------------------------------- : \"" @@ -8658,12 +9229,12 @@ "value": "Nova Logic----------------------------------------- : " }, { - "id": 68091, + "id": 68877, "name": "NovaLogicAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67738, - "src": "8494:13:109", + "referencedDeclaration": 68489, + "src": "8934:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8682,33 +9253,33 @@ } ], "expression": { - "id": 68087, + "id": 68873, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8424:7:109", + "referencedDeclaration": 33186, + "src": "8864:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68089, + "id": 68875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8432:3:109", + "memberLocation": "8872:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8424:11:109", + "referencedDeclaration": 25881, + "src": "8864:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68092, + "id": 68878, "isConstant": false, "isLValue": false, "isPure": false, @@ -8717,30 +9288,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8424:84:109", + "src": "8864:84:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68093, + "id": 68879, "nodeType": "ExpressionStatement", - "src": "8424:84:109" + "src": "8864:84:122" }, { "expression": { "arguments": [ { "hexValue": "4d6f64756c655265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68097, + "id": 68883, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8530:61:109", + "src": "8970:61:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e86b1d2061f502dd983ecff7bcddacb15abd09c7d834ef7499ba8e22cb5fed6a", "typeString": "literal_string \"ModuleRegistry ----------------------------------------- : \"" @@ -8748,12 +9319,12 @@ "value": "ModuleRegistry ----------------------------------------- : " }, { - "id": 68098, + "id": 68884, "name": "ModuleRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67778, - "src": "8593:18:109", + "referencedDeclaration": 68529, + "src": "9033:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8772,33 +9343,33 @@ } ], "expression": { - "id": 68094, + "id": 68880, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8518:7:109", + "referencedDeclaration": 33186, + "src": "8958:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68096, + "id": 68882, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8526:3:109", + "memberLocation": "8966:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8518:11:109", + "referencedDeclaration": 25881, + "src": "8958:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68099, + "id": 68885, "isConstant": false, "isLValue": false, "isPure": false, @@ -8807,30 +9378,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8518:94:109", + "src": "8958:94:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68100, + "id": 68886, "nodeType": "ExpressionStatement", - "src": "8518:94:109" + "src": "8958:94:122" }, { "expression": { "arguments": [ { "hexValue": "506c7567696e5265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68104, + "id": 68890, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8634:61:109", + "src": "9074:61:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dc87cd1c546995a0196b6107bddcc9e06f67362b5aa770231185624546d983af", "typeString": "literal_string \"PluginRegistry ----------------------------------------- : \"" @@ -8838,12 +9409,12 @@ "value": "PluginRegistry ----------------------------------------- : " }, { - "id": 68105, + "id": 68891, "name": "PluginRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67789, - "src": "8697:18:109", + "referencedDeclaration": 68540, + "src": "9137:18:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8862,33 +9433,33 @@ } ], "expression": { - "id": 68101, + "id": 68887, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8622:7:109", + "referencedDeclaration": 33186, + "src": "9062:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68103, + "id": 68889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8630:3:109", + "memberLocation": "9070:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8622:11:109", + "referencedDeclaration": 25881, + "src": "9062:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68106, + "id": 68892, "isConstant": false, "isLValue": false, "isPure": false, @@ -8897,30 +9468,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8622:94:109", + "src": "9062:94:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68107, + "id": 68893, "nodeType": "ExpressionStatement", - "src": "8622:94:109" + "src": "9062:94:122" }, { "expression": { "arguments": [ { "hexValue": "4e6f76615265676973747279202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68111, + "id": 68897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8738:59:109", + "src": "9178:59:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_03f159c7dc686994c3f76b4961eb4c8fd24b2fbdd63c003c31309028273e96ca", "typeString": "literal_string \"NovaRegistry ----------------------------------------- : \"" @@ -8928,12 +9499,12 @@ "value": "NovaRegistry ----------------------------------------- : " }, { - "id": 68112, + "id": 68898, "name": "NovaRegistryAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67800, - "src": "8799:16:109", + "referencedDeclaration": 68551, + "src": "9239:16:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8952,33 +9523,33 @@ } ], "expression": { - "id": 68108, + "id": 68894, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8726:7:109", + "referencedDeclaration": 33186, + "src": "9166:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68110, + "id": 68896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8734:3:109", + "memberLocation": "9174:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8726:11:109", + "referencedDeclaration": 25881, + "src": "9166:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68113, + "id": 68899, "isConstant": false, "isLValue": false, "isPure": false, @@ -8987,30 +9558,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8726:90:109", + "src": "9166:90:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68114, + "id": 68900, "nodeType": "ExpressionStatement", - "src": "8726:90:109" + "src": "9166:90:122" }, { "expression": { "arguments": [ { "hexValue": "4c6f63616c52657075746174696f6e202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68118, + "id": 68904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8838:62:109", + "src": "9278:62:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e13106c50977706dfa1f2fde6b950d427fdf3479b6a7c83579f247644259d55", "typeString": "literal_string \"LocalReputation ----------------------------------------- : \"" @@ -9018,12 +9589,12 @@ "value": "LocalReputation ----------------------------------------- : " }, { - "id": 68119, + "id": 68905, "name": "LocalReputationAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67748, - "src": "8902:19:109", + "referencedDeclaration": 68499, + "src": "9342:19:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9042,33 +9613,33 @@ } ], "expression": { - "id": 68115, + "id": 68901, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8826:7:109", + "referencedDeclaration": 33186, + "src": "9266:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68117, + "id": 68903, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8834:3:109", + "memberLocation": "9274:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8826:11:109", + "referencedDeclaration": 25881, + "src": "9266:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68120, + "id": 68906, "isConstant": false, "isLValue": false, "isPure": false, @@ -9077,30 +9648,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8826:96:109", + "src": "9266:96:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68121, + "id": 68907, "nodeType": "ExpressionStatement", - "src": "8826:96:109" + "src": "9266:96:122" }, { "expression": { "arguments": [ { "hexValue": "416c6c6f776c697374202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d203a20", - "id": 68125, + "id": 68911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8944:56:109", + "src": "9384:56:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7c9b7ad72635c3aec4154a7946c1f6b4b647f528f3c29decff0bf270626fd790", "typeString": "literal_string \"Allowlist ----------------------------------------- : \"" @@ -9108,12 +9679,12 @@ "value": "Allowlist ----------------------------------------- : " }, { - "id": 68126, + "id": 68912, "name": "AllowlistAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67768, - "src": "9002:13:109", + "referencedDeclaration": 68519, + "src": "9442:13:122", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9132,33 +9703,33 @@ } ], "expression": { - "id": 68122, + "id": 68908, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "8932:7:109", + "referencedDeclaration": 33186, + "src": "9372:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68124, + "id": 68910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8940:3:109", + "memberLocation": "9380:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "8932:11:109", + "referencedDeclaration": 25881, + "src": "9372:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68127, + "id": 68913, "isConstant": false, "isLValue": false, "isPure": false, @@ -9167,30 +9738,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8932:84:109", + "src": "9372:84:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68128, + "id": 68914, "nodeType": "ExpressionStatement", - "src": "8932:84:109" + "src": "9372:84:122" }, { "expression": { "arguments": [ { "hexValue": "2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020", - "id": 68132, + "id": 68918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9038:73:109", + "src": "9478:73:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_92bc93254b1b79df8d71aa4e9479cd7ea3986b7aeb1a6105dc576fb3a1645879", "typeString": "literal_string \" \"" @@ -9206,33 +9777,33 @@ } ], "expression": { - "id": 68129, + "id": 68915, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "9026:7:109", + "referencedDeclaration": 33186, + "src": "9466:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68131, + "id": 68917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9034:3:109", + "memberLocation": "9474:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "9026:11:109", + "referencedDeclaration": 25717, + "src": "9466:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 68133, + "id": 68919, "isConstant": false, "isLValue": false, "isPure": false, @@ -9241,30 +9812,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9026:86:109", + "src": "9466:86:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68134, + "id": 68920, "nodeType": "ExpressionStatement", - "src": "9026:86:109" + "src": "9466:86:122" }, { "expression": { "arguments": [ { "hexValue": "5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "id": 68138, + "id": 68924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9134:48:109", + "src": "9574:48:122", "typeDescriptions": { "typeIdentifier": "t_stringliteral_974a4998ccfb5bf65b058bf6ca1ad3612ffe56fa85ebfb1600d53c057a19d5c6", "typeString": "literal_string \"______________________________________________\"" @@ -9280,33 +9851,33 @@ } ], "expression": { - "id": 68135, + "id": 68921, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "9122:7:109", + "referencedDeclaration": 33186, + "src": "9562:7:122", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68137, + "id": 68923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9130:3:109", + "memberLocation": "9570:3:122", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "9122:11:109", + "referencedDeclaration": 25717, + "src": "9562:11:122", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 68139, + "id": 68925, "isConstant": false, "isLValue": false, "isPure": false, @@ -9315,16 +9886,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9122:61:109", + "src": "9562:61:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68140, + "id": 68926, "nodeType": "ExpressionStatement", - "src": "9122:61:109" + "src": "9562:61:122" }, { "expression": { @@ -9332,33 +9903,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68141, + "id": 68927, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "9194:2:109", + "referencedDeclaration": 13541, + "src": "9634:2:122", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68143, + "id": 68929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9197:13:109", + "memberLocation": "9637:13:122", "memberName": "stopBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23194, - "src": "9194:16:109", + "referencedDeclaration": 23945, + "src": "9634:16:122", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 68144, + "id": 68930, "isConstant": false, "isLValue": false, "isPure": false, @@ -9367,16 +9938,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9194:18:109", + "src": "9634:18:122", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68145, + "id": 68931, "nodeType": "ExpressionStatement", - "src": "9194:18:109" + "src": "9634:18:122" } ] }, @@ -9385,20 +9956,20 @@ "kind": "function", "modifiers": [], "name": "run", - "nameLocation": "3475:3:109", + "nameLocation": "3475:3:122", "parameters": { - "id": 67680, + "id": 68431, "nodeType": "ParameterList", "parameters": [], - "src": "3478:2:109" + "src": "3478:2:122" }, "returnParameters": { - "id": 67681, + "id": 68432, "nodeType": "ParameterList", "parameters": [], - "src": "3488:0:109" + "src": "3488:0:122" }, - "scope": 68148, + "scope": 68934, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -9408,49 +9979,49 @@ "baseContracts": [ { "baseName": { - "id": 67576, + "id": 68327, "name": "Script", "nameLocations": [ - "775:6:109" + "775:6:122" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 12845, - "src": "775:6:109" + "referencedDeclaration": 13596, + "src": "775:6:122" }, - "id": 67577, + "id": 68328, "nodeType": "InheritanceSpecifier", - "src": "775:6:109" + "src": "775:6:122" } ], "canonicalName": "DeployScript", "contractDependencies": [ 1016, 2915, - 4009, - 4488, - 4940, - 5370, - 6344, - 10353 + 4732, + 5211, + 5691, + 6121, + 7095, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 68148, - 12845, - 22627, - 17061, - 15001, - 12806, - 12794 + 68934, + 13596, + 23378, + 17812, + 15752, + 13557, + 13545 ], "name": "DeployScript", - "nameLocation": "759:12:109", - "scope": 68149, + "nameLocation": "759:12:122", + "scope": 68935, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 109 + "id": 122 } \ No newline at end of file diff --git a/out/DeploysInit.t.sol/DeploysInit.json b/out/DeploysInit.t.sol/DeploysInit.json index 393f44fd..95a1ac13 100644 --- a/out/DeploysInit.t.sol/DeploysInit.json +++ b/out/DeploysInit.t.sol/DeploysInit.json @@ -559,13 +559,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b5062011fbf80620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000df5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa91462000185578063ba414fa6146200018f578063e20c9f7114620001aa578063fa7626d414620001b457600080fd5b806366d9a9a0146200014957806385226c811462000162578063916a17c6146200017b57600080fd5b806203603214620000e45780630a9254e414620000f05780631ed7831c14620000fa5780632ade3880146200011c5780633e5e3c2314620001355780633f7286f4146200013f575b600080fd5b620000ee620001c2565b005b620000ee62000556565b62000104620010cf565b60405162000113919062001a9e565b60405180910390f35b6200012662001133565b60405162000113919062001b41565b6200010462001281565b62000104620012e3565b6200015362001345565b60405162000113919062001c07565b6200016c6200142f565b60405162000113919062001cbe565b6200015362001509565b6200016c620015f3565b62000199620016cd565b604051901515815260200162000113565b62000104620017fa565b600754620001999060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200020c9160016001600160a01b039091163b11906200185c565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002579160026001600160a01b039091163b11906200185c565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002a19160046001600160a01b039091163b11906200185c565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620002eb9160056001600160a01b039091163b11906200185c565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003349160066001600160a01b039091163b11906200185c565b601e54602454604080516341dcea9160e01b81529051620003da936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062001d24565b6001600160a01b03161460405180606001604052806028815260200162011f62602891396200185c565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200049092919091169063adcee6e390602401602060405180830381865afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062001d56565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200185c565b6200055460006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000519919062001d24565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200185c565b565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620005e757600080fd5b505af1158015620005fc573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062011f42833981519152925063c657c7189150608401600060405180830381600087803b1580156200069157600080fd5b505af1158015620006a6573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062011f42833981519152925063c657c7189150608401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620007f157600080fd5b505af115801562000806573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062011f4283398151915292506306447d569150602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b50505050604051620008869062001a2e565b604051809103906000f080158015620008a3573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b1580156200092d57600080fd5b505af115801562000942573d6000803e3d6000fd5b50505050604051620009549062001a3c565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562000a5d57600080fd5b505af115801562000a72573d6000803e3d6000fd5b5050505060405162000a849062001a4a565b604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000b2757600080fd5b505af115801562000b3c573d6000803e3d6000fd5b5050505060405162000b4e9062001a58565b604051809103906000f08015801562000b6b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000bf557600080fd5b505af115801562000c0a573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062000c2b915062001a66565b6001600160a01b039091168152602001604051809103906000f08015801562000c58573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000ce757600080fd5b505af115801562000cfc573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d1d915062001a74565b6001600160a01b039091168152602001604051809103906000f08015801562000d4a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000dd957600080fd5b505af115801562000dee573d6000803e3d6000fd5b5050505060405162000e009062001a82565b604051809103906000f08015801562000e1d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062000ec39062001a90565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000f08573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104c919062001d24565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062011f42833981519152916390c5013b9160048082019260009290919082900301818387803b158015620010b357600080fd5b505af1158015620010c8573d6000803e3d6000fd5b5050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200112957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200110a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200127857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001260578382906000526020600020018054620011cc9062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011fa9062001d7a565b80156200124b5780601f106200121f576101008083540402835291602001916200124b565b820191906000526020600020905b8154815290600101906020018083116200122d57829003601f168201915b505050505081526020019060010190620011aa565b50505050815250508152602001906001019062001157565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200141657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013d75790505b5050505050815250508152602001906001019062001369565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620014759062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620014a39062001d7a565b8015620014f45780601f10620014c857610100808354040283529160200191620014f4565b820191906000526020600020905b815481529060010190602001808311620014d657829003601f168201915b50505050508152602001906001019062001453565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015da57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200159b5790505b505050505081525050815260200190600101906200152d565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620016399062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620016679062001d7a565b8015620016b85780601f106200168c57610100808354040283529160200191620016b8565b820191906000526020600020905b8154815290600101906020018083116200169a57829003601f168201915b50505050508152602001906001019062001617565b600754600090610100900460ff1615620016f05750600754610100900460ff1690565b600060008051602062011f428339815191523b15620017f5576040805160008051602062011f42833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001777917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001db6565b60408051601f1981840301815290829052620017939162001de9565b6000604051808303816000865af19150503d8060008114620017d2576040519150601f19603f3d011682016040523d82523d6000602084013e620017d7565b606091505b5091505080806020019051810190620017f1919062001d56565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b81620018a6577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001893919062001e07565b60405180910390a1620018a682620018aa565b5050565b8062001922577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019109060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200192262001925565b50565b60008051602062011f428339815191523b1562001a1d576040805160008051602062011f42833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620019b8929160200162001db6565b60408051601f1981840301815290829052620019d49162001de9565b6000604051808303816000865af19150503d806000811462001a13576040519150601f19603f3d011682016040523d82523d6000602084013e62001a18565b606091505b505050505b6007805461ff001916610100179055565b6101208062001e3983390190565b610c728062001f5983390190565b6137238062002bcb83390190565b6123c280620062ee83390190565b6110db80620086b083390190565b613043806200978b83390190565b6137d5806200c7ce83390190565b611f9f806200ffa383390190565b6020808252825182820181905260009190848201906040850190845b8181101562001ae15783516001600160a01b03168352928401929184019160010162001aba565b50909695505050505050565b60005b8381101562001b0a57818101518382015260200162001af0565b50506000910152565b6000815180845262001b2d81602086016020860162001aed565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562001bf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562001be057605f1989850301835262001bcd84865162001b13565b948e01949350918d019160010162001bae565b505050978a01979450509188019160010162001b68565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001caf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001c995783516001600160e01b0319168252928b019260019290920191908b019062001c6d565b50978a0197955050509187019160010162001c2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001d1757603f1988860301845262001d0485835162001b13565b9450928501929085019060010162001ce5565b5092979650505050505050565b60006020828403121562001d3757600080fd5b81516001600160a01b038116811462001d4f57600080fd5b9392505050565b60006020828403121562001d6957600080fd5b8151801515811462001d4f57600080fd5b600181811c9082168062001d8f57607f821691505b60208210810362001db057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001ddb81600485016020870162001aed565b919091016004019392505050565b6000825162001dfd81846020870162001aed565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d4f608083018462001b1356fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122035bc0cdaa59302105b2d6d3e6c1c0f91ab00531f6040c02551253f3b7b28d0cd64736f6c63430008130033", - "sourceMap": "896:2731:114:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;896:2731;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b50620121a080620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000df5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa91462000185578063ba414fa6146200018f578063e20c9f7114620001aa578063fa7626d414620001b457600080fd5b806366d9a9a0146200014957806385226c811462000162578063916a17c6146200017b57600080fd5b806203603214620000e45780630a9254e414620000f05780631ed7831c14620000fa5780632ade3880146200011c5780633e5e3c2314620001355780633f7286f4146200013f575b600080fd5b620000ee620001c2565b005b620000ee62000556565b62000104620010cf565b60405162000113919062001a9e565b60405180910390f35b6200012662001133565b60405162000113919062001b41565b6200010462001281565b62000104620012e3565b6200015362001345565b60405162000113919062001c07565b6200016c6200142f565b60405162000113919062001cbe565b6200015362001509565b6200016c620015f3565b62000199620016cd565b604051901515815260200162000113565b62000104620017fa565b600754620001999060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200020c9160016001600160a01b039091163b11906200185c565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002579160026001600160a01b039091163b11906200185c565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002a19160046001600160a01b039091163b11906200185c565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620002eb9160056001600160a01b039091163b11906200185c565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003349160066001600160a01b039091163b11906200185c565b601e54602454604080516341dcea9160e01b81529051620003da936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062001d24565b6001600160a01b03161460405180606001604052806028815260200162012143602891396200185c565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200049092919091169063adcee6e390602401602060405180830381865afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062001d56565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200185c565b6200055460006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000519919062001d24565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200185c565b565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620005e757600080fd5b505af1158015620005fc573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012123833981519152925063c657c7189150608401600060405180830381600087803b1580156200069157600080fd5b505af1158015620006a6573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012123833981519152925063c657c7189150608401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620007f157600080fd5b505af115801562000806573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201212383398151915292506306447d569150602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b50505050604051620008869062001a2e565b604051809103906000f080158015620008a3573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b1580156200092d57600080fd5b505af115801562000942573d6000803e3d6000fd5b50505050604051620009549062001a3c565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562000a5d57600080fd5b505af115801562000a72573d6000803e3d6000fd5b5050505060405162000a849062001a4a565b604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000b2757600080fd5b505af115801562000b3c573d6000803e3d6000fd5b5050505060405162000b4e9062001a58565b604051809103906000f08015801562000b6b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000bf557600080fd5b505af115801562000c0a573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062000c2b915062001a66565b6001600160a01b039091168152602001604051809103906000f08015801562000c58573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000ce757600080fd5b505af115801562000cfc573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d1d915062001a74565b6001600160a01b039091168152602001604051809103906000f08015801562000d4a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000dd957600080fd5b505af115801562000dee573d6000803e3d6000fd5b5050505060405162000e009062001a82565b604051809103906000f08015801562000e1d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062000ec39062001a90565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000f08573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104c919062001d24565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012123833981519152916390c5013b9160048082019260009290919082900301818387803b158015620010b357600080fd5b505af1158015620010c8573d6000803e3d6000fd5b5050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200112957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200110a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200127857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001260578382906000526020600020018054620011cc9062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011fa9062001d7a565b80156200124b5780601f106200121f576101008083540402835291602001916200124b565b820191906000526020600020905b8154815290600101906020018083116200122d57829003601f168201915b505050505081526020019060010190620011aa565b50505050815250508152602001906001019062001157565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200141657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013d75790505b5050505050815250508152602001906001019062001369565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620014759062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620014a39062001d7a565b8015620014f45780601f10620014c857610100808354040283529160200191620014f4565b820191906000526020600020905b815481529060010190602001808311620014d657829003601f168201915b50505050508152602001906001019062001453565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015da57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200159b5790505b505050505081525050815260200190600101906200152d565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620016399062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620016679062001d7a565b8015620016b85780601f106200168c57610100808354040283529160200191620016b8565b820191906000526020600020905b8154815290600101906020018083116200169a57829003601f168201915b50505050508152602001906001019062001617565b600754600090610100900460ff1615620016f05750600754610100900460ff1690565b6000600080516020620121238339815191523b15620017f5576040805160008051602062012123833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001777917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001db6565b60408051601f1981840301815290829052620017939162001de9565b6000604051808303816000865af19150503d8060008114620017d2576040519150601f19603f3d011682016040523d82523d6000602084013e620017d7565b606091505b5091505080806020019051810190620017f1919062001d56565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b81620018a6577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001893919062001e07565b60405180910390a1620018a682620018aa565b5050565b8062001922577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019109060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200192262001925565b50565b600080516020620121238339815191523b1562001a1d576040805160008051602062012123833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620019b8929160200162001db6565b60408051601f1981840301815290829052620019d49162001de9565b6000604051808303816000865af19150503d806000811462001a13576040519150601f19603f3d011682016040523d82523d6000602084013e62001a18565b606091505b505050505b6007805461ff001916610100179055565b6101208062001e3983390190565b610c728062001f5983390190565b6137238062002bcb83390190565b6125a380620062ee83390190565b6110db806200889183390190565b613043806200996c83390190565b6137d5806200c9af83390190565b611f9f806201018483390190565b6020808252825182820181905260009190848201906040850190845b8181101562001ae15783516001600160a01b03168352928401929184019160010162001aba565b50909695505050505050565b60005b8381101562001b0a57818101518382015260200162001af0565b50506000910152565b6000815180845262001b2d81602086016020860162001aed565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562001bf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562001be057605f1989850301835262001bcd84865162001b13565b948e01949350918d019160010162001bae565b505050978a01979450509188019160010162001b68565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001caf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001c995783516001600160e01b0319168252928b019260019290920191908b019062001c6d565b50978a0197955050509187019160010162001c2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001d1757603f1988860301845262001d0485835162001b13565b9450928501929085019060010162001ce5565b5092979650505050505050565b60006020828403121562001d3757600080fd5b81516001600160a01b038116811462001d4f57600080fd5b9392505050565b60006020828403121562001d6957600080fd5b8151801515811462001d4f57600080fd5b600181811c9082168062001d8f57607f821691505b60208210810362001db057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001ddb81600485016020870162001aed565b919091016004019392505050565b6000825162001dfd81846020870162001aed565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d4f608083018462001b1356fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a26469706673582212201f696a86eb2e7f618d72324b0bbdabde85a11af92cd27d192bd53a16f094f2a964736f6c63430008130033", + "sourceMap": "896:2731:127:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;896:2731;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000df5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa91462000185578063ba414fa6146200018f578063e20c9f7114620001aa578063fa7626d414620001b457600080fd5b806366d9a9a0146200014957806385226c811462000162578063916a17c6146200017b57600080fd5b806203603214620000e45780630a9254e414620000f05780631ed7831c14620000fa5780632ade3880146200011c5780633e5e3c2314620001355780633f7286f4146200013f575b600080fd5b620000ee620001c2565b005b620000ee62000556565b62000104620010cf565b60405162000113919062001a9e565b60405180910390f35b6200012662001133565b60405162000113919062001b41565b6200010462001281565b62000104620012e3565b6200015362001345565b60405162000113919062001c07565b6200016c6200142f565b60405162000113919062001cbe565b6200015362001509565b6200016c620015f3565b62000199620016cd565b604051901515815260200162000113565b62000104620017fa565b600754620001999060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200020c9160016001600160a01b039091163b11906200185c565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002579160026001600160a01b039091163b11906200185c565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002a19160046001600160a01b039091163b11906200185c565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620002eb9160056001600160a01b039091163b11906200185c565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003349160066001600160a01b039091163b11906200185c565b601e54602454604080516341dcea9160e01b81529051620003da936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062001d24565b6001600160a01b03161460405180606001604052806028815260200162011f62602891396200185c565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200049092919091169063adcee6e390602401602060405180830381865afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062001d56565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200185c565b6200055460006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000519919062001d24565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200185c565b565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620005e757600080fd5b505af1158015620005fc573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062011f42833981519152925063c657c7189150608401600060405180830381600087803b1580156200069157600080fd5b505af1158015620006a6573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062011f42833981519152925063c657c7189150608401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620007f157600080fd5b505af115801562000806573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062011f4283398151915292506306447d569150602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b50505050604051620008869062001a2e565b604051809103906000f080158015620008a3573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b1580156200092d57600080fd5b505af115801562000942573d6000803e3d6000fd5b50505050604051620009549062001a3c565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562000a5d57600080fd5b505af115801562000a72573d6000803e3d6000fd5b5050505060405162000a849062001a4a565b604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000b2757600080fd5b505af115801562000b3c573d6000803e3d6000fd5b5050505060405162000b4e9062001a58565b604051809103906000f08015801562000b6b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000bf557600080fd5b505af115801562000c0a573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062000c2b915062001a66565b6001600160a01b039091168152602001604051809103906000f08015801562000c58573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000ce757600080fd5b505af115801562000cfc573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d1d915062001a74565b6001600160a01b039091168152602001604051809103906000f08015801562000d4a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000dd957600080fd5b505af115801562000dee573d6000803e3d6000fd5b5050505060405162000e009062001a82565b604051809103906000f08015801562000e1d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062000ec39062001a90565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000f08573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062011f428339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104c919062001d24565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062011f42833981519152916390c5013b9160048082019260009290919082900301818387803b158015620010b357600080fd5b505af1158015620010c8573d6000803e3d6000fd5b5050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200112957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200110a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200127857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001260578382906000526020600020018054620011cc9062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011fa9062001d7a565b80156200124b5780601f106200121f576101008083540402835291602001916200124b565b820191906000526020600020905b8154815290600101906020018083116200122d57829003601f168201915b505050505081526020019060010190620011aa565b50505050815250508152602001906001019062001157565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200141657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013d75790505b5050505050815250508152602001906001019062001369565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620014759062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620014a39062001d7a565b8015620014f45780601f10620014c857610100808354040283529160200191620014f4565b820191906000526020600020905b815481529060010190602001808311620014d657829003601f168201915b50505050508152602001906001019062001453565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015da57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200159b5790505b505050505081525050815260200190600101906200152d565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620016399062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620016679062001d7a565b8015620016b85780601f106200168c57610100808354040283529160200191620016b8565b820191906000526020600020905b8154815290600101906020018083116200169a57829003601f168201915b50505050508152602001906001019062001617565b600754600090610100900460ff1615620016f05750600754610100900460ff1690565b600060008051602062011f428339815191523b15620017f5576040805160008051602062011f42833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001777917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001db6565b60408051601f1981840301815290829052620017939162001de9565b6000604051808303816000865af19150503d8060008114620017d2576040519150601f19603f3d011682016040523d82523d6000602084013e620017d7565b606091505b5091505080806020019051810190620017f1919062001d56565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b81620018a6577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001893919062001e07565b60405180910390a1620018a682620018aa565b5050565b8062001922577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019109060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200192262001925565b50565b60008051602062011f428339815191523b1562001a1d576040805160008051602062011f42833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620019b8929160200162001db6565b60408051601f1981840301815290829052620019d49162001de9565b6000604051808303816000865af19150503d806000811462001a13576040519150601f19603f3d011682016040523d82523d6000602084013e62001a18565b606091505b505050505b6007805461ff001916610100179055565b6101208062001e3983390190565b610c728062001f5983390190565b6137238062002bcb83390190565b6123c280620062ee83390190565b6110db80620086b083390190565b613043806200978b83390190565b6137d5806200c7ce83390190565b611f9f806200ffa383390190565b6020808252825182820181905260009190848201906040850190845b8181101562001ae15783516001600160a01b03168352928401929184019160010162001aba565b50909695505050505050565b60005b8381101562001b0a57818101518382015260200162001af0565b50506000910152565b6000815180845262001b2d81602086016020860162001aed565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562001bf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562001be057605f1989850301835262001bcd84865162001b13565b948e01949350918d019160010162001bae565b505050978a01979450509188019160010162001b68565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001caf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001c995783516001600160e01b0319168252928b019260019290920191908b019062001c6d565b50978a0197955050509187019160010162001c2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001d1757603f1988860301845262001d0485835162001b13565b9450928501929085019060010162001ce5565b5092979650505050505050565b60006020828403121562001d3757600080fd5b81516001600160a01b038116811462001d4f57600080fd5b9392505050565b60006020828403121562001d6957600080fd5b8151801515811462001d4f57600080fd5b600181811c9082168062001d8f57607f821691505b60208210810362001db057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001ddb81600485016020870162001aed565b919091016004019392505050565b6000825162001dfd81846020870162001aed565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d4f608083018462001b1356fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122035bc0cdaa59302105b2d6d3e6c1c0f91ab00531f6040c02551253f3b7b28d0cd64736f6c63430008130033", - "sourceMap": "896:2731:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713;;;:::i;:::-;;1325:1581;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5504:14:121;;5497:22;5479:41;;5467:2;5452:18;1819:584:52;5339:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;5972:51:121;3476:66:114;;3487:3;;;;;:23;;5945:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;1325:1581::-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;6528:51:121;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:121;;;6665:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;6720:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;6962:51:121;;;;7029:18;;;7022:30;7088:1;7068:18;;;7061:29;-1:-1:-1;;;7106:18:121;;;7099:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;7154:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;7396:51:121;;;;7463:18;;;7456:30;7522:1;7502:18;;;7495:29;-1:-1:-1;;;7540:18:121;;;7533:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;7588:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;7830:51:121;7897:18;;;7890:30;7956:2;7936:18;;;7929:30;-1:-1:-1;;;7975:18:121;;;7968:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;8027:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;5945:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;8269:51:121;;;;8336:18;;;8329:30;8395:2;8375:18;;;8368:30;-1:-1:-1;;;8414:18:121;;;8407:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;8464:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;8706:51:121;;;;8773:18;;;8766:30;8832:1;8812:18;;;8805:29;-1:-1:-1;;;8850:18:121;;;8843:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;8899:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;5972:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;5945:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;9141:51:121;;;;9208:18;;;9201:30;9267:1;9247:18;;;9240:29;-1:-1:-1;;;9285:18:121;;;9278:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;9331:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;9573:51:121;;;;9640:18;;;9633:30;9699:2;9679:18;;;9672:30;-1:-1:-1;;;9718:18:121;;;9711:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;9768:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;10010:51:121;;;;10077:18;;;10070:30;10136:2;10116:18;;;10109:30;-1:-1:-1;;;10155:18:121;;;10148:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;10210:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;10452:51:121;;;;10519:18;;;10512:30;10578:2;10558:18;;;10551:30;-1:-1:-1;;;10597:18:121;;;10590:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;10652:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;5972:51:121;;;;2573:3:114;;;;:22;;5945:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;10969:15:121;;;10951:34;;11021:15;;;11016:2;11001:18;;10994:43;11073:15;;;11068:2;11053:18;;11046:43;11125:15;;;11120:2;11105:18;;11098:43;10900:3;10885:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;11364:51:121;;;;11431:18;;;11424:30;11490:2;11470:18;;;11463:30;-1:-1:-1;;;11509:18:121;;;11502:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;11562:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;11848:25:121;;;11909:2;11889:18;;;11882:30;11948:2;11928:18;;;11921:30;-1:-1:-1;;;11967:19:121;;;11960:42;12054:18;;;12047:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;12019:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;12651:51:121;;;-1:-1:-1;;;12718:18:121;;;12711:34;2196:43:52;;;;;;;;;12624:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;3262:157::-;3322:9;3317:96;;3352:30;;;;;14090:2:121;14072:21;;;14129:2;14109:18;;;14102:30;14168:25;14163:2;14148:18;;14141:53;14226:2;14211:18;;13888:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;14442:51:121;;;-1:-1:-1;;;14509:18:121;;;14502:34;;;;2712:4:52;14552:18:121;;;14545:34;2489:11:52;;1671:64;2586:43;;14415:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:121;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:121:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;12092:380;12171:1;12167:12;;;;12214;;;12235:61;;12289:4;12281:6;12277:17;12267:27;;12235:61;12342:2;12334:6;12331:14;12311:18;12308:38;12305:161;;12388:10;12383:3;12379:20;12376:1;12369:31;12423:4;12420:1;12413:15;12451:4;12448:1;12441:15;12305:161;;12092:380;;;:::o;12756:384::-;-1:-1:-1;;;;;;12941:33:121;;12929:46;;12998:13;;12911:3;;13020:74;12998:13;13083:1;13074:11;;13067:4;13055:17;;13020:74;:::i;:::-;13114:16;;;;13132:1;13110:24;;12756:384;-1:-1:-1;;;12756:384:121:o;13145:287::-;13274:3;13312:6;13306:13;13328:66;13387:6;13382:3;13375:4;13367:6;13363:17;13328:66;:::i;:::-;13410:16;;;;;13145:287;-1:-1:-1;;13145:287:121:o;13437:446::-;13687:2;13676:9;13669:21;13726:1;13721:2;13710:9;13706:18;13699:29;-1:-1:-1;;;13759:2:121;13748:9;13744:18;13737:35;13810:3;13803:4;13792:9;13788:20;13781:33;13650:4;13831:46;13872:3;13861:9;13857:19;13849:6;13831:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620000df5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa91462000185578063ba414fa6146200018f578063e20c9f7114620001aa578063fa7626d414620001b457600080fd5b806366d9a9a0146200014957806385226c811462000162578063916a17c6146200017b57600080fd5b806203603214620000e45780630a9254e414620000f05780631ed7831c14620000fa5780632ade3880146200011c5780633e5e3c2314620001355780633f7286f4146200013f575b600080fd5b620000ee620001c2565b005b620000ee62000556565b62000104620010cf565b60405162000113919062001a9e565b60405180910390f35b6200012662001133565b60405162000113919062001b41565b6200010462001281565b62000104620012e3565b6200015362001345565b60405162000113919062001c07565b6200016c6200142f565b60405162000113919062001cbe565b6200015362001509565b6200016c620015f3565b62000199620016cd565b604051901515815260200162000113565b62000104620017fa565b600754620001999060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200020c9160016001600160a01b039091163b11906200185c565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002579160026001600160a01b039091163b11906200185c565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002a19160046001600160a01b039091163b11906200185c565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620002eb9160056001600160a01b039091163b11906200185c565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003349160066001600160a01b039091163b11906200185c565b601e54602454604080516341dcea9160e01b81529051620003da936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062001d24565b6001600160a01b03161460405180606001604052806028815260200162012143602891396200185c565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200049092919091169063adcee6e390602401602060405180830381865afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062001d56565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200185c565b6200055460006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000519919062001d24565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200185c565b565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620005e757600080fd5b505af1158015620005fc573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012123833981519152925063c657c7189150608401600060405180830381600087803b1580156200069157600080fd5b505af1158015620006a6573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012123833981519152925063c657c7189150608401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620007f157600080fd5b505af115801562000806573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201212383398151915292506306447d569150602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b50505050604051620008869062001a2e565b604051809103906000f080158015620008a3573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b1580156200092d57600080fd5b505af115801562000942573d6000803e3d6000fd5b50505050604051620009549062001a3c565b604051809103906000f08015801562000971573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b158015620009fa57600080fd5b505af115801562000a0f573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562000a5d57600080fd5b505af115801562000a72573d6000803e3d6000fd5b5050505060405162000a849062001a4a565b604051809103906000f08015801562000aa1573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000b2757600080fd5b505af115801562000b3c573d6000803e3d6000fd5b5050505060405162000b4e9062001a58565b604051809103906000f08015801562000b6b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000bf557600080fd5b505af115801562000c0a573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062000c2b915062001a66565b6001600160a01b039091168152602001604051809103906000f08015801562000c58573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000ce757600080fd5b505af115801562000cfc573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d1d915062001a74565b6001600160a01b039091168152602001604051809103906000f08015801562000d4a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000dd957600080fd5b505af115801562000dee573d6000803e3d6000fd5b5050505060405162000e009062001a82565b604051809103906000f08015801562000e1d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062000ec39062001a90565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562000f08573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620121238339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200104c919062001d24565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012123833981519152916390c5013b9160048082019260009290919082900301818387803b158015620010b357600080fd5b505af1158015620010c8573d6000803e3d6000fd5b5050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200112957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200110a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200127857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001260578382906000526020600020018054620011cc9062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011fa9062001d7a565b80156200124b5780601f106200121f576101008083540402835291602001916200124b565b820191906000526020600020905b8154815290600101906020018083116200122d57829003601f168201915b505050505081526020019060010190620011aa565b50505050815250508152602001906001019062001157565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200141657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013d75790505b5050505050815250508152602001906001019062001369565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620014759062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620014a39062001d7a565b8015620014f45780601f10620014c857610100808354040283529160200191620014f4565b820191906000526020600020905b815481529060010190602001808311620014d657829003601f168201915b50505050508152602001906001019062001453565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015da57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200159b5790505b505050505081525050815260200190600101906200152d565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001278578382906000526020600020018054620016399062001d7a565b80601f0160208091040260200160405190810160405280929190818152602001828054620016679062001d7a565b8015620016b85780601f106200168c57610100808354040283529160200191620016b8565b820191906000526020600020905b8154815290600101906020018083116200169a57829003601f168201915b50505050508152602001906001019062001617565b600754600090610100900460ff1615620016f05750600754610100900460ff1690565b6000600080516020620121238339815191523b15620017f5576040805160008051602062012123833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001777917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001db6565b60408051601f1981840301815290829052620017939162001de9565b6000604051808303816000865af19150503d8060008114620017d2576040519150601f19603f3d011682016040523d82523d6000602084013e620017d7565b606091505b5091505080806020019051810190620017f1919062001d56565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001129576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200110a575050505050905090565b81620018a6577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001893919062001e07565b60405180910390a1620018a682620018aa565b5050565b8062001922577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019109060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200192262001925565b50565b600080516020620121238339815191523b1562001a1d576040805160008051602062012123833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620019b8929160200162001db6565b60408051601f1981840301815290829052620019d49162001de9565b6000604051808303816000865af19150503d806000811462001a13576040519150601f19603f3d011682016040523d82523d6000602084013e62001a18565b606091505b505050505b6007805461ff001916610100179055565b6101208062001e3983390190565b610c728062001f5983390190565b6137238062002bcb83390190565b6125a380620062ee83390190565b6110db806200889183390190565b613043806200996c83390190565b6137d5806200c9af83390190565b611f9f806201018483390190565b6020808252825182820181905260009190848201906040850190845b8181101562001ae15783516001600160a01b03168352928401929184019160010162001aba565b50909695505050505050565b60005b8381101562001b0a57818101518382015260200162001af0565b50506000910152565b6000815180845262001b2d81602086016020860162001aed565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562001bf757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562001be057605f1989850301835262001bcd84865162001b13565b948e01949350918d019160010162001bae565b505050978a01979450509188019160010162001b68565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001caf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001c995783516001600160e01b0319168252928b019260019290920191908b019062001c6d565b50978a0197955050509187019160010162001c2f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001d1757603f1988860301845262001d0485835162001b13565b9450928501929085019060010162001ce5565b5092979650505050505050565b60006020828403121562001d3757600080fd5b81516001600160a01b038116811462001d4f57600080fd5b9392505050565b60006020828403121562001d6957600080fd5b8151801515811462001d4f57600080fd5b600181811c9082168062001d8f57607f821691505b60208210810362001db057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001ddb81600485016020870162001aed565b919091016004019392505050565b6000825162001dfd81846020870162001aed565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d4f608083018462001b1356fe608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a26469706673582212201f696a86eb2e7f618d72324b0bbdabde85a11af92cd27d192bd53a16f094f2a964736f6c63430008130033", + "sourceMap": "896:2731:127:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713;;;:::i;:::-;;1325:1581;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5504:14:134;;5497:22;5479:41;;5467:2;5452:18;1819:584:65;5339:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;5972:51:134;3476:66:127;;3487:3;;;;;:23;;5945:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;1325:1581::-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;6528:51:134;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:134;;;6665:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;6720:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;6962:51:134;;;;7029:18;;;7022:30;7088:1;7068:18;;;7061:29;-1:-1:-1;;;7106:18:134;;;7099:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;7154:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;7396:51:134;;;;7463:18;;;7456:30;7522:1;7502:18;;;7495:29;-1:-1:-1;;;7540:18:134;;;7533:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;7588:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;7830:51:134;7897:18;;;7890:30;7956:2;7936:18;;;7929:30;-1:-1:-1;;;7975:18:134;;;7968:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;8027:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;5945:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;8269:51:134;;;;8336:18;;;8329:30;8395:2;8375:18;;;8368:30;-1:-1:-1;;;8414:18:134;;;8407:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;8464:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;8706:51:134;;;;8773:18;;;8766:30;8832:1;8812:18;;;8805:29;-1:-1:-1;;;8850:18:134;;;8843:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;8899:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;5972:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;5945:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;9141:51:134;;;;9208:18;;;9201:30;9267:1;9247:18;;;9240:29;-1:-1:-1;;;9285:18:134;;;9278:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;9331:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;9573:51:134;;;;9640:18;;;9633:30;9699:2;9679:18;;;9672:30;-1:-1:-1;;;9718:18:134;;;9711:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;9768:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;10010:51:134;;;;10077:18;;;10070:30;10136:2;10116:18;;;10109:30;-1:-1:-1;;;10155:18:134;;;10148:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;10210:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;10452:51:134;;;;10519:18;;;10512:30;10578:2;10558:18;;;10551:30;-1:-1:-1;;;10597:18:134;;;10590:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;10652:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;5972:51:134;;;;2573:3:127;;;;:22;;5945:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;10969:15:134;;;10951:34;;11021:15;;;11016:2;11001:18;;10994:43;11073:15;;;11068:2;11053:18;;11046:43;11125:15;;;11120:2;11105:18;;11098:43;10900:3;10885:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;11364:51:134;;;;11431:18;;;11424:30;11490:2;11470:18;;;11463:30;-1:-1:-1;;;11509:18:134;;;11502:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;11562:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;11848:25:134;;;11909:2;11889:18;;;11882:30;11948:2;11928:18;;;11921:30;-1:-1:-1;;;11967:19:134;;;11960:42;12054:18;;;12047:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;12019:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;12651:51:134;;;-1:-1:-1;;;12718:18:134;;;12711:34;2196:43:65;;;;;;;;;12624:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;3262:157::-;3322:9;3317:96;;3352:30;;;;;14090:2:134;14072:21;;;14129:2;14109:18;;;14102:30;14168:25;14163:2;14148:18;;14141:53;14226:2;14211:18;;13888:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;14442:51:134;;;-1:-1:-1;;;14509:18:134;;;14502:34;;;;2712:4:65;14552:18:134;;;14545:34;2489:11:65;;1671:64;2586:43;;14415:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:134;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:134:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;12092:380;12171:1;12167:12;;;;12214;;;12235:61;;12289:4;12281:6;12277:17;12267:27;;12235:61;12342:2;12334:6;12331:14;12311:18;12308:38;12305:161;;12388:10;12383:3;12379:20;12376:1;12369:31;12423:4;12420:1;12413:15;12451:4;12448:1;12441:15;12305:161;;12092:380;;;:::o;12756:384::-;-1:-1:-1;;;;;;12941:33:134;;12929:46;;12998:13;;12911:3;;13020:74;12998:13;13083:1;13074:11;;13067:4;13055:17;;13020:74;:::i;:::-;13114:16;;;;13132:1;13110:24;;12756:384;-1:-1:-1;;;12756:384:134:o;13145:287::-;13274:3;13312:6;13306:13;13328:66;13387:6;13382:3;13375:4;13367:6;13363:17;13328:66;:::i;:::-;13410:16;;;;;13145:287;-1:-1:-1;;13145:287:134:o;13437:446::-;13687:2;13676:9;13669:21;13726:1;13721:2;13710:9;13706:18;13699:29;-1:-1:-1;;;13759:2:134;13748:9;13744:18;13737:35;13810:3;13803:4;13792:9;13788:20;13781:33;13650:4;13831:46;13872:3;13861:9;13857:19;13849:6;13831:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -583,7 +583,7 @@ "targetSenders()": "3e5e3c23", "testAreDeployedContracts()": "00036032" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/DeploysInit.t.sol\":\"DeploysInit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/DeploysInit.t.sol\":\"DeploysInit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1220,6 +1220,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1284,6 +1292,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1397,10 +1413,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1905,22 +1921,22 @@ }, "ast": { "absolutePath": "test/DeploysInit.t.sol", - "id": 70241, + "id": 71027, "exportedSymbols": { "Allowlist": [ - 10353 + 11104 ], "AutID": [ 1016 ], "DSTest": [ - 12731 + 13482 ], "DeploysInit": [ - 70240 + 71026 ], "IAllowlist": [ - 10439 + 11190 ], "IAutID": [ 1194 @@ -1929,70 +1945,70 @@ 1423 ], "IModuleRegistry": [ - 4295 + 5018 ], "INova": [ - 5673 + 6424 ], "INovaRegistry": [ - 5711 + 6462 ], "IPluginRegistry": [ - 8823 + 9574 ], "LocalReputation": [ 2915 ], "ModuleRegistry": [ - 4488 + 5211 ], "N": [ - 4940 + 5691 ], "NovaRegistry": [ - 5370 + 6121 ], "PluginRegistry": [ - 6344 + 7095 ], "SWLegacyDAO": [ - 3996 + 4719 ], "StdAssertions": [ - 14263 + 15014 ], "StdChains": [ - 15001 + 15752 ], "StdCheats": [ - 17854 + 18605 ], "StdInvariant": [ - 18179 + 18930 ], "StdStorage": [ - 18929 + 19680 ], "StdStyle": [ - 21779 + 22530 ], "StdUtils": [ - 22627 + 23378 ], "Test": [ - 22678 + 23429 ], "TestBase": [ - 12797 + 13548 ], "Vm": [ - 24371 + 25122 ], "console": [ - 32435 + 33186 ], "console2": [ - 40560 + 41311 ], "groupState": [ 1229 @@ -2004,28 +2020,28 @@ 1207 ], "safeconsole": [ - 53798 + 54549 ], "stdError": [ - 17920 + 18671 ], "stdJson": [ - 18755 + 19506 ], "stdMath": [ - 18897 + 19648 ], "stdStorage": [ - 20568 + 21319 ] }, "nodeType": "SourceUnit", - "src": "39:3589:114", + "src": "39:3589:127", "nodes": [ { - "id": 69731, + "id": 70517, "nodeType": "PragmaDirective", - "src": "39:23:114", + "src": "39:23:127", "nodes": [], "literals": [ "solidity", @@ -2034,37 +2050,37 @@ ] }, { - "id": 69732, + "id": 70518, "nodeType": "ImportDirective", - "src": "64:28:114", + "src": "64:28:127", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 22679, + "scope": 71027, + "sourceUnit": 23430, "symbolAliases": [], "unitAlias": "" }, { - "id": 69734, + "id": 70520, "nodeType": "ImportDirective", - "src": "93:53:114", + "src": "93:53:127", "nodes": [], "absolutePath": "contracts/nova/Nova.sol", "file": "../contracts/nova/Nova.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 4941, + "scope": 71027, + "sourceUnit": 5692, "symbolAliases": [ { "foreign": { - "id": 69733, + "id": 70519, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4940, - "src": "101:4:114", + "referencedDeclaration": 5691, + "src": "101:4:127", "typeDescriptions": {} }, "local": "N", @@ -2074,24 +2090,24 @@ "unitAlias": "" }, { - "id": 69736, + "id": 70522, "nodeType": "ImportDirective", - "src": "147:61:114", + "src": "147:61:127", "nodes": [], "absolutePath": "contracts/nova/interfaces/INova.sol", "file": "../contracts/nova/interfaces/INova.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 5674, + "scope": 71027, + "sourceUnit": 6425, "symbolAliases": [ { "foreign": { - "id": 69735, + "id": 70521, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "155:5:114", + "referencedDeclaration": 6424, + "src": "155:5:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2100,36 +2116,36 @@ "unitAlias": "" }, { - "id": 69739, + "id": 70525, "nodeType": "ImportDirective", - "src": "209:79:114", + "src": "209:79:127", "nodes": [], "absolutePath": "contracts/nova/NovaRegistry.sol", "file": "../contracts/nova/NovaRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 5371, + "scope": 71027, + "sourceUnit": 6122, "symbolAliases": [ { "foreign": { - "id": 69737, + "id": 70523, "name": "NovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5370, - "src": "217:12:114", + "referencedDeclaration": 6121, + "src": "217:12:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 69738, + "id": 70524, "name": "INovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5711, - "src": "231:13:114", + "referencedDeclaration": 6462, + "src": "231:13:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2138,36 +2154,36 @@ "unitAlias": "" }, { - "id": 69742, + "id": 70528, "nodeType": "ImportDirective", - "src": "289:97:114", + "src": "289:97:127", "nodes": [], "absolutePath": "contracts/modules/registry/ModuleRegistry.sol", "file": "../contracts/modules/registry/ModuleRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 4489, + "scope": 71027, + "sourceUnit": 5212, "symbolAliases": [ { "foreign": { - "id": 69740, + "id": 70526, "name": "ModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4488, - "src": "297:14:114", + "referencedDeclaration": 5211, + "src": "297:14:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 69741, + "id": 70527, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4295, - "src": "313:15:114", + "referencedDeclaration": 5018, + "src": "313:15:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2176,36 +2192,36 @@ "unitAlias": "" }, { - "id": 69745, + "id": 70531, "nodeType": "ImportDirective", - "src": "387:88:114", + "src": "387:88:127", "nodes": [], "absolutePath": "contracts/plugins/PluginRegistry.sol", "file": "../contracts/plugins/PluginRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 6345, + "scope": 71027, + "sourceUnit": 7096, "symbolAliases": [ { "foreign": { - "id": 69743, + "id": 70529, "name": "PluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6344, - "src": "395:14:114", + "referencedDeclaration": 7095, + "src": "395:14:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 69744, + "id": 70530, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8823, - "src": "411:15:114", + "referencedDeclaration": 9574, + "src": "411:15:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2214,36 +2230,36 @@ "unitAlias": "" }, { - "id": 69748, + "id": 70534, "nodeType": "ImportDirective", - "src": "476:53:114", + "src": "476:53:127", "nodes": [], "absolutePath": "contracts/AutID.sol", "file": "../contracts/AutID.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, + "scope": 71027, "sourceUnit": 1017, "symbolAliases": [ { "foreign": { - "id": 69746, + "id": 70532, "name": "AutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, - "src": "484:5:114", + "src": "484:5:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 69747, + "id": 70533, "name": "IAutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, - "src": "491:6:114", + "src": "491:6:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2252,24 +2268,24 @@ "unitAlias": "" }, { - "id": 69750, + "id": 70536, "nodeType": "ImportDirective", - "src": "531:61:114", + "src": "531:61:127", "nodes": [], "absolutePath": "contracts/nova/interfaces/INova.sol", "file": "../contracts/nova/interfaces/INova.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 5674, + "scope": 71027, + "sourceUnit": 6425, "symbolAliases": [ { "foreign": { - "id": 69749, + "id": 70535, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "539:5:114", + "referencedDeclaration": 6424, + "src": "539:5:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2278,24 +2294,24 @@ "unitAlias": "" }, { - "id": 69752, + "id": 70538, "nodeType": "ImportDirective", - "src": "594:69:114", + "src": "594:69:127", "nodes": [], "absolutePath": "contracts/mocks/SWLegacyCommunity.sol", "file": "../contracts/mocks/SWLegacyCommunity.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 3997, + "scope": 71027, + "sourceUnit": 4720, "symbolAliases": [ { "foreign": { - "id": 69751, + "id": 70537, "name": "SWLegacyDAO", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3996, - "src": "602:11:114", + "referencedDeclaration": 4719, + "src": "602:11:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2304,24 +2320,24 @@ "unitAlias": "" }, { - "id": 69754, + "id": 70540, "nodeType": "ImportDirective", - "src": "665:65:114", + "src": "665:65:127", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, + "scope": 71027, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 69753, + "id": 70539, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "673:15:114", + "src": "673:15:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2330,49 +2346,49 @@ "unitAlias": "" }, { - "id": 69755, + "id": 70541, "nodeType": "ImportDirective", - "src": "731:43:114", + "src": "731:43:127", "nodes": [], "absolutePath": "contracts/ILocalReputation.sol", "file": "../contracts/ILocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, + "scope": 71027, "sourceUnit": 1424, "symbolAliases": [], "unitAlias": "" }, { - "id": 69758, + "id": 70544, "nodeType": "ImportDirective", - "src": "776:71:114", + "src": "776:71:127", "nodes": [], "absolutePath": "contracts/utils/Allowlist.sol", "file": "../contracts/utils/Allowlist.sol", "nameLocation": "-1:-1:-1", - "scope": 70241, - "sourceUnit": 10354, + "scope": 71027, + "sourceUnit": 11105, "symbolAliases": [ { "foreign": { - "id": 69756, + "id": 70542, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "784:10:114", + "referencedDeclaration": 11190, + "src": "784:10:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 69757, + "id": 70543, "name": "Allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10353, - "src": "796:9:114", + "referencedDeclaration": 11104, + "src": "796:9:127", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2381,20 +2397,20 @@ "unitAlias": "" }, { - "id": 70240, + "id": 71026, "nodeType": "ContractDefinition", - "src": "896:2731:114", + "src": "896:2731:127", "nodes": [ { - "id": 69763, + "id": 70549, "nodeType": "VariableDeclaration", - "src": "931:10:114", + "src": "931:10:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "aID", - "nameLocation": "938:3:114", - "scope": 70240, + "nameLocation": "938:3:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2402,20 +2418,20 @@ "typeString": "contract IAutID" }, "typeName": { - "id": 69762, + "id": 70548, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69761, + "id": 70547, "name": "IAutID", "nameLocations": [ - "931:6:114" + "931:6:127" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1194, - "src": "931:6:114" + "src": "931:6:127" }, "referencedDeclaration": 1194, - "src": "931:6:114", + "src": "931:6:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -2424,205 +2440,205 @@ "visibility": "internal" }, { - "id": 69766, + "id": 70552, "nodeType": "VariableDeclaration", - "src": "947:17:114", + "src": "947:17:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "INR", - "nameLocation": "961:3:114", - "scope": 70240, + "nameLocation": "961:3:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" }, "typeName": { - "id": 69765, + "id": 70551, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69764, + "id": 70550, "name": "INovaRegistry", "nameLocations": [ - "947:13:114" + "947:13:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5711, - "src": "947:13:114" + "referencedDeclaration": 6462, + "src": "947:13:127" }, - "referencedDeclaration": 5711, - "src": "947:13:114", + "referencedDeclaration": 6462, + "src": "947:13:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } }, "visibility": "internal" }, { - "id": 69769, + "id": 70555, "nodeType": "VariableDeclaration", - "src": "970:19:114", + "src": "970:19:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "IPR", - "nameLocation": "986:3:114", - "scope": 70240, + "nameLocation": "986:3:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" }, "typeName": { - "id": 69768, + "id": 70554, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69767, + "id": 70553, "name": "IPluginRegistry", "nameLocations": [ - "970:15:114" + "970:15:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 8823, - "src": "970:15:114" + "referencedDeclaration": 9574, + "src": "970:15:127" }, - "referencedDeclaration": 8823, - "src": "970:15:114", + "referencedDeclaration": 9574, + "src": "970:15:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, "visibility": "internal" }, { - "id": 69772, + "id": 70558, "nodeType": "VariableDeclaration", - "src": "995:19:114", + "src": "995:19:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "IMR", - "nameLocation": "1011:3:114", - "scope": 70240, + "nameLocation": "1011:3:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" }, "typeName": { - "id": 69771, + "id": 70557, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69770, + "id": 70556, "name": "IModuleRegistry", "nameLocations": [ - "995:15:114" + "995:15:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4295, - "src": "995:15:114" + "referencedDeclaration": 5018, + "src": "995:15:127" }, - "referencedDeclaration": 4295, - "src": "995:15:114", + "referencedDeclaration": 5018, + "src": "995:15:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, "visibility": "internal" }, { - "id": 69775, + "id": 70561, "nodeType": "VariableDeclaration", - "src": "1020:21:114", + "src": "1020:21:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "LegacyDAO", - "nameLocation": "1032:9:114", - "scope": 70240, + "nameLocation": "1032:9:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" }, "typeName": { - "id": 69774, + "id": 70560, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69773, + "id": 70559, "name": "SWLegacyDAO", "nameLocations": [ - "1020:11:114" + "1020:11:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3996, - "src": "1020:11:114" + "referencedDeclaration": 4719, + "src": "1020:11:127" }, - "referencedDeclaration": 3996, - "src": "1020:11:114", + "referencedDeclaration": 4719, + "src": "1020:11:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } }, "visibility": "internal" }, { - "id": 69778, + "id": 70564, "nodeType": "VariableDeclaration", - "src": "1047:15:114", + "src": "1047:15:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "NovaLogic", - "nameLocation": "1053:9:114", - "scope": 70240, + "nameLocation": "1053:9:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" }, "typeName": { - "id": 69777, + "id": 70563, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69776, + "id": 70562, "name": "INova", "nameLocations": [ - "1047:5:114" + "1047:5:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5673, - "src": "1047:5:114" + "referencedDeclaration": 6424, + "src": "1047:5:127" }, - "referencedDeclaration": 5673, - "src": "1047:5:114", + "referencedDeclaration": 6424, + "src": "1047:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, "visibility": "internal" }, { - "id": 69781, + "id": 70567, "nodeType": "VariableDeclaration", - "src": "1068:20:114", + "src": "1068:20:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "iLR", - "nameLocation": "1085:3:114", - "scope": 70240, + "nameLocation": "1085:3:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2630,20 +2646,20 @@ "typeString": "contract ILocalReputation" }, "typeName": { - "id": 69780, + "id": 70566, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69779, + "id": 70565, "name": "ILocalReputation", "nameLocations": [ - "1068:16:114" + "1068:16:127" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1423, - "src": "1068:16:114" + "src": "1068:16:127" }, "referencedDeclaration": 1423, - "src": "1068:16:114", + "src": "1068:16:127", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -2652,91 +2668,91 @@ "visibility": "internal" }, { - "id": 69784, + "id": 70570, "nodeType": "VariableDeclaration", - "src": "1094:16:114", + "src": "1094:16:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "AList", - "nameLocation": "1105:5:114", - "scope": 70240, + "nameLocation": "1105:5:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" }, "typeName": { - "id": 69783, + "id": 70569, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69782, + "id": 70568, "name": "IAllowlist", "nameLocations": [ - "1094:10:114" + "1094:10:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10439, - "src": "1094:10:114" + "referencedDeclaration": 11190, + "src": "1094:10:127" }, - "referencedDeclaration": 10439, - "src": "1094:10:114", + "referencedDeclaration": 11190, + "src": "1094:10:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, "visibility": "internal" }, { - "id": 69787, + "id": 70573, "nodeType": "VariableDeclaration", - "src": "1116:10:114", + "src": "1116:10:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "Nova", - "nameLocation": "1122:4:114", - "scope": 70240, + "nameLocation": "1122:4:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" }, "typeName": { - "id": 69786, + "id": 70572, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69785, + "id": 70571, "name": "INova", "nameLocations": [ - "1116:5:114" + "1116:5:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5673, - "src": "1116:5:114" + "referencedDeclaration": 6424, + "src": "1116:5:127" }, - "referencedDeclaration": 5673, - "src": "1116:5:114", + "referencedDeclaration": 6424, + "src": "1116:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, "visibility": "internal" }, { - "id": 69801, + "id": 70587, "nodeType": "VariableDeclaration", - "src": "1133:70:114", + "src": "1133:70:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A0", - "nameLocation": "1141:2:114", - "scope": 70240, + "nameLocation": "1141:2:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2744,10 +2760,10 @@ "typeString": "address" }, "typeName": { - "id": 69788, + "id": 70574, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1133:7:114", + "src": "1133:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2764,14 +2780,14 @@ "arguments": [ { "hexValue": "4163636f756e7430204465706c6f796572", - "id": 69796, + "id": 70582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1180:19:114", + "src": "1180:19:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_83833ae154ea86e6683c9bc3ce2595302eeb80cf8c4ea3f3a3f713309f617e86", "typeString": "literal_string \"Account0 Deployer\"" @@ -2786,18 +2802,18 @@ "typeString": "literal_string \"Account0 Deployer\"" } ], - "id": 69795, + "id": 70581, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1170:9:114", + "src": "1170:9:127", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 69797, + "id": 70583, "isConstant": false, "isLValue": false, "isPure": true, @@ -2806,7 +2822,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1170:30:114", + "src": "1170:30:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2821,26 +2837,26 @@ "typeString": "bytes32" } ], - "id": 69794, + "id": 70580, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1162:7:114", + "src": "1162:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 69793, + "id": 70579, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1162:7:114", + "src": "1162:7:127", "typeDescriptions": {} } }, - "id": 69798, + "id": 70584, "isConstant": false, "isLValue": false, "isPure": true, @@ -2849,7 +2865,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1162:39:114", + "src": "1162:39:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2864,26 +2880,26 @@ "typeString": "uint256" } ], - "id": 69792, + "id": 70578, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1154:7:114", + "src": "1154:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 69791, + "id": 70577, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "1154:7:114", + "src": "1154:7:127", "typeDescriptions": {} } }, - "id": 69799, + "id": 70585, "isConstant": false, "isLValue": false, "isPure": true, @@ -2892,7 +2908,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1154:48:114", + "src": "1154:48:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -2907,26 +2923,26 @@ "typeString": "uint160" } ], - "id": 69790, + "id": 70576, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1146:7:114", + "src": "1146:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69789, + "id": 70575, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1146:7:114", + "src": "1146:7:127", "typeDescriptions": {} } }, - "id": 69800, + "id": 70586, "isConstant": false, "isLValue": false, "isPure": true, @@ -2935,7 +2951,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1146:57:114", + "src": "1146:57:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2945,15 +2961,15 @@ "visibility": "internal" }, { - "id": 69803, + "id": 70589, "nodeType": "VariableDeclaration", - "src": "1210:10:114", + "src": "1210:10:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A1", - "nameLocation": "1218:2:114", - "scope": 70240, + "nameLocation": "1218:2:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2961,10 +2977,10 @@ "typeString": "address" }, "typeName": { - "id": 69802, + "id": 70588, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1210:7:114", + "src": "1210:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2974,15 +2990,15 @@ "visibility": "internal" }, { - "id": 69805, + "id": 70591, "nodeType": "VariableDeclaration", - "src": "1226:10:114", + "src": "1226:10:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A2", - "nameLocation": "1234:2:114", - "scope": 70240, + "nameLocation": "1234:2:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2990,10 +3006,10 @@ "typeString": "address" }, "typeName": { - "id": 69804, + "id": 70590, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1226:7:114", + "src": "1226:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3003,15 +3019,15 @@ "visibility": "internal" }, { - "id": 69807, + "id": 70593, "nodeType": "VariableDeclaration", - "src": "1242:10:114", + "src": "1242:10:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A3", - "nameLocation": "1250:2:114", - "scope": 70240, + "nameLocation": "1250:2:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3019,10 +3035,10 @@ "typeString": "address" }, "typeName": { - "id": 69806, + "id": 70592, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1242:7:114", + "src": "1242:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3032,15 +3048,15 @@ "visibility": "internal" }, { - "id": 69809, + "id": 70595, "nodeType": "VariableDeclaration", - "src": "1258:19:114", + "src": "1258:19:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A4_outsider", - "nameLocation": "1266:11:114", - "scope": 70240, + "nameLocation": "1266:11:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3048,10 +3064,10 @@ "typeString": "address" }, "typeName": { - "id": 69808, + "id": 70594, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1258:7:114", + "src": "1258:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3061,15 +3077,15 @@ "visibility": "internal" }, { - "id": 69811, + "id": 70597, "nodeType": "VariableDeclaration", - "src": "1284:14:114", + "src": "1284:14:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A1role", - "nameLocation": "1292:6:114", - "scope": 70240, + "nameLocation": "1292:6:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3077,10 +3093,10 @@ "typeString": "uint256" }, "typeName": { - "id": 69810, + "id": 70596, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1284:7:114", + "src": "1284:7:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3089,15 +3105,15 @@ "visibility": "internal" }, { - "id": 69813, + "id": 70599, "nodeType": "VariableDeclaration", - "src": "1304:14:114", + "src": "1304:14:127", "nodes": [], "constant": false, "mutability": "mutable", "name": "A2role", - "nameLocation": "1312:6:114", - "scope": 70240, + "nameLocation": "1312:6:127", + "scope": 71026, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3105,10 +3121,10 @@ "typeString": "uint256" }, "typeName": { - "id": 69812, + "id": 70598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1304:7:114", + "src": "1304:7:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3117,30 +3133,30 @@ "visibility": "internal" }, { - "id": 70143, + "id": 70929, "nodeType": "FunctionDefinition", - "src": "1325:1581:114", + "src": "1325:1581:127", "nodes": [], "body": { - "id": 70142, + "id": 70928, "nodeType": "Block", - "src": "1357:1549:114", + "src": "1357:1549:127", "nodes": [], "statements": [ { "expression": { - "id": 69829, + "id": 70615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69816, + "id": 70602, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1367:2:114", + "referencedDeclaration": 70589, + "src": "1367:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3158,14 +3174,14 @@ "arguments": [ { "hexValue": "4163636f756e7431", - "id": 69824, + "id": 70610, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1406:10:114", + "src": "1406:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_90288d947de9f02602ace76dd680e9fb33b46b72e1431246e586a1e54c926f7f", "typeString": "literal_string \"Account1\"" @@ -3180,18 +3196,18 @@ "typeString": "literal_string \"Account1\"" } ], - "id": 69823, + "id": 70609, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1396:9:114", + "src": "1396:9:127", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 69825, + "id": 70611, "isConstant": false, "isLValue": false, "isPure": true, @@ -3200,7 +3216,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1396:21:114", + "src": "1396:21:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3215,26 +3231,26 @@ "typeString": "bytes32" } ], - "id": 69822, + "id": 70608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1388:7:114", + "src": "1388:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 69821, + "id": 70607, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1388:7:114", + "src": "1388:7:127", "typeDescriptions": {} } }, - "id": 69826, + "id": 70612, "isConstant": false, "isLValue": false, "isPure": true, @@ -3243,7 +3259,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1388:30:114", + "src": "1388:30:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3258,26 +3274,26 @@ "typeString": "uint256" } ], - "id": 69820, + "id": 70606, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1380:7:114", + "src": "1380:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 69819, + "id": 70605, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "1380:7:114", + "src": "1380:7:127", "typeDescriptions": {} } }, - "id": 69827, + "id": 70613, "isConstant": false, "isLValue": false, "isPure": true, @@ -3286,7 +3302,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1380:39:114", + "src": "1380:39:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -3301,26 +3317,26 @@ "typeString": "uint160" } ], - "id": 69818, + "id": 70604, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1372:7:114", + "src": "1372:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69817, + "id": 70603, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1372:7:114", + "src": "1372:7:127", "typeDescriptions": {} } }, - "id": 69828, + "id": 70614, "isConstant": false, "isLValue": false, "isPure": true, @@ -3329,22 +3345,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1372:48:114", + "src": "1372:48:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1367:53:114", + "src": "1367:53:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69830, + "id": 70616, "nodeType": "ExpressionStatement", - "src": "1367:53:114" + "src": "1367:53:127" }, { "expression": { @@ -3352,12 +3368,12 @@ { "arguments": [ { - "id": 69836, + "id": 70622, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1447:2:114", + "referencedDeclaration": 70589, + "src": "1447:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3371,26 +3387,26 @@ "typeString": "address" } ], - "id": 69835, + "id": 70621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1439:7:114", + "src": "1439:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69834, + "id": 70620, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1439:7:114", + "src": "1439:7:127", "typeDescriptions": {} } }, - "id": 69837, + "id": 70623, "isConstant": false, "isLValue": false, "isPure": false, @@ -3399,7 +3415,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1439:11:114", + "src": "1439:11:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3408,14 +3424,14 @@ }, { "hexValue": "4163636f756e7431", - "id": 69838, + "id": 70624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1452:10:114", + "src": "1452:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_90288d947de9f02602ace76dd680e9fb33b46b72e1431246e586a1e54c926f7f", "typeString": "literal_string \"Account1\"" @@ -3435,33 +3451,33 @@ } ], "expression": { - "id": 69831, + "id": 70617, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1430:2:114", + "referencedDeclaration": 13541, + "src": "1430:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69833, + "id": 70619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1433:5:114", + "memberLocation": "1433:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1430:8:114", + "referencedDeclaration": 23909, + "src": "1430:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69839, + "id": 70625, "isConstant": false, "isLValue": false, "isPure": false, @@ -3470,31 +3486,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1430:33:114", + "src": "1430:33:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69840, + "id": 70626, "nodeType": "ExpressionStatement", - "src": "1430:33:114" + "src": "1430:33:127" }, { "expression": { - "id": 69854, + "id": 70640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69841, + "id": 70627, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1474:2:114", + "referencedDeclaration": 70591, + "src": "1474:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3512,14 +3528,14 @@ "arguments": [ { "hexValue": "4163636f756e7432", - "id": 69849, + "id": 70635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1513:10:114", + "src": "1513:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_de646117fbd49221b789f135fb6d53e0055ca93e9df6601274adc7cbc6b3355d", "typeString": "literal_string \"Account2\"" @@ -3534,18 +3550,18 @@ "typeString": "literal_string \"Account2\"" } ], - "id": 69848, + "id": 70634, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1503:9:114", + "src": "1503:9:127", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 69850, + "id": 70636, "isConstant": false, "isLValue": false, "isPure": true, @@ -3554,7 +3570,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1503:21:114", + "src": "1503:21:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3569,26 +3585,26 @@ "typeString": "bytes32" } ], - "id": 69847, + "id": 70633, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1495:7:114", + "src": "1495:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 69846, + "id": 70632, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1495:7:114", + "src": "1495:7:127", "typeDescriptions": {} } }, - "id": 69851, + "id": 70637, "isConstant": false, "isLValue": false, "isPure": true, @@ -3597,7 +3613,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1495:30:114", + "src": "1495:30:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3612,26 +3628,26 @@ "typeString": "uint256" } ], - "id": 69845, + "id": 70631, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1487:7:114", + "src": "1487:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 69844, + "id": 70630, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "1487:7:114", + "src": "1487:7:127", "typeDescriptions": {} } }, - "id": 69852, + "id": 70638, "isConstant": false, "isLValue": false, "isPure": true, @@ -3640,7 +3656,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1487:39:114", + "src": "1487:39:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -3655,26 +3671,26 @@ "typeString": "uint160" } ], - "id": 69843, + "id": 70629, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1479:7:114", + "src": "1479:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69842, + "id": 70628, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1479:7:114", + "src": "1479:7:127", "typeDescriptions": {} } }, - "id": 69853, + "id": 70639, "isConstant": false, "isLValue": false, "isPure": true, @@ -3683,22 +3699,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1479:48:114", + "src": "1479:48:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1474:53:114", + "src": "1474:53:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69855, + "id": 70641, "nodeType": "ExpressionStatement", - "src": "1474:53:114" + "src": "1474:53:127" }, { "expression": { @@ -3706,12 +3722,12 @@ { "arguments": [ { - "id": 69861, + "id": 70647, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1554:2:114", + "referencedDeclaration": 70591, + "src": "1554:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3725,26 +3741,26 @@ "typeString": "address" } ], - "id": 69860, + "id": 70646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1546:7:114", + "src": "1546:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69859, + "id": 70645, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1546:7:114", + "src": "1546:7:127", "typeDescriptions": {} } }, - "id": 69862, + "id": 70648, "isConstant": false, "isLValue": false, "isPure": false, @@ -3753,7 +3769,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1546:11:114", + "src": "1546:11:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3762,14 +3778,14 @@ }, { "hexValue": "4163636f756e7432", - "id": 69863, + "id": 70649, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1559:10:114", + "src": "1559:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_de646117fbd49221b789f135fb6d53e0055ca93e9df6601274adc7cbc6b3355d", "typeString": "literal_string \"Account2\"" @@ -3789,33 +3805,33 @@ } ], "expression": { - "id": 69856, + "id": 70642, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1537:2:114", + "referencedDeclaration": 13541, + "src": "1537:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69858, + "id": 70644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1540:5:114", + "memberLocation": "1540:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1537:8:114", + "referencedDeclaration": 23909, + "src": "1537:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69864, + "id": 70650, "isConstant": false, "isLValue": false, "isPure": false, @@ -3824,31 +3840,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1537:33:114", + "src": "1537:33:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69865, + "id": 70651, "nodeType": "ExpressionStatement", - "src": "1537:33:114" + "src": "1537:33:127" }, { "expression": { - "id": 69879, + "id": 70665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69866, + "id": 70652, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1581:2:114", + "referencedDeclaration": 70593, + "src": "1581:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3866,14 +3882,14 @@ "arguments": [ { "hexValue": "4163636f756e7433", - "id": 69874, + "id": 70660, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1620:10:114", + "src": "1620:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6748e019cd15b7f3286b1b310e7a138cc688ad94feca95f19d0c36b5254348ef", "typeString": "literal_string \"Account3\"" @@ -3888,18 +3904,18 @@ "typeString": "literal_string \"Account3\"" } ], - "id": 69873, + "id": 70659, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1610:9:114", + "src": "1610:9:127", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 69875, + "id": 70661, "isConstant": false, "isLValue": false, "isPure": true, @@ -3908,7 +3924,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1610:21:114", + "src": "1610:21:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3923,26 +3939,26 @@ "typeString": "bytes32" } ], - "id": 69872, + "id": 70658, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1602:7:114", + "src": "1602:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 69871, + "id": 70657, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1602:7:114", + "src": "1602:7:127", "typeDescriptions": {} } }, - "id": 69876, + "id": 70662, "isConstant": false, "isLValue": false, "isPure": true, @@ -3951,7 +3967,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1602:30:114", + "src": "1602:30:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3966,26 +3982,26 @@ "typeString": "uint256" } ], - "id": 69870, + "id": 70656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1594:7:114", + "src": "1594:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 69869, + "id": 70655, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "1594:7:114", + "src": "1594:7:127", "typeDescriptions": {} } }, - "id": 69877, + "id": 70663, "isConstant": false, "isLValue": false, "isPure": true, @@ -3994,7 +4010,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1594:39:114", + "src": "1594:39:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -4009,26 +4025,26 @@ "typeString": "uint160" } ], - "id": 69868, + "id": 70654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1586:7:114", + "src": "1586:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69867, + "id": 70653, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1586:7:114", + "src": "1586:7:127", "typeDescriptions": {} } }, - "id": 69878, + "id": 70664, "isConstant": false, "isLValue": false, "isPure": true, @@ -4037,22 +4053,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1586:48:114", + "src": "1586:48:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1581:53:114", + "src": "1581:53:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69880, + "id": 70666, "nodeType": "ExpressionStatement", - "src": "1581:53:114" + "src": "1581:53:127" }, { "expression": { @@ -4060,12 +4076,12 @@ { "arguments": [ { - "id": 69886, + "id": 70672, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1661:2:114", + "referencedDeclaration": 70593, + "src": "1661:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4079,26 +4095,26 @@ "typeString": "address" } ], - "id": 69885, + "id": 70671, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1653:7:114", + "src": "1653:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69884, + "id": 70670, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1653:7:114", + "src": "1653:7:127", "typeDescriptions": {} } }, - "id": 69887, + "id": 70673, "isConstant": false, "isLValue": false, "isPure": false, @@ -4107,7 +4123,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1653:11:114", + "src": "1653:11:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4116,14 +4132,14 @@ }, { "hexValue": "4163636f756e7433", - "id": 69888, + "id": 70674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:10:114", + "src": "1666:10:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6748e019cd15b7f3286b1b310e7a138cc688ad94feca95f19d0c36b5254348ef", "typeString": "literal_string \"Account3\"" @@ -4143,33 +4159,33 @@ } ], "expression": { - "id": 69881, + "id": 70667, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1644:2:114", + "referencedDeclaration": 13541, + "src": "1644:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69883, + "id": 70669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1647:5:114", + "memberLocation": "1647:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1644:8:114", + "referencedDeclaration": 23909, + "src": "1644:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69889, + "id": 70675, "isConstant": false, "isLValue": false, "isPure": false, @@ -4178,31 +4194,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1644:33:114", + "src": "1644:33:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69890, + "id": 70676, "nodeType": "ExpressionStatement", - "src": "1644:33:114" + "src": "1644:33:127" }, { "expression": { - "id": 69904, + "id": 70690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69891, + "id": 70677, "name": "A4_outsider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69809, - "src": "1688:11:114", + "referencedDeclaration": 70595, + "src": "1688:11:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4220,14 +4236,14 @@ "arguments": [ { "hexValue": "4163636f756e74345f6f7574", - "id": 69899, + "id": 70685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1736:14:114", + "src": "1736:14:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_40828841fb38f576b7c94582d2cbb3deabf70790abc8861f34d515b5f8af8774", "typeString": "literal_string \"Account4_out\"" @@ -4242,18 +4258,18 @@ "typeString": "literal_string \"Account4_out\"" } ], - "id": 69898, + "id": 70684, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1726:9:114", + "src": "1726:9:127", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 69900, + "id": 70686, "isConstant": false, "isLValue": false, "isPure": true, @@ -4262,7 +4278,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1726:25:114", + "src": "1726:25:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -4277,26 +4293,26 @@ "typeString": "bytes32" } ], - "id": 69897, + "id": 70683, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1718:7:114", + "src": "1718:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 69896, + "id": 70682, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1718:7:114", + "src": "1718:7:127", "typeDescriptions": {} } }, - "id": 69901, + "id": 70687, "isConstant": false, "isLValue": false, "isPure": true, @@ -4305,7 +4321,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1718:34:114", + "src": "1718:34:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4320,26 +4336,26 @@ "typeString": "uint256" } ], - "id": 69895, + "id": 70681, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1710:7:114", + "src": "1710:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 69894, + "id": 70680, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "1710:7:114", + "src": "1710:7:127", "typeDescriptions": {} } }, - "id": 69902, + "id": 70688, "isConstant": false, "isLValue": false, "isPure": true, @@ -4348,7 +4364,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1710:43:114", + "src": "1710:43:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -4363,26 +4379,26 @@ "typeString": "uint160" } ], - "id": 69893, + "id": 70679, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1702:7:114", + "src": "1702:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69892, + "id": 70678, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1702:7:114", + "src": "1702:7:127", "typeDescriptions": {} } }, - "id": 69903, + "id": 70689, "isConstant": false, "isLValue": false, "isPure": true, @@ -4391,22 +4407,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1702:52:114", + "src": "1702:52:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1688:66:114", + "src": "1688:66:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 69905, + "id": 70691, "nodeType": "ExpressionStatement", - "src": "1688:66:114" + "src": "1688:66:127" }, { "expression": { @@ -4414,12 +4430,12 @@ { "arguments": [ { - "id": 69911, + "id": 70697, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1781:2:114", + "referencedDeclaration": 70593, + "src": "1781:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4433,26 +4449,26 @@ "typeString": "address" } ], - "id": 69910, + "id": 70696, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1773:7:114", + "src": "1773:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69909, + "id": 70695, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1773:7:114", + "src": "1773:7:127", "typeDescriptions": {} } }, - "id": 69912, + "id": 70698, "isConstant": false, "isLValue": false, "isPure": false, @@ -4461,7 +4477,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1773:11:114", + "src": "1773:11:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4470,14 +4486,14 @@ }, { "hexValue": "4163636f756e74345f6f7574", - "id": 69913, + "id": 70699, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1786:14:114", + "src": "1786:14:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_40828841fb38f576b7c94582d2cbb3deabf70790abc8861f34d515b5f8af8774", "typeString": "literal_string \"Account4_out\"" @@ -4497,33 +4513,33 @@ } ], "expression": { - "id": 69906, + "id": 70692, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1764:2:114", + "referencedDeclaration": 13541, + "src": "1764:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69908, + "id": 70694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1767:5:114", + "memberLocation": "1767:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1764:8:114", + "referencedDeclaration": 23909, + "src": "1764:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69914, + "id": 70700, "isConstant": false, "isLValue": false, "isPure": false, @@ -4532,27 +4548,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1764:37:114", + "src": "1764:37:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69915, + "id": 70701, "nodeType": "ExpressionStatement", - "src": "1764:37:114" + "src": "1764:37:127" }, { "expression": { "arguments": [ { - "id": 69919, + "id": 70705, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1826:2:114", + "referencedDeclaration": 70587, + "src": "1826:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4567,33 +4583,33 @@ } ], "expression": { - "id": 69916, + "id": 70702, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1812:2:114", + "referencedDeclaration": 13541, + "src": "1812:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69918, + "id": 70704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1815:10:114", + "memberLocation": "1815:10:127", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "1812:13:114", + "referencedDeclaration": 24725, + "src": "1812:13:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69920, + "id": 70706, "isConstant": false, "isLValue": false, "isPure": false, @@ -4602,33 +4618,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1812:17:114", + "src": "1812:17:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69921, + "id": 70707, "nodeType": "ExpressionStatement", - "src": "1812:17:114" + "src": "1812:17:127" }, { "expression": { - "id": 69927, + "id": 70713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69922, + "id": 70708, "name": "LegacyDAO", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69775, - "src": "1840:9:114", + "referencedDeclaration": 70561, + "src": "1840:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } }, @@ -4638,39 +4654,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 69925, + "id": 70711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1852:15:114", + "src": "1852:15:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_SWLegacyDAO_$3996_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_SWLegacyDAO_$4719_$", "typeString": "function () returns (contract SWLegacyDAO)" }, "typeName": { - "id": 69924, + "id": 70710, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69923, + "id": 70709, "name": "SWLegacyDAO", "nameLocations": [ - "1856:11:114" + "1856:11:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3996, - "src": "1856:11:114" + "referencedDeclaration": 4719, + "src": "1856:11:127" }, - "referencedDeclaration": 3996, - "src": "1856:11:114", + "referencedDeclaration": 4719, + "src": "1856:11:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } } }, - "id": 69926, + "id": 70712, "isConstant": false, "isLValue": false, "isPure": false, @@ -4679,22 +4695,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1852:17:114", + "src": "1852:17:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } }, - "src": "1840:29:114", + "src": "1840:29:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } }, - "id": 69928, + "id": 70714, "nodeType": "ExpressionStatement", - "src": "1840:29:114" + "src": "1840:29:127" }, { "expression": { @@ -4702,14 +4718,14 @@ { "arguments": [ { - "id": 69934, + "id": 70720, "name": "LegacyDAO", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69775, - "src": "1896:9:114", + "referencedDeclaration": 70561, + "src": "1896:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } } @@ -4717,30 +4733,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SWLegacyDAO_$3996", + "typeIdentifier": "t_contract$_SWLegacyDAO_$4719", "typeString": "contract SWLegacyDAO" } ], - "id": 69933, + "id": 70719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1888:7:114", + "src": "1888:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69932, + "id": 70718, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1888:7:114", + "src": "1888:7:127", "typeDescriptions": {} } }, - "id": 69935, + "id": 70721, "isConstant": false, "isLValue": false, "isPure": false, @@ -4749,7 +4765,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1888:18:114", + "src": "1888:18:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4758,14 +4774,14 @@ }, { "hexValue": "4c656761637944414f49", - "id": 69936, + "id": 70722, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1908:12:114", + "src": "1908:12:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6331aff10e0e122274037154a29c0e5abe5d5f52c62c6ccac4678fe0e0ebc417", "typeString": "literal_string \"LegacyDAOI\"" @@ -4785,33 +4801,33 @@ } ], "expression": { - "id": 69929, + "id": 70715, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1879:2:114", + "referencedDeclaration": 13541, + "src": "1879:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69931, + "id": 70717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1882:5:114", + "memberLocation": "1882:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1879:8:114", + "referencedDeclaration": 23909, + "src": "1879:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69937, + "id": 70723, "isConstant": false, "isLValue": false, "isPure": false, @@ -4820,33 +4836,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1879:42:114", + "src": "1879:42:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69938, + "id": 70724, "nodeType": "ExpressionStatement", - "src": "1879:42:114" + "src": "1879:42:127" }, { "expression": { - "id": 69949, + "id": 70735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69939, + "id": 70725, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "1932:5:114", + "referencedDeclaration": 70570, + "src": "1932:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, @@ -4860,39 +4876,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 69945, + "id": 70731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1959:13:114", + "src": "1959:13:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Allowlist_$10353_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Allowlist_$11104_$", "typeString": "function () returns (contract Allowlist)" }, "typeName": { - "id": 69944, + "id": 70730, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69943, + "id": 70729, "name": "Allowlist", "nameLocations": [ - "1963:9:114" + "1963:9:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10353, - "src": "1963:9:114" + "referencedDeclaration": 11104, + "src": "1963:9:127" }, - "referencedDeclaration": 10353, - "src": "1963:9:114", + "referencedDeclaration": 11104, + "src": "1963:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } } }, - "id": 69946, + "id": 70732, "isConstant": false, "isLValue": false, "isPure": false, @@ -4901,10 +4917,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1959:15:114", + "src": "1959:15:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } } @@ -4912,30 +4928,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Allowlist_$10353", + "typeIdentifier": "t_contract$_Allowlist_$11104", "typeString": "contract Allowlist" } ], - "id": 69942, + "id": 70728, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1951:7:114", + "src": "1951:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69941, + "id": 70727, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1951:7:114", + "src": "1951:7:127", "typeDescriptions": {} } }, - "id": 69947, + "id": 70733, "isConstant": false, "isLValue": false, "isPure": false, @@ -4944,7 +4960,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1951:24:114", + "src": "1951:24:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4959,18 +4975,18 @@ "typeString": "address" } ], - "id": 69940, + "id": 70726, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10439, - "src": "1940:10:114", + "referencedDeclaration": 11190, + "src": "1940:10:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$10439_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 69948, + "id": 70734, "isConstant": false, "isLValue": false, "isPure": false, @@ -4979,22 +4995,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1940:36:114", + "src": "1940:36:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "src": "1932:44:114", + "src": "1932:44:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69950, + "id": 70736, "nodeType": "ExpressionStatement", - "src": "1932:44:114" + "src": "1932:44:127" }, { "expression": { @@ -5002,14 +5018,14 @@ { "arguments": [ { - "id": 69956, + "id": 70742, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2003:5:114", + "referencedDeclaration": 70570, + "src": "2003:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } } @@ -5017,30 +5033,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } ], - "id": 69955, + "id": 70741, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1995:7:114", + "src": "1995:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69954, + "id": 70740, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1995:7:114", + "src": "1995:7:127", "typeDescriptions": {} } }, - "id": 69957, + "id": 70743, "isConstant": false, "isLValue": false, "isPure": false, @@ -5049,7 +5065,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1995:14:114", + "src": "1995:14:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5058,14 +5074,14 @@ }, { "hexValue": "616c6c6f776c697374", - "id": 69958, + "id": 70744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2011:11:114", + "src": "2011:11:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_284535fe7d522ce98bb8b93595af63565d477c10bc5fb11ad1fdf3954913ff9e", "typeString": "literal_string \"allowlist\"" @@ -5085,33 +5101,33 @@ } ], "expression": { - "id": 69951, + "id": 70737, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1986:2:114", + "referencedDeclaration": 13541, + "src": "1986:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69953, + "id": 70739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1989:5:114", + "memberLocation": "1989:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1986:8:114", + "referencedDeclaration": 23909, + "src": "1986:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69959, + "id": 70745, "isConstant": false, "isLValue": false, "isPure": false, @@ -5120,27 +5136,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1986:37:114", + "src": "1986:37:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69960, + "id": 70746, "nodeType": "ExpressionStatement", - "src": "1986:37:114" + "src": "1986:37:127" }, { "expression": { "arguments": [ { - "id": 69964, + "id": 70750, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2055:2:114", + "referencedDeclaration": 70587, + "src": "2055:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5155,33 +5171,33 @@ } ], "expression": { - "id": 69961, + "id": 70747, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2034:5:114", + "referencedDeclaration": 70570, + "src": "2034:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 69963, + "id": 70749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2040:14:114", + "memberLocation": "2040:14:127", "memberName": "addToAllowlist", "nodeType": "MemberAccess", - "referencedDeclaration": 10381, - "src": "2034:20:114", + "referencedDeclaration": 11132, + "src": "2034:20:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 69965, + "id": 70751, "isConstant": false, "isLValue": false, "isPure": false, @@ -5190,31 +5206,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2034:24:114", + "src": "2034:24:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69966, + "id": 70752, "nodeType": "ExpressionStatement", - "src": "2034:24:114" + "src": "2034:24:127" }, { "expression": { - "id": 69977, + "id": 70763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69967, + "id": 70753, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "2069:3:114", + "referencedDeclaration": 70549, + "src": "2069:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -5230,39 +5246,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 69973, + "id": 70759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2090:9:114", + "src": "2090:9:127", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_AutID_$1016_$", "typeString": "function () returns (contract AutID)" }, "typeName": { - "id": 69972, + "id": 70758, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69971, + "id": 70757, "name": "AutID", "nameLocations": [ - "2094:5:114" + "2094:5:127" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1016, - "src": "2094:5:114" + "src": "2094:5:127" }, "referencedDeclaration": 1016, - "src": "2094:5:114", + "src": "2094:5:127", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" } } }, - "id": 69974, + "id": 70760, "isConstant": false, "isLValue": false, "isPure": false, @@ -5271,7 +5287,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2090:11:114", + "src": "2090:11:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", @@ -5286,26 +5302,26 @@ "typeString": "contract AutID" } ], - "id": 69970, + "id": 70756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2082:7:114", + "src": "2082:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69969, + "id": 70755, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2082:7:114", + "src": "2082:7:127", "typeDescriptions": {} } }, - "id": 69975, + "id": 70761, "isConstant": false, "isLValue": false, "isPure": false, @@ -5314,7 +5330,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2082:20:114", + "src": "2082:20:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5329,18 +5345,18 @@ "typeString": "address" } ], - "id": 69968, + "id": 70754, "name": "IAutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, - "src": "2075:6:114", + "src": "2075:6:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IAutID_$1194_$", "typeString": "type(contract IAutID)" } }, - "id": 69976, + "id": 70762, "isConstant": false, "isLValue": false, "isPure": false, @@ -5349,22 +5365,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2075:28:114", + "src": "2075:28:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "src": "2069:34:114", + "src": "2069:34:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 69978, + "id": 70764, "nodeType": "ExpressionStatement", - "src": "2069:34:114" + "src": "2069:34:127" }, { "expression": { @@ -5372,12 +5388,12 @@ { "arguments": [ { - "id": 69984, + "id": 70770, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "2130:3:114", + "referencedDeclaration": 70549, + "src": "2130:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -5391,26 +5407,26 @@ "typeString": "contract IAutID" } ], - "id": 69983, + "id": 70769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2122:7:114", + "src": "2122:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69982, + "id": 70768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2122:7:114", + "src": "2122:7:127", "typeDescriptions": {} } }, - "id": 69985, + "id": 70771, "isConstant": false, "isLValue": false, "isPure": false, @@ -5419,7 +5435,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2122:12:114", + "src": "2122:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5428,14 +5444,14 @@ }, { "hexValue": "417574494449", - "id": 69986, + "id": 70772, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2136:8:114", + "src": "2136:8:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f2e63437a80a7d751bc4005f9caa40cfde7d9e01f3b85d1b3adb153f66f20edb", "typeString": "literal_string \"AutIDI\"" @@ -5455,33 +5471,33 @@ } ], "expression": { - "id": 69979, + "id": 70765, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2113:2:114", + "referencedDeclaration": 13541, + "src": "2113:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 69981, + "id": 70767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2116:5:114", + "memberLocation": "2116:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2113:8:114", + "referencedDeclaration": 23909, + "src": "2113:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 69987, + "id": 70773, "isConstant": false, "isLValue": false, "isPure": false, @@ -5490,33 +5506,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2113:32:114", + "src": "2113:32:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69988, + "id": 70774, "nodeType": "ExpressionStatement", - "src": "2113:32:114" + "src": "2113:32:127" }, { "expression": { - "id": 69999, + "id": 70785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 69989, + "id": 70775, "name": "NovaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69778, - "src": "2156:9:114", + "referencedDeclaration": 70564, + "src": "2156:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, @@ -5530,39 +5546,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 69995, + "id": 70781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2182:5:114", + "src": "2182:5:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Nova_$4940_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Nova_$5691_$", "typeString": "function () returns (contract Nova)" }, "typeName": { - "id": 69994, + "id": 70780, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 69993, + "id": 70779, "name": "N", "nameLocations": [ - "2186:1:114" + "2186:1:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4940, - "src": "2186:1:114" + "referencedDeclaration": 5691, + "src": "2186:1:127" }, - "referencedDeclaration": 4940, - "src": "2186:1:114", + "referencedDeclaration": 5691, + "src": "2186:1:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } }, - "id": 69996, + "id": 70782, "isConstant": false, "isLValue": false, "isPure": false, @@ -5571,10 +5587,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2182:7:114", + "src": "2182:7:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } @@ -5582,30 +5598,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } ], - "id": 69992, + "id": 70778, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2174:7:114", + "src": "2174:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 69991, + "id": 70777, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2174:7:114", + "src": "2174:7:127", "typeDescriptions": {} } }, - "id": 69997, + "id": 70783, "isConstant": false, "isLValue": false, "isPure": false, @@ -5614,7 +5630,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2174:16:114", + "src": "2174:16:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5629,18 +5645,18 @@ "typeString": "address" } ], - "id": 69990, + "id": 70776, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "2168:5:114", + "referencedDeclaration": 6424, + "src": "2168:5:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INova_$5673_$", + "typeIdentifier": "t_type$_t_contract$_INova_$6424_$", "typeString": "type(contract INova)" } }, - "id": 69998, + "id": 70784, "isConstant": false, "isLValue": false, "isPure": false, @@ -5649,22 +5665,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2168:23:114", + "src": "2168:23:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "src": "2156:35:114", + "src": "2156:35:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 70000, + "id": 70786, "nodeType": "ExpressionStatement", - "src": "2156:35:114" + "src": "2156:35:127" }, { "expression": { @@ -5672,14 +5688,14 @@ { "arguments": [ { - "id": 70006, + "id": 70792, "name": "NovaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69778, - "src": "2218:9:114", + "referencedDeclaration": 70564, + "src": "2218:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5687,30 +5703,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70005, + "id": 70791, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2210:7:114", + "src": "2210:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70004, + "id": 70790, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2210:7:114", + "src": "2210:7:127", "typeDescriptions": {} } }, - "id": 70007, + "id": 70793, "isConstant": false, "isLValue": false, "isPure": false, @@ -5719,7 +5735,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2210:18:114", + "src": "2210:18:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5728,14 +5744,14 @@ }, { "hexValue": "4e6f76614c6f67696349", - "id": 70008, + "id": 70794, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2230:12:114", + "src": "2230:12:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6c7dc487e90490d19036ad33e964d3455354c89e958e41ea0ec582e37d448f61", "typeString": "literal_string \"NovaLogicI\"" @@ -5755,33 +5771,33 @@ } ], "expression": { - "id": 70001, + "id": 70787, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2201:2:114", + "referencedDeclaration": 13541, + "src": "2201:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70003, + "id": 70789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2204:5:114", + "memberLocation": "2204:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2201:8:114", + "referencedDeclaration": 23909, + "src": "2201:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 70009, + "id": 70795, "isConstant": false, "isLValue": false, "isPure": false, @@ -5790,33 +5806,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2201:42:114", + "src": "2201:42:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70010, + "id": 70796, "nodeType": "ExpressionStatement", - "src": "2201:42:114" + "src": "2201:42:127" }, { "expression": { - "id": 70025, + "id": 70811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70011, + "id": 70797, "name": "IMR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69772, - "src": "2254:3:114", + "referencedDeclaration": 70558, + "src": "2254:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, @@ -5831,14 +5847,14 @@ { "arguments": [ { - "id": 70020, + "id": 70806, "name": "AList", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69784, - "src": "2311:5:114", + "referencedDeclaration": 70570, + "src": "2311:5:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } } @@ -5846,30 +5862,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IAllowlist_$10439", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } ], - "id": 70019, + "id": 70805, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2303:7:114", + "src": "2303:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70018, + "id": 70804, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2303:7:114", + "src": "2303:7:127", "typeDescriptions": {} } }, - "id": 70021, + "id": 70807, "isConstant": false, "isLValue": false, "isPure": false, @@ -5878,7 +5894,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2303:14:114", + "src": "2303:14:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5893,39 +5909,39 @@ "typeString": "address" } ], - "id": 70017, + "id": 70803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2284:18:114", + "src": "2284:18:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ModuleRegistry_$4488_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ModuleRegistry_$5211_$", "typeString": "function (address) returns (contract ModuleRegistry)" }, "typeName": { - "id": 70016, + "id": 70802, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70015, + "id": 70801, "name": "ModuleRegistry", "nameLocations": [ - "2288:14:114" + "2288:14:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4488, - "src": "2288:14:114" + "referencedDeclaration": 5211, + "src": "2288:14:127" }, - "referencedDeclaration": 4488, - "src": "2288:14:114", + "referencedDeclaration": 5211, + "src": "2288:14:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } } }, - "id": 70022, + "id": 70808, "isConstant": false, "isLValue": false, "isPure": false, @@ -5934,10 +5950,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2284:34:114", + "src": "2284:34:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } } @@ -5945,30 +5961,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleRegistry_$4488", + "typeIdentifier": "t_contract$_ModuleRegistry_$5211", "typeString": "contract ModuleRegistry" } ], - "id": 70014, + "id": 70800, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2276:7:114", + "src": "2276:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70013, + "id": 70799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2276:7:114", + "src": "2276:7:127", "typeDescriptions": {} } }, - "id": 70023, + "id": 70809, "isConstant": false, "isLValue": false, "isPure": false, @@ -5977,7 +5993,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2276:43:114", + "src": "2276:43:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5992,18 +6008,18 @@ "typeString": "address" } ], - "id": 70012, + "id": 70798, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4295, - "src": "2260:15:114", + "referencedDeclaration": 5018, + "src": "2260:15:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModuleRegistry_$4295_$", + "typeIdentifier": "t_type$_t_contract$_IModuleRegistry_$5018_$", "typeString": "type(contract IModuleRegistry)" } }, - "id": 70024, + "id": 70810, "isConstant": false, "isLValue": false, "isPure": false, @@ -6012,22 +6028,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2260:60:114", + "src": "2260:60:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, - "src": "2254:66:114", + "src": "2254:66:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, - "id": 70026, + "id": 70812, "nodeType": "ExpressionStatement", - "src": "2254:66:114" + "src": "2254:66:127" }, { "expression": { @@ -6035,14 +6051,14 @@ { "arguments": [ { - "id": 70032, + "id": 70818, "name": "IMR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69772, - "src": "2347:3:114", + "referencedDeclaration": 70558, + "src": "2347:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } } @@ -6050,30 +6066,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } ], - "id": 70031, + "id": 70817, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2339:7:114", + "src": "2339:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70030, + "id": 70816, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2339:7:114", + "src": "2339:7:127", "typeDescriptions": {} } }, - "id": 70033, + "id": 70819, "isConstant": false, "isLValue": false, "isPure": false, @@ -6082,7 +6098,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2339:12:114", + "src": "2339:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6091,14 +6107,14 @@ }, { "hexValue": "4d6f64756c65526567697374727949", - "id": 70034, + "id": 70820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:17:114", + "src": "2353:17:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ec5556bcf4dc38615af607d399aed7edd6a81ca44721aa1c8e8d4ee1268967f6", "typeString": "literal_string \"ModuleRegistryI\"" @@ -6118,33 +6134,33 @@ } ], "expression": { - "id": 70027, + "id": 70813, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2330:2:114", + "referencedDeclaration": 13541, + "src": "2330:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70029, + "id": 70815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2333:5:114", + "memberLocation": "2333:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2330:8:114", + "referencedDeclaration": 23909, + "src": "2330:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 70035, + "id": 70821, "isConstant": false, "isLValue": false, "isPure": false, @@ -6153,33 +6169,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2330:41:114", + "src": "2330:41:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70036, + "id": 70822, "nodeType": "ExpressionStatement", - "src": "2330:41:114" + "src": "2330:41:127" }, { "expression": { - "id": 70051, + "id": 70837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70037, + "id": 70823, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2382:3:114", + "referencedDeclaration": 70555, + "src": "2382:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, @@ -6194,14 +6210,14 @@ { "arguments": [ { - "id": 70046, + "id": 70832, "name": "IMR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69772, - "src": "2439:3:114", + "referencedDeclaration": 70558, + "src": "2439:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } } @@ -6209,30 +6225,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } ], - "id": 70045, + "id": 70831, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2431:7:114", + "src": "2431:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70044, + "id": 70830, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2431:7:114", + "src": "2431:7:127", "typeDescriptions": {} } }, - "id": 70047, + "id": 70833, "isConstant": false, "isLValue": false, "isPure": false, @@ -6241,7 +6257,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2431:12:114", + "src": "2431:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6256,39 +6272,39 @@ "typeString": "address" } ], - "id": 70043, + "id": 70829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2412:18:114", + "src": "2412:18:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_PluginRegistry_$6344_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_PluginRegistry_$7095_$", "typeString": "function (address) returns (contract PluginRegistry)" }, "typeName": { - "id": 70042, + "id": 70828, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70041, + "id": 70827, "name": "PluginRegistry", "nameLocations": [ - "2416:14:114" + "2416:14:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6344, - "src": "2416:14:114" + "referencedDeclaration": 7095, + "src": "2416:14:127" }, - "referencedDeclaration": 6344, - "src": "2416:14:114", + "referencedDeclaration": 7095, + "src": "2416:14:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } } }, - "id": 70048, + "id": 70834, "isConstant": false, "isLValue": false, "isPure": false, @@ -6297,10 +6313,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2412:32:114", + "src": "2412:32:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } } @@ -6308,30 +6324,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } ], - "id": 70040, + "id": 70826, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2404:7:114", + "src": "2404:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70039, + "id": 70825, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2404:7:114", + "src": "2404:7:127", "typeDescriptions": {} } }, - "id": 70049, + "id": 70835, "isConstant": false, "isLValue": false, "isPure": false, @@ -6340,7 +6356,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2404:41:114", + "src": "2404:41:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6355,18 +6371,18 @@ "typeString": "address" } ], - "id": 70038, + "id": 70824, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8823, - "src": "2388:15:114", + "referencedDeclaration": 9574, + "src": "2388:15:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$8823_$", + "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$9574_$", "typeString": "type(contract IPluginRegistry)" } }, - "id": 70050, + "id": 70836, "isConstant": false, "isLValue": false, "isPure": false, @@ -6375,22 +6391,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2388:58:114", + "src": "2388:58:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "src": "2382:64:114", + "src": "2382:64:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70052, + "id": 70838, "nodeType": "ExpressionStatement", - "src": "2382:64:114" + "src": "2382:64:127" }, { "expression": { @@ -6398,14 +6414,14 @@ { "arguments": [ { - "id": 70058, + "id": 70844, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2473:3:114", + "referencedDeclaration": 70555, + "src": "2473:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } } @@ -6413,30 +6429,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } ], - "id": 70057, + "id": 70843, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2465:7:114", + "src": "2465:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70056, + "id": 70842, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2465:7:114", + "src": "2465:7:127", "typeDescriptions": {} } }, - "id": 70059, + "id": 70845, "isConstant": false, "isLValue": false, "isPure": false, @@ -6445,7 +6461,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2465:12:114", + "src": "2465:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6454,14 +6470,14 @@ }, { "hexValue": "506c7567696e526567697374727949", - "id": 70060, + "id": 70846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2479:17:114", + "src": "2479:17:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4ae4f4ae4d469a3b3aa67a3506d765f90342da40ce09d16c4e81c81f6b63c4c8", "typeString": "literal_string \"PluginRegistryI\"" @@ -6481,33 +6497,33 @@ } ], "expression": { - "id": 70053, + "id": 70839, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2456:2:114", + "referencedDeclaration": 13541, + "src": "2456:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70055, + "id": 70841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2459:5:114", + "memberLocation": "2459:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2456:8:114", + "referencedDeclaration": 23909, + "src": "2456:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 70061, + "id": 70847, "isConstant": false, "isLValue": false, "isPure": false, @@ -6516,31 +6532,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2456:41:114", + "src": "2456:41:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70062, + "id": 70848, "nodeType": "ExpressionStatement", - "src": "2456:41:114" + "src": "2456:41:127" }, { "expression": { - "id": 70073, + "id": 70859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70063, + "id": 70849, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "2508:3:114", + "referencedDeclaration": 70567, + "src": "2508:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -6556,39 +6572,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 70069, + "id": 70855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2539:19:114", + "src": "2539:19:127", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LocalReputation_$2915_$", "typeString": "function () returns (contract LocalReputation)" }, "typeName": { - "id": 70068, + "id": 70854, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70067, + "id": 70853, "name": "LocalReputation", "nameLocations": [ - "2543:15:114" + "2543:15:127" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "2543:15:114" + "src": "2543:15:127" }, "referencedDeclaration": 2915, - "src": "2543:15:114", + "src": "2543:15:127", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } } }, - "id": 70070, + "id": 70856, "isConstant": false, "isLValue": false, "isPure": false, @@ -6597,7 +6613,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2539:21:114", + "src": "2539:21:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", @@ -6612,26 +6628,26 @@ "typeString": "contract LocalReputation" } ], - "id": 70066, + "id": 70852, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2531:7:114", + "src": "2531:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70065, + "id": 70851, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2531:7:114", + "src": "2531:7:127", "typeDescriptions": {} } }, - "id": 70071, + "id": 70857, "isConstant": false, "isLValue": false, "isPure": false, @@ -6640,7 +6656,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2531:30:114", + "src": "2531:30:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6655,18 +6671,18 @@ "typeString": "address" } ], - "id": 70064, + "id": 70850, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "2514:16:114", + "src": "2514:16:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 70072, + "id": 70858, "isConstant": false, "isLValue": false, "isPure": false, @@ -6675,22 +6691,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2514:48:114", + "src": "2514:48:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "src": "2508:54:114", + "src": "2508:54:127", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 70074, + "id": 70860, "nodeType": "ExpressionStatement", - "src": "2508:54:114" + "src": "2508:54:127" }, { "expression": { @@ -6698,12 +6714,12 @@ { "arguments": [ { - "id": 70080, + "id": 70866, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "2604:3:114", + "referencedDeclaration": 70567, + "src": "2604:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -6717,26 +6733,26 @@ "typeString": "contract ILocalReputation" } ], - "id": 70079, + "id": 70865, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2596:7:114", + "src": "2596:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70078, + "id": 70864, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2596:7:114", + "src": "2596:7:127", "typeDescriptions": {} } }, - "id": 70081, + "id": 70867, "isConstant": false, "isLValue": false, "isPure": false, @@ -6745,7 +6761,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2596:12:114", + "src": "2596:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6761,33 +6777,33 @@ } ], "expression": { - "id": 70075, + "id": 70861, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2573:3:114", + "referencedDeclaration": 70555, + "src": "2573:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70077, + "id": 70863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2577:18:114", + "memberLocation": "2577:18:127", "memberName": "setDefaulLRAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8816, - "src": "2573:22:114", + "referencedDeclaration": 9567, + "src": "2573:22:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70082, + "id": 70868, "isConstant": false, "isLValue": false, "isPure": false, @@ -6796,33 +6812,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2573:36:114", + "src": "2573:36:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70083, + "id": 70869, "nodeType": "ExpressionStatement", - "src": "2573:36:114" + "src": "2573:36:127" }, { "expression": { - "id": 70110, + "id": 70896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70084, + "id": 70870, "name": "INR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69766, - "src": "2620:3:114", + "referencedDeclaration": 70552, + "src": "2620:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } }, @@ -6838,14 +6854,14 @@ "arguments": [ { "hexValue": "3132333435", - "id": 70093, + "id": 70879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2673:5:114", + "src": "2673:5:127", "typeDescriptions": { "typeIdentifier": "t_rational_12345_by_1", "typeString": "int_const 12345" @@ -6860,26 +6876,26 @@ "typeString": "int_const 12345" } ], - "id": 70092, + "id": 70878, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2665:7:114", + "src": "2665:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70091, + "id": 70877, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2665:7:114", + "src": "2665:7:127", "typeDescriptions": {} } }, - "id": 70094, + "id": 70880, "isConstant": false, "isLValue": false, "isPure": true, @@ -6888,7 +6904,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2665:14:114", + "src": "2665:14:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6898,12 +6914,12 @@ { "arguments": [ { - "id": 70097, + "id": 70883, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "2688:3:114", + "referencedDeclaration": 70549, + "src": "2688:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -6917,26 +6933,26 @@ "typeString": "contract IAutID" } ], - "id": 70096, + "id": 70882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2680:7:114", + "src": "2680:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70095, + "id": 70881, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2680:7:114", + "src": "2680:7:127", "typeDescriptions": {} } }, - "id": 70098, + "id": 70884, "isConstant": false, "isLValue": false, "isPure": false, @@ -6945,7 +6961,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2680:12:114", + "src": "2680:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6955,14 +6971,14 @@ { "arguments": [ { - "id": 70101, + "id": 70887, "name": "NovaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69778, - "src": "2702:9:114", + "referencedDeclaration": 70564, + "src": "2702:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -6970,30 +6986,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70100, + "id": 70886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2694:7:114", + "src": "2694:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70099, + "id": 70885, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2694:7:114", + "src": "2694:7:127", "typeDescriptions": {} } }, - "id": 70102, + "id": 70888, "isConstant": false, "isLValue": false, "isPure": false, @@ -7002,7 +7018,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2694:18:114", + "src": "2694:18:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7012,14 +7028,14 @@ { "arguments": [ { - "id": 70105, + "id": 70891, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2722:3:114", + "referencedDeclaration": 70555, + "src": "2722:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } } @@ -7027,30 +7043,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } ], - "id": 70104, + "id": 70890, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2714:7:114", + "src": "2714:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70103, + "id": 70889, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2714:7:114", + "src": "2714:7:127", "typeDescriptions": {} } }, - "id": 70106, + "id": 70892, "isConstant": false, "isLValue": false, "isPure": false, @@ -7059,7 +7075,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2714:12:114", + "src": "2714:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7086,39 +7102,39 @@ "typeString": "address" } ], - "id": 70090, + "id": 70876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2648:16:114", + "src": "2648:16:127", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$_t_contract$_NovaRegistry_$5370_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$_t_contract$_NovaRegistry_$6121_$", "typeString": "function (address,address,address,address) returns (contract NovaRegistry)" }, "typeName": { - "id": 70089, + "id": 70875, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70088, + "id": 70874, "name": "NovaRegistry", "nameLocations": [ - "2652:12:114" + "2652:12:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5370, - "src": "2652:12:114" + "referencedDeclaration": 6121, + "src": "2652:12:127" }, - "referencedDeclaration": 5370, - "src": "2652:12:114", + "referencedDeclaration": 6121, + "src": "2652:12:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } } }, - "id": 70107, + "id": 70893, "isConstant": false, "isLValue": false, "isPure": false, @@ -7127,10 +7143,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2648:79:114", + "src": "2648:79:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } } @@ -7138,30 +7154,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } ], - "id": 70087, + "id": 70873, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2640:7:114", + "src": "2640:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70086, + "id": 70872, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2640:7:114", + "src": "2640:7:127", "typeDescriptions": {} } }, - "id": 70108, + "id": 70894, "isConstant": false, "isLValue": false, "isPure": false, @@ -7170,7 +7186,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2640:88:114", + "src": "2640:88:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7185,18 +7201,18 @@ "typeString": "address" } ], - "id": 70085, + "id": 70871, "name": "INovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5711, - "src": "2626:13:114", + "referencedDeclaration": 6462, + "src": "2626:13:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaRegistry_$5711_$", + "typeIdentifier": "t_type$_t_contract$_INovaRegistry_$6462_$", "typeString": "type(contract INovaRegistry)" } }, - "id": 70109, + "id": 70895, "isConstant": false, "isLValue": false, "isPure": false, @@ -7205,22 +7221,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2626:103:114", + "src": "2626:103:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } }, - "src": "2620:109:114", + "src": "2620:109:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } }, - "id": 70111, + "id": 70897, "nodeType": "ExpressionStatement", - "src": "2620:109:114" + "src": "2620:109:127" }, { "expression": { @@ -7228,14 +7244,14 @@ { "arguments": [ { - "id": 70117, + "id": 70903, "name": "INR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69766, - "src": "2756:3:114", + "referencedDeclaration": 70552, + "src": "2756:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } } @@ -7243,30 +7259,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } ], - "id": 70116, + "id": 70902, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2748:7:114", + "src": "2748:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70115, + "id": 70901, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2748:7:114", + "src": "2748:7:127", "typeDescriptions": {} } }, - "id": 70118, + "id": 70904, "isConstant": false, "isLValue": false, "isPure": false, @@ -7275,7 +7291,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2748:12:114", + "src": "2748:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7284,14 +7300,14 @@ }, { "hexValue": "4e6f7661526567697374727949", - "id": 70119, + "id": 70905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:15:114", + "src": "2762:15:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a2c7534d63a08c6f23d67e731aac6ec2ef186fa72a2929c8400586a3343966f8", "typeString": "literal_string \"NovaRegistryI\"" @@ -7311,33 +7327,33 @@ } ], "expression": { - "id": 70112, + "id": 70898, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2739:2:114", + "referencedDeclaration": 13541, + "src": "2739:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70114, + "id": 70900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2742:5:114", + "memberLocation": "2742:5:127", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2739:8:114", + "referencedDeclaration": 23909, + "src": "2739:8:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 70120, + "id": 70906, "isConstant": false, "isLValue": false, "isPure": false, @@ -7346,31 +7362,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2739:39:114", + "src": "2739:39:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70121, + "id": 70907, "nodeType": "ExpressionStatement", - "src": "2739:39:114" + "src": "2739:39:127" }, { "assignments": [ - 70123 + 70909 ], "declarations": [ { "constant": false, - "id": 70123, + "id": 70909, "mutability": "mutable", "name": "NovaAddr", - "nameLocation": "2797:8:114", + "nameLocation": "2797:8:127", "nodeType": "VariableDeclaration", - "scope": 70142, - "src": "2789:16:114", + "scope": 70928, + "src": "2789:16:127", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7378,10 +7394,10 @@ "typeString": "address" }, "typeName": { - "id": 70122, + "id": 70908, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2789:7:114", + "src": "2789:7:127", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7391,19 +7407,19 @@ "visibility": "internal" } ], - "id": 70130, + "id": 70916, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 70126, + "id": 70912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2823:1:114", + "src": "2823:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7412,14 +7428,14 @@ }, { "hexValue": "6d65746164617461434944", - "id": 70127, + "id": 70913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2826:13:114", + "src": "2826:13:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_21cfc0bf6e6e555acacf8cb12972bf46b44f590ff19de3a2119eed91067eaf96", "typeString": "literal_string \"metadataCID\"" @@ -7428,14 +7444,14 @@ }, { "hexValue": "31", - "id": 70128, + "id": 70914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2841:1:114", + "src": "2841:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7459,33 +7475,33 @@ } ], "expression": { - "id": 70124, + "id": 70910, "name": "INR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69766, - "src": "2808:3:114", + "referencedDeclaration": 70552, + "src": "2808:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } }, - "id": 70125, + "id": 70911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2812:10:114", + "memberLocation": "2812:10:127", "memberName": "deployNova", "nodeType": "MemberAccess", - "referencedDeclaration": 5686, - "src": "2808:14:114", + "referencedDeclaration": 6437, + "src": "2808:14:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256,string memory,uint256) external returns (address)" } }, - "id": 70129, + "id": 70915, "isConstant": false, "isLValue": false, "isPure": false, @@ -7494,7 +7510,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2808:35:114", + "src": "2808:35:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7502,24 +7518,24 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2789:54:114" + "src": "2789:54:127" }, { "expression": { - "id": 70135, + "id": 70921, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70131, + "id": 70917, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2853:4:114", + "referencedDeclaration": 70573, + "src": "2853:4:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, @@ -7528,12 +7544,12 @@ "rightHandSide": { "arguments": [ { - "id": 70133, + "id": 70919, "name": "NovaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70123, - "src": "2866:8:114", + "referencedDeclaration": 70909, + "src": "2866:8:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7547,18 +7563,18 @@ "typeString": "address" } ], - "id": 70132, + "id": 70918, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "2860:5:114", + "referencedDeclaration": 6424, + "src": "2860:5:127", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INova_$5673_$", + "typeIdentifier": "t_type$_t_contract$_INova_$6424_$", "typeString": "type(contract INova)" } }, - "id": 70134, + "id": 70920, "isConstant": false, "isLValue": false, "isPure": false, @@ -7567,22 +7583,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2860:15:114", + "src": "2860:15:127", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "src": "2853:22:114", + "src": "2853:22:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 70136, + "id": 70922, "nodeType": "ExpressionStatement", - "src": "2853:22:114" + "src": "2853:22:127" }, { "expression": { @@ -7590,33 +7606,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70137, + "id": 70923, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2885:2:114", + "referencedDeclaration": 13541, + "src": "2885:2:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70139, + "id": 70925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2888:9:114", + "memberLocation": "2888:9:127", "memberName": "stopPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23991, - "src": "2885:12:114", + "referencedDeclaration": 24742, + "src": "2885:12:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70140, + "id": 70926, "isConstant": false, "isLValue": false, "isPure": false, @@ -7625,16 +7641,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2885:14:114", + "src": "2885:14:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70141, + "id": 70927, "nodeType": "ExpressionStatement", - "src": "2885:14:114" + "src": "2885:14:127" } ] }, @@ -7643,33 +7659,33 @@ "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "1334:5:114", + "nameLocation": "1334:5:127", "parameters": { - "id": 69814, + "id": 70600, "nodeType": "ParameterList", "parameters": [], - "src": "1339:2:114" + "src": "1339:2:127" }, "returnParameters": { - "id": 69815, + "id": 70601, "nodeType": "ParameterList", "parameters": [], - "src": "1357:0:114" + "src": "1357:0:127" }, - "scope": 70240, + "scope": 71026, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { - "id": 70239, + "id": 71025, "nodeType": "FunctionDefinition", - "src": "2912:713:114", + "src": "2912:713:127", "nodes": [], "body": { - "id": 70238, + "id": 71024, "nodeType": "Block", - "src": "2955:670:114", + "src": "2955:670:127", "nodes": [], "statements": [ { @@ -7680,7 +7696,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70154, + "id": 70940, "isConstant": false, "isLValue": false, "isPure": false, @@ -7690,12 +7706,12 @@ "expression": { "arguments": [ { - "id": 70149, + "id": 70935, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "2984:3:114", + "referencedDeclaration": 70549, + "src": "2984:3:127", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -7709,26 +7725,26 @@ "typeString": "contract IAutID" } ], - "id": 70148, + "id": 70934, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2976:7:114", + "src": "2976:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70147, + "id": 70933, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2976:7:114", + "src": "2976:7:127", "typeDescriptions": {} } }, - "id": 70150, + "id": 70936, "isConstant": false, "isLValue": false, "isPure": false, @@ -7737,36 +7753,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2976:12:114", + "src": "2976:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 70151, + "id": 70937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2989:4:114", + "memberLocation": "2989:4:127", "memberName": "code", "nodeType": "MemberAccess", - "src": "2976:17:114", + "src": "2976:17:127", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 70152, + "id": 70938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2994:6:114", + "memberLocation": "2994:6:127", "memberName": "length", "nodeType": "MemberAccess", - "src": "2976:24:114", + "src": "2976:24:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7776,21 +7792,21 @@ "operator": ">", "rightExpression": { "hexValue": "31", - "id": 70153, + "id": 70939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3003:1:114", + "src": "3003:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2976:28:114", + "src": "2976:28:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7798,14 +7814,14 @@ }, { "hexValue": "65787065637465642061494420636f6e7472616374", - "id": 70155, + "id": 70941, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3006:23:114", + "src": "3006:23:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_11d59728cb5826d3cf3c82bd0dc8bc984971dcf1587f76ab86c97b91baff8be5", "typeString": "literal_string \"expected aID contract\"" @@ -7824,21 +7840,21 @@ "typeString": "literal_string \"expected aID contract\"" } ], - "id": 70146, + "id": 70932, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2965:10:114", + "referencedDeclaration": 11481, + "src": "2965:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70156, + "id": 70942, "isConstant": false, "isLValue": false, "isPure": false, @@ -7847,16 +7863,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2965:65:114", + "src": "2965:65:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70157, + "id": 70943, "nodeType": "ExpressionStatement", - "src": "2965:65:114" + "src": "2965:65:127" }, { "expression": { @@ -7866,7 +7882,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70166, + "id": 70952, "isConstant": false, "isLValue": false, "isPure": false, @@ -7876,14 +7892,14 @@ "expression": { "arguments": [ { - "id": 70161, + "id": 70947, "name": "NovaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69778, - "src": "3059:9:114", + "referencedDeclaration": 70564, + "src": "3059:9:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -7891,30 +7907,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70160, + "id": 70946, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3051:7:114", + "src": "3051:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70159, + "id": 70945, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3051:7:114", + "src": "3051:7:127", "typeDescriptions": {} } }, - "id": 70162, + "id": 70948, "isConstant": false, "isLValue": false, "isPure": false, @@ -7923,36 +7939,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3051:18:114", + "src": "3051:18:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 70163, + "id": 70949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3070:4:114", + "memberLocation": "3070:4:127", "memberName": "code", "nodeType": "MemberAccess", - "src": "3051:23:114", + "src": "3051:23:127", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 70164, + "id": 70950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3075:6:114", + "memberLocation": "3075:6:127", "memberName": "length", "nodeType": "MemberAccess", - "src": "3051:30:114", + "src": "3051:30:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7962,21 +7978,21 @@ "operator": ">", "rightExpression": { "hexValue": "32", - "id": 70165, + "id": 70951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3084:1:114", + "src": "3084:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "3051:34:114", + "src": "3051:34:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7984,14 +8000,14 @@ }, { "hexValue": "6578706563746564204e6f766120636f6e7472616374", - "id": 70167, + "id": 70953, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3087:24:114", + "src": "3087:24:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0b492a50eb5bbfc3a03d0568e4d57f97eeb4d78f11f7450e5bb60b5d6538869", "typeString": "literal_string \"expected Nova contract\"" @@ -8010,21 +8026,21 @@ "typeString": "literal_string \"expected Nova contract\"" } ], - "id": 70158, + "id": 70944, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3040:10:114", + "referencedDeclaration": 11481, + "src": "3040:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70168, + "id": 70954, "isConstant": false, "isLValue": false, "isPure": false, @@ -8033,16 +8049,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3040:72:114", + "src": "3040:72:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70169, + "id": 70955, "nodeType": "ExpressionStatement", - "src": "3040:72:114" + "src": "3040:72:127" }, { "expression": { @@ -8052,7 +8068,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70178, + "id": 70964, "isConstant": false, "isLValue": false, "isPure": false, @@ -8062,14 +8078,14 @@ "expression": { "arguments": [ { - "id": 70173, + "id": 70959, "name": "IMR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69772, - "src": "3141:3:114", + "referencedDeclaration": 70558, + "src": "3141:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } } @@ -8077,30 +8093,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } ], - "id": 70172, + "id": 70958, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3133:7:114", + "src": "3133:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70171, + "id": 70957, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3133:7:114", + "src": "3133:7:127", "typeDescriptions": {} } }, - "id": 70174, + "id": 70960, "isConstant": false, "isLValue": false, "isPure": false, @@ -8109,36 +8125,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3133:12:114", + "src": "3133:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 70175, + "id": 70961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3146:4:114", + "memberLocation": "3146:4:127", "memberName": "code", "nodeType": "MemberAccess", - "src": "3133:17:114", + "src": "3133:17:127", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 70176, + "id": 70962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3151:6:114", + "memberLocation": "3151:6:127", "memberName": "length", "nodeType": "MemberAccess", - "src": "3133:24:114", + "src": "3133:24:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8148,21 +8164,21 @@ "operator": ">", "rightExpression": { "hexValue": "34", - "id": 70177, + "id": 70963, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3160:1:114", + "src": "3160:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "3133:28:114", + "src": "3133:28:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8170,14 +8186,14 @@ }, { "hexValue": "657870656374656420494d5220636f6e7472616374", - "id": 70179, + "id": 70965, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3163:23:114", + "src": "3163:23:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_807e3cf8c02b4f408d5b7f8a36dd99ad4d9ba0889b5a8147f68bcc105a3a2392", "typeString": "literal_string \"expected IMR contract\"" @@ -8196,21 +8212,21 @@ "typeString": "literal_string \"expected IMR contract\"" } ], - "id": 70170, + "id": 70956, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3122:10:114", + "referencedDeclaration": 11481, + "src": "3122:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70180, + "id": 70966, "isConstant": false, "isLValue": false, "isPure": false, @@ -8219,16 +8235,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3122:65:114", + "src": "3122:65:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70181, + "id": 70967, "nodeType": "ExpressionStatement", - "src": "3122:65:114" + "src": "3122:65:127" }, { "expression": { @@ -8238,7 +8254,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70190, + "id": 70976, "isConstant": false, "isLValue": false, "isPure": false, @@ -8248,14 +8264,14 @@ "expression": { "arguments": [ { - "id": 70185, + "id": 70971, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "3216:3:114", + "referencedDeclaration": 70555, + "src": "3216:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } } @@ -8263,30 +8279,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } ], - "id": 70184, + "id": 70970, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3208:7:114", + "src": "3208:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70183, + "id": 70969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3208:7:114", + "src": "3208:7:127", "typeDescriptions": {} } }, - "id": 70186, + "id": 70972, "isConstant": false, "isLValue": false, "isPure": false, @@ -8295,36 +8311,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3208:12:114", + "src": "3208:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 70187, + "id": 70973, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3221:4:114", + "memberLocation": "3221:4:127", "memberName": "code", "nodeType": "MemberAccess", - "src": "3208:17:114", + "src": "3208:17:127", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 70188, + "id": 70974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3226:6:114", + "memberLocation": "3226:6:127", "memberName": "length", "nodeType": "MemberAccess", - "src": "3208:24:114", + "src": "3208:24:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8334,21 +8350,21 @@ "operator": ">", "rightExpression": { "hexValue": "35", - "id": 70189, + "id": 70975, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3235:1:114", + "src": "3235:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, - "src": "3208:28:114", + "src": "3208:28:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8356,14 +8372,14 @@ }, { "hexValue": "65787065637465642049505220636f6e7472616374", - "id": 70191, + "id": 70977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3238:23:114", + "src": "3238:23:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f4c9feabd6eac747d7075071c58d4fcce1f7f71814aa80528d31573d0439b01", "typeString": "literal_string \"expected IPR contract\"" @@ -8382,21 +8398,21 @@ "typeString": "literal_string \"expected IPR contract\"" } ], - "id": 70182, + "id": 70968, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3197:10:114", + "referencedDeclaration": 11481, + "src": "3197:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70192, + "id": 70978, "isConstant": false, "isLValue": false, "isPure": false, @@ -8405,16 +8421,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3197:65:114", + "src": "3197:65:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70193, + "id": 70979, "nodeType": "ExpressionStatement", - "src": "3197:65:114" + "src": "3197:65:127" }, { "expression": { @@ -8424,7 +8440,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70202, + "id": 70988, "isConstant": false, "isLValue": false, "isPure": false, @@ -8434,14 +8450,14 @@ "expression": { "arguments": [ { - "id": 70197, + "id": 70983, "name": "INR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69766, - "src": "3291:3:114", + "referencedDeclaration": 70552, + "src": "3291:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } } @@ -8449,30 +8465,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INovaRegistry_$5711", + "typeIdentifier": "t_contract$_INovaRegistry_$6462", "typeString": "contract INovaRegistry" } ], - "id": 70196, + "id": 70982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3283:7:114", + "src": "3283:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70195, + "id": 70981, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3283:7:114", + "src": "3283:7:127", "typeDescriptions": {} } }, - "id": 70198, + "id": 70984, "isConstant": false, "isLValue": false, "isPure": false, @@ -8481,36 +8497,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3283:12:114", + "src": "3283:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 70199, + "id": 70985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3296:4:114", + "memberLocation": "3296:4:127", "memberName": "code", "nodeType": "MemberAccess", - "src": "3283:17:114", + "src": "3283:17:127", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 70200, + "id": 70986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3301:6:114", + "memberLocation": "3301:6:127", "memberName": "length", "nodeType": "MemberAccess", - "src": "3283:24:114", + "src": "3283:24:127", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8520,21 +8536,21 @@ "operator": ">", "rightExpression": { "hexValue": "36", - "id": 70201, + "id": 70987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3310:1:114", + "src": "3310:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, - "src": "3283:28:114", + "src": "3283:28:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8542,14 +8558,14 @@ }, { "hexValue": "657870656374656420494e52636f6e7472616374", - "id": 70203, + "id": 70989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3313:22:114", + "src": "3313:22:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad355a9b3e111626d3ac1fb294dd8beba3d271a89d2a539d6857d9cd6b37681f", "typeString": "literal_string \"expected INRcontract\"" @@ -8568,21 +8584,21 @@ "typeString": "literal_string \"expected INRcontract\"" } ], - "id": 70194, + "id": 70980, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3272:10:114", + "referencedDeclaration": 11481, + "src": "3272:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70204, + "id": 70990, "isConstant": false, "isLValue": false, "isPure": false, @@ -8591,16 +8607,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3272:64:114", + "src": "3272:64:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70205, + "id": 70991, "nodeType": "ExpressionStatement", - "src": "3272:64:114" + "src": "3272:64:127" }, { "expression": { @@ -8610,7 +8626,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 70214, + "id": 71000, "isConstant": false, "isLValue": false, "isPure": false, @@ -8620,33 +8636,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70207, + "id": 70993, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3357:4:114", + "referencedDeclaration": 70573, + "src": "3357:4:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 70208, + "id": 70994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3362:14:114", + "memberLocation": "3362:14:127", "memberName": "pluginRegistry", "nodeType": "MemberAccess", - "referencedDeclaration": 5650, - "src": "3357:19:114", + "referencedDeclaration": 6401, + "src": "3357:19:127", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$", "typeString": "function () external returns (address)" } }, - "id": 70209, + "id": 70995, "isConstant": false, "isLValue": false, "isPure": false, @@ -8655,7 +8671,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3357:21:114", + "src": "3357:21:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8667,14 +8683,14 @@ "rightExpression": { "arguments": [ { - "id": 70212, + "id": 70998, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "3390:3:114", + "referencedDeclaration": 70555, + "src": "3390:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } } @@ -8682,30 +8698,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } ], - "id": 70211, + "id": 70997, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3382:7:114", + "src": "3382:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70210, + "id": 70996, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3382:7:114", + "src": "3382:7:127", "typeDescriptions": {} } }, - "id": 70213, + "id": 70999, "isConstant": false, "isLValue": false, "isPure": false, @@ -8714,14 +8730,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3382:12:114", + "src": "3382:12:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3357:37:114", + "src": "3357:37:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8729,14 +8745,14 @@ }, { "hexValue": "657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373", - "id": 70215, + "id": 71001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3396:42:114", + "src": "3396:42:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d22f27b95896eabbab99fcabaadf3e8de23e18fb660b5d54a3781788de361b7a", "typeString": "literal_string \"expected another plugin registry address\"" @@ -8755,21 +8771,21 @@ "typeString": "literal_string \"expected another plugin registry address\"" } ], - "id": 70206, + "id": 70992, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3346:10:114", + "referencedDeclaration": 11481, + "src": "3346:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70216, + "id": 71002, "isConstant": false, "isLValue": false, "isPure": false, @@ -8778,16 +8794,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3346:93:114", + "src": "3346:93:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70217, + "id": 71003, "nodeType": "ExpressionStatement", - "src": "3346:93:114" + "src": "3346:93:127" }, { "expression": { @@ -8795,12 +8811,12 @@ { "arguments": [ { - "id": 70221, + "id": 71007, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "3511:2:114", + "referencedDeclaration": 70587, + "src": "3511:2:127", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8815,33 +8831,33 @@ } ], "expression": { - "id": 70219, + "id": 71005, "name": "IMR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69772, - "src": "3487:3:114", + "referencedDeclaration": 70558, + "src": "3487:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$4295", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, - "id": 70220, + "id": 71006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3491:19:114", + "memberLocation": "3491:19:127", "memberName": "isProtocolMaintaier", "nodeType": "MemberAccess", - "referencedDeclaration": 4288, - "src": "3487:23:114", + "referencedDeclaration": 5011, + "src": "3487:23:127", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 70222, + "id": 71008, "isConstant": false, "isLValue": false, "isPure": false, @@ -8850,7 +8866,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3487:27:114", + "src": "3487:27:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8859,14 +8875,14 @@ }, { "hexValue": "6465706c6f796572206e6f74206d61696e7461696e6572", - "id": 70223, + "id": 71009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3516:25:114", + "src": "3516:25:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3abb57b7addd45f26a84d19c709db079385077470184270c3e69442251443b99", "typeString": "literal_string \"deployer not maintainer\"" @@ -8885,21 +8901,21 @@ "typeString": "literal_string \"deployer not maintainer\"" } ], - "id": 70218, + "id": 71004, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3476:10:114", + "referencedDeclaration": 11481, + "src": "3476:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70224, + "id": 71010, "isConstant": false, "isLValue": false, "isPure": false, @@ -8908,16 +8924,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3476:66:114", + "src": "3476:66:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70225, + "id": 71011, "nodeType": "ExpressionStatement", - "src": "3476:66:114" + "src": "3476:66:127" }, { "expression": { @@ -8927,7 +8943,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 70234, + "id": 71020, "isConstant": false, "isLValue": false, "isPure": false, @@ -8937,33 +8953,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70227, + "id": 71013, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "3563:3:114", + "referencedDeclaration": 70555, + "src": "3563:3:127", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70228, + "id": 71014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3567:13:114", + "memberLocation": "3567:13:127", "memberName": "defaultLRAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 8810, - "src": "3563:17:114", + "referencedDeclaration": 9561, + "src": "3563:17:127", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 70229, + "id": 71015, "isConstant": false, "isLValue": false, "isPure": false, @@ -8972,7 +8988,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3563:19:114", + "src": "3563:19:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8985,14 +9001,14 @@ "arguments": [ { "hexValue": "30", - "id": 70232, + "id": 71018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3594:1:114", + "src": "3594:1:127", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -9007,26 +9023,26 @@ "typeString": "int_const 0" } ], - "id": 70231, + "id": 71017, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3586:7:114", + "src": "3586:7:127", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70230, + "id": 71016, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3586:7:114", + "src": "3586:7:127", "typeDescriptions": {} } }, - "id": 70233, + "id": 71019, "isConstant": false, "isLValue": false, "isPure": true, @@ -9035,14 +9051,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3586:10:114", + "src": "3586:10:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3563:33:114", + "src": "3563:33:127", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9050,14 +9066,14 @@ }, { "hexValue": "6e6f204c52206164647265737320736574", - "id": 70235, + "id": 71021, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3598:19:114", + "src": "3598:19:127", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4ea2b912b85fab8a5075a1f3ff80dfe5a52dc70bac6eddc73612c479de5108ab", "typeString": "literal_string \"no LR address set\"" @@ -9076,21 +9092,21 @@ "typeString": "literal_string \"no LR address set\"" } ], - "id": 70226, + "id": 71012, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3552:10:114", + "referencedDeclaration": 11481, + "src": "3552:10:127", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70236, + "id": 71022, "isConstant": false, "isLValue": false, "isPure": false, @@ -9099,16 +9115,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3552:66:114", + "src": "3552:66:127", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70237, + "id": 71023, "nodeType": "ExpressionStatement", - "src": "3552:66:114" + "src": "3552:66:127" } ] }, @@ -9117,20 +9133,20 @@ "kind": "function", "modifiers": [], "name": "testAreDeployedContracts", - "nameLocation": "2921:24:114", + "nameLocation": "2921:24:127", "parameters": { - "id": 70144, + "id": 70930, "nodeType": "ParameterList", "parameters": [], - "src": "2945:2:114" + "src": "2945:2:127" }, "returnParameters": { - "id": 70145, + "id": 70931, "nodeType": "ParameterList", "parameters": [], - "src": "2955:0:114" + "src": "2955:0:127" }, - "scope": 70240, + "scope": 71026, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -9140,53 +9156,53 @@ "baseContracts": [ { "baseName": { - "id": 69759, + "id": 70545, "name": "Test", "nameLocations": [ - "920:4:114" + "920:4:127" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 22678, - "src": "920:4:114" + "referencedDeclaration": 23429, + "src": "920:4:127" }, - "id": 69760, + "id": 70546, "nodeType": "InheritanceSpecifier", - "src": "920:4:114" + "src": "920:4:127" } ], "canonicalName": "DeploysInit", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "DeploysInit", - "nameLocation": "905:11:114", - "scope": 70241, + "nameLocation": "905:11:127", + "scope": 71027, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 114 + "id": 127 } \ No newline at end of file diff --git a/out/INovaMembershipSet.sol/INovaMembershipSet.json b/out/INovaMembershipSet.sol/INovaMembershipSet.json index 5dae644d..2dd67ed0 100644 --- a/out/INovaMembershipSet.sol/INovaMembershipSet.json +++ b/out/INovaMembershipSet.sol/INovaMembershipSet.json @@ -116,19 +116,19 @@ }, "ast": { "absolutePath": "contracts/components/interfaces/set/INovaMembershipSet.sol", - "id": 4706, + "id": 4095, "exportedSymbols": { "INovaMembershipSet": [ - 4705 + 4094 ] }, "nodeType": "SourceUnit", - "src": "31:240:28", + "src": "31:240:24", "nodes": [ { - "id": 4694, + "id": 4083, "nodeType": "PragmaDirective", - "src": "31:23:28", + "src": "31:23:24", "nodes": [], "literals": [ "solidity", @@ -137,50 +137,50 @@ ] }, { - "id": 4705, + "id": 4094, "nodeType": "ContractDefinition", - "src": "151:119:28", + "src": "151:119:24", "nodes": [ { - "id": 4697, + "id": 4086, "nodeType": "EventDefinition", - "src": "186:20:28", + "src": "186:20:24", "nodes": [], "anonymous": false, "eventSelector": "94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be", "name": "MemberAdded", - "nameLocation": "192:11:28", + "nameLocation": "192:11:24", "parameters": { - "id": 4696, + "id": 4085, "nodeType": "ParameterList", "parameters": [], - "src": "203:2:28" + "src": "203:2:24" } }, { - "id": 4704, + "id": 4093, "nodeType": "FunctionDefinition", - "src": "212:56:28", + "src": "212:56:24", "nodes": [], "functionSelector": "3b4da69f", "implemented": false, "kind": "function", "modifiers": [], "name": "join", - "nameLocation": "221:4:28", + "nameLocation": "221:4:24", "parameters": { - "id": 4702, + "id": 4091, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4699, + "id": 4088, "mutability": "mutable", "name": "newMember", - "nameLocation": "234:9:28", + "nameLocation": "234:9:24", "nodeType": "VariableDeclaration", - "scope": 4704, - "src": "226:17:28", + "scope": 4093, + "src": "226:17:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -188,10 +188,10 @@ "typeString": "address" }, "typeName": { - "id": 4698, + "id": 4087, "name": "address", "nodeType": "ElementaryTypeName", - "src": "226:7:28", + "src": "226:7:24", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -202,13 +202,13 @@ }, { "constant": false, - "id": 4701, + "id": 4090, "mutability": "mutable", "name": "role", - "nameLocation": "253:4:28", + "nameLocation": "253:4:24", "nodeType": "VariableDeclaration", - "scope": 4704, - "src": "245:12:28", + "scope": 4093, + "src": "245:12:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -216,10 +216,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4700, + "id": 4089, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "245:7:28", + "src": "245:7:24", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -228,15 +228,15 @@ "visibility": "internal" } ], - "src": "225:33:28" + "src": "225:33:24" }, "returnParameters": { - "id": 4703, + "id": 4092, "nodeType": "ParameterList", "parameters": [], - "src": "267:0:28" + "src": "267:0:24" }, - "scope": 4705, + "scope": 4094, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -248,22 +248,22 @@ "contractDependencies": [], "contractKind": "interface", "documentation": { - "id": 4695, + "id": 4084, "nodeType": "StructuredDocumentation", - "src": "56:95:28", + "src": "56:95:24", "text": "@title INova\n @notice The interface for the extension of each DAO that integrates AutID" }, "fullyImplemented": false, "linearizedBaseContracts": [ - 4705 + 4094 ], "name": "INovaMembershipSet", - "nameLocation": "161:18:28", - "scope": 4706, + "nameLocation": "161:18:24", + "scope": 4095, "usedErrors": [] } ], "license": "MIT" }, - "id": 28 + "id": 24 } \ No newline at end of file diff --git a/out/MultiPluginLR.t.sol/MultiPluginLR.json b/out/MultiPluginLR.t.sol/MultiPluginLR.json index 2a6374e7..b602d7e6 100644 --- a/out/MultiPluginLR.t.sol/MultiPluginLR.json +++ b/out/MultiPluginLR.t.sol/MultiPluginLR.json @@ -662,13 +662,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201ba9480620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001505760003560e01c806385226c8111620000c7578063b5508aa91162000086578063b5508aa91462000267578063ba414fa61462000271578063c060e3a3146200028c578063c69a50231462000296578063e20c9f7114620002ad578063fa7626d414620002b757600080fd5b806385226c81146200022357806388b7c9c1146200023c578063916a17c61462000246578063a09bd85c1462000250578063b003c44614620001d357600080fd5b80633de35f9111620001145780633de35f9114620001d35780633e5e3c2314620001dd5780633f7286f414620001e757806366d9a9a014620001f157806369970e6b146200020a57600080fd5b806203603214620001555780630a9254e414620001615780631ed7831c146200016b5780632092e8da146200018d5780632ade388014620001ba575b600080fd5b6200015f620002c5565b005b6200015f62000659565b620001756200103d565b60405162000184919062003c69565b60405180910390f35b620001a46200019e36600462003cb8565b620010a1565b6040805192835260208301919091520162000184565b620001c46200169f565b60405162000184919062003d39565b6200015f620017ed565b6200017562001e5c565b6200017562001ebe565b620001fb62001f20565b60405162000184919062003dff565b620002146200200a565b60405190815260200162000184565b6200022d62002782565b60405162000184919062003eb6565b6200015f6200285c565b620001fb620028d7565b620002146200026136600462003f1c565b620029c1565b6200022d62002b0d565b6200027b62002be7565b604051901515815260200162000184565b6200015f62002d14565b62000214620002a736600462003f1c565b62002d24565b6200017562002e22565b6007546200027b9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062002e84565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062002e84565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062002e84565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062002e84565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062002e84565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003f4e565b6001600160a01b0316146040518060600160405280602881526020016201ba376028913962002e84565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062003f7d565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002e84565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062003f4e565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002e84565b565b6200066362002ed2565b6025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201b9f7833981519152906306447d5690602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620006ee915062003bcf565b6001600160a01b039091168152602001604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556024546040519116906200074c9062003bdd565b6001600160a01b039091168152602001604051809103906000f08015801562000779573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316179055602454604051911690620007aa9062003beb565b6001600160a01b039091168152602001604051809103906000f080158015620007d7573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601e54602554604051631a104a5d60e11b815260609360009381169263342094ba92620008309291909116908590600190889060040162003fd8565b6020604051808303816000875af115801562000850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087691906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008b9929116908590600190899060040162004055565b6020604051808303816000875af1158015620008d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ff91906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620009429291169085906001908a90600401620040b0565b6020604051808303816000875af115801562000962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098891906200403b565b601e54602c54604051634d4547c960e01b81526001600160a01b039182166004820152602481018790529293501690634d4547c990604401600060405180830381600087803b158015620009db57600080fd5b505af1158015620009f0573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810187905291169250634d4547c99150604401600060405180830381600087803b15801562000a4557600080fd5b505af115801562000a5a573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000aaf57600080fd5b505af115801562000ac4573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000bd9926001926005929116906004016200410d565b600060405180830381600087803b15801562000bf457600080fd5b505af115801562000c09573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6257600080fd5b505af115801562000c77573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000cb7926001926005929116906004016200410d565b600060405180830381600087803b15801562000cd257600080fd5b505af115801562000ce7573d6000803e3d6000fd5b5050601c546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562000d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6191906200403b565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562000db4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dda91906200403b565b6024805460265460405163288c314960e21b81526001600160a01b03918216600482015293945062000e809391169163a230c5249101602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e54919062003f7d565b6040518060400160405280600d81526020016c2098903737ba1036b2b6b132b960991b81525062002e84565b6024805460275460405163288c314960e21b81526001600160a01b03918216600482015262000f2593919092169163a230c5249101602060405180830381865afa15801562000ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef9919062003f7d565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002e84565b601c5460265460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562000f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa69190620041a7565b60200151602a55601c5460275460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562001008573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200102e9190620041a7565b60200151602b55505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200109757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001078575b5050505050905090565b604051632631f2b160e11b81526103e761ffff831610600482015260009081906000805160206201b9f783398151915290634c63e5629060240160006040518083038186803b158015620010f457600080fd5b505afa15801562001109573d6000803e3d6000fd5b50505050620011176200200a565b602c546040516371c62f3960e11b815260048101839052919250620011c0916001600160a01b039091169063e38c5e7290602401602060405180830381865afa15801562001169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200118f91906200403b565b6000146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200120e57600080fd5b505af115801562001223573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200127757600080fd5b505af11580156200128c573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620012de57600080fd5b505af1158015620012f3573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200134757600080fd5b505af11580156200135c573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200141c57600080fd5b505af115801562001431573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200148557600080fd5b505af11580156200149a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b158015620014f357600080fd5b505af115801562001508573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200155c57600080fd5b505af115801562001571573d6000803e3d6000fd5b5050602c546040516371c62f3960e11b8152600481018590526200161f935061ffff871692506001600160a01b039091169063e38c5e7290602401602060405180830381865afa158015620015ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015f091906200403b565b146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201ba1783398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200169891906200403b565b9150915091565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620017e457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620017cc5783829060005260206000200180546200173890620041ff565b80601f01602080910402602001604051908101604052809291908181526020018280546200176690620041ff565b8015620017b75780601f106200178b57610100808354040283529160200191620017b7565b820191906000526020600020905b8154815290600101906020018083116200179957829003601f168201915b50505050508152602001906001019062001716565b505050508152505081526020019060010190620016c3565b50505050905090565b600080620017fd610132620010a1565b60405163ca669fa760e01b8152669ac844699ef964600482015291935091506000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b1580156200185157600080fd5b505af115801562001866573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa158015620018c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ee919062004254565b60275460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019ad57600080fd5b505af1158015620019c2573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103ea60048201526000805160206201b9f7833981519152925063e5d6bf029150602401600060405180830381600087803b15801562001a9057600080fd5b505af115801562001aa5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562001afe57600080fd5b505af115801562001b13573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001b7e57600080fd5b505af115801562001b93573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562001bec57600080fd5b505af115801562001c01573d6000803e3d6000fd5b5050602c5460275460405163daf9113760e01b8152600481018890526001600160a01b0391821660248201529116925063daf911379150604401600060405180830381600087803b15801562001c5657600080fd5b505af115801562001c6b573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa15801562001ccd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cf3919062004254565b905062001d376000826020015167ffffffffffffffff16116040518060400160405280600d81526020016c64656661756c7420737461746560981b81525062002e84565b62001d82826020015167ffffffffffffffff16600014604051806040016040528060168152602001753430b9903ab732bc3832b1ba32b21031b7b73a3934b160511b81525062002e84565b6020810151602c546040516371c62f3960e11b81526004810187905262001e569267ffffffffffffffff16916001600160a01b03169063e38c5e7290602401602060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200403b565b846020015167ffffffffffffffff1662001e209190620042af565b146040518060400160405280601681526020017518dbdb9d1c9a58881b9bdd081c9959da5cdd195c995960521b81525062002e84565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ff157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001fb25790505b5050505050815250508152602001906001019062001f44565b6040516372eb5f8160e11b81526103e860048201526000906000805160206201b9f78339815191529063e5d6bf0290602401600060405180830381600087803b1580156200205757600080fd5b505af11580156200206c573d6000803e3d6000fd5b505050506200207d602a54620029c1565b90506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020cd57600080fd5b505af1158015620020e2573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002118908490600401620042d1565b600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200219857600080fd5b505af1158015620021ad573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ff57600080fd5b505af115801562002214573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905263020aa9c660248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200226957600080fd5b505af11580156200227e573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b158015620022ce57600080fd5b505af1158015620022e3573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200233557600080fd5b505af11580156200234a573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905261a8f860248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200239d57600080fd5b505af1158015620023b2573d6000803e3d6000fd5b50506040516372eb5f8160e11b815261044b60048201526000805160206201b9f7833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200240057600080fd5b505af115801562002415573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200246e57600080fd5b505af115801562002483573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024d557600080fd5b505af1158015620024ea573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002520908490600401620042d1565b600060405180830381600087803b1580156200253b57600080fd5b505af115801562002550573d6000803e3d6000fd5b5050505060006000805160206201ba1783398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620025a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025cf91906200403b565b6040516372eb5f8160e11b81526103ea60048201529091506000805160206201b9f78339815191529063e5d6bf0290602401600060405180830381600087803b1580156200261c57600080fd5b505af115801562002631573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200268a57600080fd5b505af11580156200269f573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c69150620026d5908590600401620042d1565b600060405180830381600087803b158015620026f057600080fd5b505af115801562002705573d6000803e3d6000fd5b5050604051631135fc2960e21b8152600481018490526000805160206201b9f783398151915292506344d7f0a491506024016020604051808303816000875af115801562002757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277d919062003f7d565b505090565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620017e4578382906000526020600020018054620027c890620041ff565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f690620041ff565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b505050505081526020019060010190620027a6565b6000806200286c610133620010a1565b604051636ec1689f60e11b81526001600482015291935091506000805160206201b9f78339815191529063dd82d13e90602401600060405180830381600087803b158015620028ba57600080fd5b505af1158015620028cf573d6000803e3d6000fd5b505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029a857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620029695790505b50505050508152505081526020019060010190620028fb565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b15801562002a1957600080fd5b505af115801562002a2e573d6000803e3d6000fd5b5050602c546001600160a01b0316915063bd45a0a990508362002a53426001620042af565b62002a60426003620042af565b6040516001600160e01b031960e086901b168152600481019390935260806024840152601760848401527f687474703a2f2f5552494f465441534b6f66662e636f6d00000000000000000060a48401526044830191909152606482015260c4015b6020604051808303816000875af115801562002ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b0791906200403b565b92915050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620017e457838290600052602060002001805462002b5390620041ff565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8190620041ff565b801562002bd25780601f1062002ba65761010080835404028352916020019162002bd2565b820191906000526020600020905b81548152906001019060200180831162002bb457829003601f168201915b50505050508152602001906001019062002b31565b600754600090610100900460ff161562002c0a5750600754610100900460ff1690565b60006000805160206201b9f78339815191523b1562002d0f57604080516000805160206201b9f7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c91917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620042f8565b60408051601f198184030181529082905262002cad916200432b565b6000604051808303816000865af19150503d806000811462002cec576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf1565b606091505b509150508080602001905181019062002d0b919062003f7d565b9150505b919050565b60008062001e56610132620010a1565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b15801562002d7c57600080fd5b505af115801562002d91573d6000803e3d6000fd5b5050602d546001600160a01b0316915063bd45a0a990508362002db6426001620042af565b62002dc3426003620042af565b6040516001600160e01b031960e086901b1681526004810193909352608060248401526016608484015275687474703a2f2f5552494f465441534b6f6e2e636f6d60501b60a48401526044830191909152606482015260c40162002ac1565b6060601380548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b8162002ece577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162002ebb919062004349565b60405180910390a162002ece8262003a4b565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b15801562002f6357600080fd5b505af115801562002f78573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b60648201526000805160206201b9f7833981519152925063c657c7189150608401600060405180830381600087803b1580156200300d57600080fd5b505af115801562003022573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b60648201526000805160206201b9f7833981519152925063c657c7189150608401600060405180830381600087803b158015620030b757600080fd5b505af1158015620030cc573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200316d57600080fd5b505af115801562003182573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201b9f783398151915292506306447d569150602401600060405180830381600087803b158015620031db57600080fd5b505af1158015620031f0573d6000803e3d6000fd5b50505050604051620032029062003bf9565b604051809103906000f0801580156200321f573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b158015620032a957600080fd5b505af1158015620032be573d6000803e3d6000fd5b50505050604051620032d09062003c07565b604051809103906000f080158015620032ed573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200337657600080fd5b505af11580156200338b573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b158015620033d957600080fd5b505af1158015620033ee573d6000803e3d6000fd5b50505050604051620034009062003c15565b604051809103906000f0801580156200341d573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b158015620034a357600080fd5b505af1158015620034b8573d6000803e3d6000fd5b50505050604051620034ca9062003c23565b604051809103906000f080158015620034e7573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200357157600080fd5b505af115801562003586573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620035a7915062003c31565b6001600160a01b039091168152602001604051809103906000f080158015620035d4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200366357600080fd5b505af115801562003678573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062003699915062003c3f565b6001600160a01b039091168152602001604051809103906000f080158015620036c6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200375557600080fd5b505af11580156200376a573d6000803e3d6000fd5b505050506040516200377c9062003c4d565b604051809103906000f08015801562003799573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620037f957600080fd5b505af11580156200380e573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200383f9062003c5b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003884573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200391157600080fd5b505af115801562003926573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620039a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c8919062003f4e565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b815290519192506000805160206201b9f7833981519152916390c5013b9160048082019260009290919082900301818387803b15801562003a2f57600080fd5b505af115801562003a44573d6000803e3d6000fd5b5050505050565b8062003ac3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ab19060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ac362003ac6565b50565b6000805160206201b9f78339815191523b1562003bbe57604080516000805160206201b9f7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262003b599291602001620042f8565b60408051601f198184030181529082905262003b75916200432b565b6000604051808303816000865af19150503d806000811462003bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62003bb9565b606091505b505050505b6007805461ff001916610100179055565b612ff2806200437b83390190565b612fce806200736d83390190565b6115b3806200a33b83390190565b610120806200b8ee83390190565b610c72806200ba0e83390190565b613723806200c68083390190565b6123c2806200fda383390190565b6110db806201216583390190565b613043806201324083390190565b6137d5806201628383390190565b611f9f8062019a5883390190565b6020808252825182820181905260009190848201906040850190845b8181101562003cac5783516001600160a01b03168352928401929184019160010162003c85565b50909695505050505050565b60006020828403121562003ccb57600080fd5b813561ffff8116811462003cde57600080fd5b9392505050565b60005b8381101562003d0257818101518382015260200162003ce8565b50506000910152565b6000815180845262003d2581602086016020860162003ce5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562003def57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003dd857605f1989850301835262003dc584865162003d0b565b948e01949350918d019160010162003da6565b505050978a01979450509188019160010162003d60565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003ea757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003e915783516001600160e01b0319168252928b019260019290920191908b019062003e65565b50978a0197955050509187019160010162003e27565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003f0f57603f1988860301845262003efc85835162003d0b565b9450928501929085019060010162003edd565b5092979650505050505050565b60006020828403121562003f2f57600080fd5b5035919050565b80516001600160a01b038116811462002d0f57600080fd5b60006020828403121562003f6157600080fd5b62003cde8262003f36565b8051801515811462002d0f57600080fd5b60006020828403121562003f9057600080fd5b62003cde8262003f6c565b600081518084526020808501945080840160005b8381101562003fcd5781518752958201959082019060010162003faf565b509495945050505050565b60018060a01b038516815260a06020820152601160a08201527061206d6574616461746120737472696e6760781b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b9695505050505050565b6000602082840312156200404e57600080fd5b5051919050565b60018060a01b038516815260a06020820152601360a082015272309036b2ba30b230ba309039ba3934b733901960691b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60018060a01b038516815260a06020820152601560a08201527418481b595d1859185d18481cdd1c9a5b99c8189bdd605a1b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60a0808252600a90820152694131555345524e414d4560b01b60c082015260e060208201819052600690820152651d5c9c9c9b1b60d21b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b6040516080810167ffffffffffffffff81118282101715620041a157634e487b7160e01b600052604160045260246000fd5b60405290565b600060808284031215620041ba57600080fd5b620041c46200416f565b620041cf8362003f36565b81526020830151602082015260408301516040820152620041f36060840162003f6c565b60608201529392505050565b600181811c908216806200421457607f821691505b6020821081036200423557634e487b7160e01b600052602260045260246000fd5b50919050565b805167ffffffffffffffff8116811462002d0f57600080fd5b6000608082840312156200426757600080fd5b620042716200416f565b6200427c836200423b565b81526200428c602084016200423b565b602082015260408301516040820152606083015160608201528091505092915050565b8082018082111562002b0757634e487b7160e01b600052601160045260246000fd5b908152604060208201819052600690820152651d5c9b1d5c9b60d21b606082015260800190565b6001600160e01b03198316815281516000906200431d81600485016020870162003ce5565b919091016004019392505050565b600082516200433f81846020870162003ce5565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062003cde608083018462003d0b56fe60806040523480156200001157600080fd5b5060405162002ff238038062002ff28339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612886806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f33565b6104ab565b005b610208610218366004611f33565b61050b565b61020861022b366004611f5f565b610524565b61024361023e36600461205b565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120c6565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb366004612103565b610d8a565b6006546102439081565b610208610308366004612125565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f33565b611146565b60405161024d969594939291906121e7565b6102b4611224565b61026361036a366004612229565b61129f565b61024360035481565b61038b610386366004611f33565b61130a565b60405161024d9190612255565b6102086103a6366004612299565b61136c565b6103be6103b9366004611f33565b611463565b60405161024d94939291906122f5565b6103e16103dc366004612337565b611535565b60405161024d919061235c565b6102436103fc36600461236a565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612337565b6117e8565b610243610433366004612337565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612337565b61199e565b61024361047c366004611f33565b6119f0565b6005546102439081565b61049e610499366004611f33565b611b09565b60405161024d91906123c1565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b03166007828154811061054257610542612423565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612439565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca5750506040805160018082528183019092529192506000919060208083019080368337019050509050828260008151811061061857610618612423565b6020026020010181905250848160008151811061063757610637612423565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e90309086908690600401612460565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a919081019061250d565b90506000805b82518110156109325760025483828151811061075e5761075e612423565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd906125b3565b60008751116107b05760405162461bcd60e51b81526004016104fd906125dc565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612745565b60405180910390a193508061092a81612766565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd906125b3565b60008651116109b25760405162461bcd60e51b81526004016104fd906125dc565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612745565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b98919061278d565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be6612423565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125dc565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb1612423565b9060005260206000209060060201600201819055508260078681548110610cda57610cda612423565b90600052602060002090600602016003019081610cf79190612685565b508160078681548110610d0c57610d0c612423565b9060005260206000209060060201600401819055508060078681548110610d3557610d35612423565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612745565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061278d565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea1612423565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec96122bd565b816003811115610edb57610edb6122bd565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d612423565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f72612423565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612685565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b76122bd565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125fc565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a91906127af565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d8612423565b60009182526020909120600360049092020181015460ff1690811115611300576113006122bd565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906127af565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125fc565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d612423565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f8919061278d565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd906125b3565b60008451116116725760405162461bcd60e51b81526004016104fd906125dc565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612745565b60405180910390a195945050505050565b6000356001600160e01b0319168260405160240161180891815260200190565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093526000858152600a84528181206001600160a01b038616825290935290912054600b805484928692849260029290811061187657611876612423565b60009182526020909120600360049092020181015460ff169081111561189e5761189e6122bd565b8160038111156118b0576118b06122bd565b146118ce576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118ec576118ec612423565b60009182526020909120600160069092020101546001600160a01b0316146119265760405162461bcd60e51b81526004016104fd90612439565b6119308888611c67565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061196690859085906004016127cc565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119d6576119d6612423565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a5f9130916004016127f6565b602060405180830381865afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa0919061281a565b6040518263ffffffff1660e01b8152600401611abe91815260200190565b602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff9190612833565b61ffff1692915050565b611b4b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b5e57611b5e612423565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611bca906125fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf6906125fc565b8015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611ca657611ca6612423565b60009182526020909120600360049092020181015460ff1690811115611cce57611cce6122bd565b816003811115611ce057611ce06122bd565b14611cfe576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611d1c57611d1c612423565b60009182526020909120600160069092020101546001600160a01b031614611d565760405162461bcd60e51b81526004016104fd90612439565b4260078781548110611d6a57611d6a612423565b90600052602060002090600602016004015410611dbb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dcf57611dcf612423565b90600052602060002090600602016005015411611e235760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e5c57611e5c612423565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e8e57611e8e6122bd565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ecb57611ecb612423565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611f239291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f4557600080fd5b5035919050565b61ffff81168114611f5c57600080fd5b50565b60008060408385031215611f7257600080fd5b823591506020830135611f8481611f4c565b809150509250929050565b6001600160a01b0381168114611f5c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fe357611fe3611fa4565b604052919050565b600082601f830112611ffc57600080fd5b813567ffffffffffffffff81111561201657612016611fa4565b612029601f8201601f1916602001611fba565b81815284602083860101111561203e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561207357600080fd5b853561207e81611f8f565b945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6120ad88828901611feb565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120de57600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6000806040838503121561211657600080fd5b50508035926020909101359150565b60008060006040848603121561213a57600080fd5b83359250602084013567ffffffffffffffff8082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217c57600080fd5b87602082850101111561218e57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121c7576020818501810151868301820152016121ab565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061221460c08301866121a1565b60808301949094525060a00152949350505050565b6000806040838503121561223c57600080fd5b823561224781611f8f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101561228d57835183529284019291840191600101612271565b50909695505050505050565b6000602082840312156122ab57600080fd5b81356122b681611f8f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122f157634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0385168152608060208201819052600090612319908301866121a1565b905083604083015261232e60608301846122d3565b95945050505050565b6000806040838503121561234a57600080fd5b823591506020830135611f8481611f8f565b6020810161130482846122d3565b6000806000806080858703121561238057600080fd5b84359350602085013567ffffffffffffffff81111561239e57600080fd5b6123aa87828801611feb565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261240360e08401826121a1565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124c457607f198887030184526124b28683516121a1565b95509284019290840190600101612496565b50505050838203604085015284518083528186019282019060005b818110156124ff57845161ffff16835293830193918301916001016124df565b509098975050505050505050565b6000602080838503121561252057600080fd5b825167ffffffffffffffff8082111561253857600080fd5b818501915085601f83011261254c57600080fd5b81518181111561255e5761255e611fa4565b8060051b915061256f848301611fba565b818152918301840191848101908884111561258957600080fd5b938501935b838510156125a75784518252938501939085019061258e565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c9082168061261057607f821691505b60208210810361263057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561268057600081815260208120601f850160051c8101602086101561265d5750805b601f850160051c820191505b8181101561267c57828155600101612669565b5050505b505050565b815167ffffffffffffffff81111561269f5761269f611fa4565b6126b3816126ad84546125fc565b84612636565b602080601f8311600181146126e857600084156126d05750858301515b600019600386901b1c1916600185901b17855561267c565b600085815260208120601f198616915b82811015612717578886015182559484019460019091019084016126f8565b50858210156127355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061275e60408301846121a1565b949350505050565b60006001820161278657634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561279f57600080fd5b815180151581146122b657600080fd5b6000602082840312156127c157600080fd5b81516122b681611f8f565b6040815260006127df60408301856121a1565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061275e908301846121a1565b60006020828403121561282c57600080fd5b5051919050565b60006020828403121561284557600080fd5b81516122b681611f4c56fea2646970667358221220aeedfc5b64b82ad1ec7dc59187fdcce63baac85dca05d36042fb9809e15a88e764736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220aad0eaaa04bdb2498e32becfb3ff9f5ce35a43109865baabe0f702662d89e13464736f6c63430008130033", - "sourceMap": "446:5506:115:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;446:5506:115;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201bc7580620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001505760003560e01c806385226c8111620000c7578063b5508aa91162000086578063b5508aa91462000267578063ba414fa61462000271578063c060e3a3146200028c578063c69a50231462000296578063e20c9f7114620002ad578063fa7626d414620002b757600080fd5b806385226c81146200022357806388b7c9c1146200023c578063916a17c61462000246578063a09bd85c1462000250578063b003c44614620001d357600080fd5b80633de35f9111620001145780633de35f9114620001d35780633e5e3c2314620001dd5780633f7286f414620001e757806366d9a9a014620001f157806369970e6b146200020a57600080fd5b806203603214620001555780630a9254e414620001615780631ed7831c146200016b5780632092e8da146200018d5780632ade388014620001ba575b600080fd5b6200015f620002c5565b005b6200015f62000659565b620001756200103d565b60405162000184919062003c69565b60405180910390f35b620001a46200019e36600462003cb8565b620010a1565b6040805192835260208301919091520162000184565b620001c46200169f565b60405162000184919062003d39565b6200015f620017ed565b6200017562001e5c565b6200017562001ebe565b620001fb62001f20565b60405162000184919062003dff565b620002146200200a565b60405190815260200162000184565b6200022d62002782565b60405162000184919062003eb6565b6200015f6200285c565b620001fb620028d7565b620002146200026136600462003f1c565b620029c1565b6200022d62002b0d565b6200027b62002be7565b604051901515815260200162000184565b6200015f62002d14565b62000214620002a736600462003f1c565b62002d24565b6200017562002e22565b6007546200027b9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062002e84565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062002e84565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062002e84565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062002e84565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062002e84565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003f4e565b6001600160a01b0316146040518060600160405280602881526020016201bc186028913962002e84565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062003f7d565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002e84565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062003f4e565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002e84565b565b6200066362002ed2565b6025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201bbd8833981519152906306447d5690602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620006ee915062003bcf565b6001600160a01b039091168152602001604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556024546040519116906200074c9062003bdd565b6001600160a01b039091168152602001604051809103906000f08015801562000779573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316179055602454604051911690620007aa9062003beb565b6001600160a01b039091168152602001604051809103906000f080158015620007d7573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601e54602554604051631a104a5d60e11b815260609360009381169263342094ba92620008309291909116908590600190889060040162003fd8565b6020604051808303816000875af115801562000850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087691906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008b9929116908590600190899060040162004055565b6020604051808303816000875af1158015620008d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ff91906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620009429291169085906001908a90600401620040b0565b6020604051808303816000875af115801562000962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098891906200403b565b601e54602c54604051634d4547c960e01b81526001600160a01b039182166004820152602481018790529293501690634d4547c990604401600060405180830381600087803b158015620009db57600080fd5b505af1158015620009f0573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810187905291169250634d4547c99150604401600060405180830381600087803b15801562000a4557600080fd5b505af115801562000a5a573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000aaf57600080fd5b505af115801562000ac4573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000bd9926001926005929116906004016200410d565b600060405180830381600087803b15801562000bf457600080fd5b505af115801562000c09573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6257600080fd5b505af115801562000c77573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000cb7926001926005929116906004016200410d565b600060405180830381600087803b15801562000cd257600080fd5b505af115801562000ce7573d6000803e3d6000fd5b5050601c546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562000d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6191906200403b565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562000db4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dda91906200403b565b6024805460265460405163288c314960e21b81526001600160a01b03918216600482015293945062000e809391169163a230c5249101602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e54919062003f7d565b6040518060400160405280600d81526020016c2098903737ba1036b2b6b132b960991b81525062002e84565b6024805460275460405163288c314960e21b81526001600160a01b03918216600482015262000f2593919092169163a230c5249101602060405180830381865afa15801562000ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef9919062003f7d565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002e84565b601c5460265460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562000f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa69190620041a7565b60200151602a55601c5460275460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562001008573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200102e9190620041a7565b60200151602b55505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200109757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001078575b5050505050905090565b604051632631f2b160e11b81526103e761ffff831610600482015260009081906000805160206201bbd883398151915290634c63e5629060240160006040518083038186803b158015620010f457600080fd5b505afa15801562001109573d6000803e3d6000fd5b50505050620011176200200a565b602c546040516371c62f3960e11b815260048101839052919250620011c0916001600160a01b039091169063e38c5e7290602401602060405180830381865afa15801562001169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200118f91906200403b565b6000146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200120e57600080fd5b505af115801562001223573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200127757600080fd5b505af11580156200128c573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620012de57600080fd5b505af1158015620012f3573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200134757600080fd5b505af11580156200135c573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200141c57600080fd5b505af115801562001431573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200148557600080fd5b505af11580156200149a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b158015620014f357600080fd5b505af115801562001508573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200155c57600080fd5b505af115801562001571573d6000803e3d6000fd5b5050602c546040516371c62f3960e11b8152600481018590526200161f935061ffff871692506001600160a01b039091169063e38c5e7290602401602060405180830381865afa158015620015ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015f091906200403b565b146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201bbf883398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200169891906200403b565b9150915091565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620017e457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620017cc5783829060005260206000200180546200173890620041ff565b80601f01602080910402602001604051908101604052809291908181526020018280546200176690620041ff565b8015620017b75780601f106200178b57610100808354040283529160200191620017b7565b820191906000526020600020905b8154815290600101906020018083116200179957829003601f168201915b50505050508152602001906001019062001716565b505050508152505081526020019060010190620016c3565b50505050905090565b600080620017fd610132620010a1565b60405163ca669fa760e01b8152669ac844699ef964600482015291935091506000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b1580156200185157600080fd5b505af115801562001866573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa158015620018c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ee919062004254565b60275460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019ad57600080fd5b505af1158015620019c2573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103ea60048201526000805160206201bbd8833981519152925063e5d6bf029150602401600060405180830381600087803b15801562001a9057600080fd5b505af115801562001aa5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562001afe57600080fd5b505af115801562001b13573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001b7e57600080fd5b505af115801562001b93573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562001bec57600080fd5b505af115801562001c01573d6000803e3d6000fd5b5050602c5460275460405163daf9113760e01b8152600481018890526001600160a01b0391821660248201529116925063daf911379150604401600060405180830381600087803b15801562001c5657600080fd5b505af115801562001c6b573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa15801562001ccd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cf3919062004254565b905062001d376000826020015167ffffffffffffffff16116040518060400160405280600d81526020016c64656661756c7420737461746560981b81525062002e84565b62001d82826020015167ffffffffffffffff16600014604051806040016040528060168152602001753430b9903ab732bc3832b1ba32b21031b7b73a3934b160511b81525062002e84565b6020810151602c546040516371c62f3960e11b81526004810187905262001e569267ffffffffffffffff16916001600160a01b03169063e38c5e7290602401602060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200403b565b846020015167ffffffffffffffff1662001e209190620042af565b146040518060400160405280601681526020017518dbdb9d1c9a58881b9bdd081c9959da5cdd195c995960521b81525062002e84565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ff157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001fb25790505b5050505050815250508152602001906001019062001f44565b6040516372eb5f8160e11b81526103e860048201526000906000805160206201bbd88339815191529063e5d6bf0290602401600060405180830381600087803b1580156200205757600080fd5b505af11580156200206c573d6000803e3d6000fd5b505050506200207d602a54620029c1565b90506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020cd57600080fd5b505af1158015620020e2573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002118908490600401620042d1565b600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200219857600080fd5b505af1158015620021ad573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ff57600080fd5b505af115801562002214573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905263020aa9c660248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200226957600080fd5b505af11580156200227e573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b158015620022ce57600080fd5b505af1158015620022e3573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200233557600080fd5b505af11580156200234a573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905261a8f860248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200239d57600080fd5b505af1158015620023b2573d6000803e3d6000fd5b50506040516372eb5f8160e11b815261044b60048201526000805160206201bbd8833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200240057600080fd5b505af115801562002415573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200246e57600080fd5b505af115801562002483573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024d557600080fd5b505af1158015620024ea573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002520908490600401620042d1565b600060405180830381600087803b1580156200253b57600080fd5b505af115801562002550573d6000803e3d6000fd5b5050505060006000805160206201bbf883398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620025a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025cf91906200403b565b6040516372eb5f8160e11b81526103ea60048201529091506000805160206201bbd88339815191529063e5d6bf0290602401600060405180830381600087803b1580156200261c57600080fd5b505af115801562002631573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200268a57600080fd5b505af11580156200269f573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c69150620026d5908590600401620042d1565b600060405180830381600087803b158015620026f057600080fd5b505af115801562002705573d6000803e3d6000fd5b5050604051631135fc2960e21b8152600481018490526000805160206201bbd883398151915292506344d7f0a491506024016020604051808303816000875af115801562002757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277d919062003f7d565b505090565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620017e4578382906000526020600020018054620027c890620041ff565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f690620041ff565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b505050505081526020019060010190620027a6565b6000806200286c610133620010a1565b604051636ec1689f60e11b81526001600482015291935091506000805160206201bbd88339815191529063dd82d13e90602401600060405180830381600087803b158015620028ba57600080fd5b505af1158015620028cf573d6000803e3d6000fd5b505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029a857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620029695790505b50505050508152505081526020019060010190620028fb565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b15801562002a1957600080fd5b505af115801562002a2e573d6000803e3d6000fd5b5050602c546001600160a01b0316915063bd45a0a990508362002a53426001620042af565b62002a60426003620042af565b6040516001600160e01b031960e086901b168152600481019390935260806024840152601760848401527f687474703a2f2f5552494f465441534b6f66662e636f6d00000000000000000060a48401526044830191909152606482015260c4015b6020604051808303816000875af115801562002ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b0791906200403b565b92915050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620017e457838290600052602060002001805462002b5390620041ff565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8190620041ff565b801562002bd25780601f1062002ba65761010080835404028352916020019162002bd2565b820191906000526020600020905b81548152906001019060200180831162002bb457829003601f168201915b50505050508152602001906001019062002b31565b600754600090610100900460ff161562002c0a5750600754610100900460ff1690565b60006000805160206201bbd88339815191523b1562002d0f57604080516000805160206201bbd8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c91917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620042f8565b60408051601f198184030181529082905262002cad916200432b565b6000604051808303816000865af19150503d806000811462002cec576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf1565b606091505b509150508080602001905181019062002d0b919062003f7d565b9150505b919050565b60008062001e56610132620010a1565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b15801562002d7c57600080fd5b505af115801562002d91573d6000803e3d6000fd5b5050602d546001600160a01b0316915063bd45a0a990508362002db6426001620042af565b62002dc3426003620042af565b6040516001600160e01b031960e086901b1681526004810193909352608060248401526016608484015275687474703a2f2f5552494f465441534b6f6e2e636f6d60501b60a48401526044830191909152606482015260c40162002ac1565b6060601380548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b8162002ece577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162002ebb919062004349565b60405180910390a162002ece8262003a4b565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b15801562002f6357600080fd5b505af115801562002f78573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b60648201526000805160206201bbd8833981519152925063c657c7189150608401600060405180830381600087803b1580156200300d57600080fd5b505af115801562003022573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b60648201526000805160206201bbd8833981519152925063c657c7189150608401600060405180830381600087803b158015620030b757600080fd5b505af1158015620030cc573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200316d57600080fd5b505af115801562003182573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201bbd883398151915292506306447d569150602401600060405180830381600087803b158015620031db57600080fd5b505af1158015620031f0573d6000803e3d6000fd5b50505050604051620032029062003bf9565b604051809103906000f0801580156200321f573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b158015620032a957600080fd5b505af1158015620032be573d6000803e3d6000fd5b50505050604051620032d09062003c07565b604051809103906000f080158015620032ed573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200337657600080fd5b505af11580156200338b573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b158015620033d957600080fd5b505af1158015620033ee573d6000803e3d6000fd5b50505050604051620034009062003c15565b604051809103906000f0801580156200341d573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b158015620034a357600080fd5b505af1158015620034b8573d6000803e3d6000fd5b50505050604051620034ca9062003c23565b604051809103906000f080158015620034e7573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200357157600080fd5b505af115801562003586573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620035a7915062003c31565b6001600160a01b039091168152602001604051809103906000f080158015620035d4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200366357600080fd5b505af115801562003678573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062003699915062003c3f565b6001600160a01b039091168152602001604051809103906000f080158015620036c6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200375557600080fd5b505af11580156200376a573d6000803e3d6000fd5b505050506040516200377c9062003c4d565b604051809103906000f08015801562003799573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620037f957600080fd5b505af11580156200380e573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200383f9062003c5b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003884573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200391157600080fd5b505af115801562003926573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620039a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c8919062003f4e565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b815290519192506000805160206201bbd8833981519152916390c5013b9160048082019260009290919082900301818387803b15801562003a2f57600080fd5b505af115801562003a44573d6000803e3d6000fd5b5050505050565b8062003ac3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ab19060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ac362003ac6565b50565b6000805160206201bbd88339815191523b1562003bbe57604080516000805160206201bbd8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262003b599291602001620042f8565b60408051601f198184030181529082905262003b75916200432b565b6000604051808303816000865af19150503d806000811462003bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62003bb9565b606091505b505050505b6007805461ff001916610100179055565b612ff2806200437b83390190565b612fce806200736d83390190565b6115b3806200a33b83390190565b610120806200b8ee83390190565b610c72806200ba0e83390190565b613723806200c68083390190565b6125a3806200fda383390190565b6110db806201234683390190565b613043806201342183390190565b6137d5806201646483390190565b611f9f8062019c3983390190565b6020808252825182820181905260009190848201906040850190845b8181101562003cac5783516001600160a01b03168352928401929184019160010162003c85565b50909695505050505050565b60006020828403121562003ccb57600080fd5b813561ffff8116811462003cde57600080fd5b9392505050565b60005b8381101562003d0257818101518382015260200162003ce8565b50506000910152565b6000815180845262003d2581602086016020860162003ce5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562003def57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003dd857605f1989850301835262003dc584865162003d0b565b948e01949350918d019160010162003da6565b505050978a01979450509188019160010162003d60565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003ea757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003e915783516001600160e01b0319168252928b019260019290920191908b019062003e65565b50978a0197955050509187019160010162003e27565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003f0f57603f1988860301845262003efc85835162003d0b565b9450928501929085019060010162003edd565b5092979650505050505050565b60006020828403121562003f2f57600080fd5b5035919050565b80516001600160a01b038116811462002d0f57600080fd5b60006020828403121562003f6157600080fd5b62003cde8262003f36565b8051801515811462002d0f57600080fd5b60006020828403121562003f9057600080fd5b62003cde8262003f6c565b600081518084526020808501945080840160005b8381101562003fcd5781518752958201959082019060010162003faf565b509495945050505050565b60018060a01b038516815260a06020820152601160a08201527061206d6574616461746120737472696e6760781b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b9695505050505050565b6000602082840312156200404e57600080fd5b5051919050565b60018060a01b038516815260a06020820152601360a082015272309036b2ba30b230ba309039ba3934b733901960691b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60018060a01b038516815260a06020820152601560a08201527418481b595d1859185d18481cdd1c9a5b99c8189bdd605a1b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60a0808252600a90820152694131555345524e414d4560b01b60c082015260e060208201819052600690820152651d5c9c9c9b1b60d21b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b6040516080810167ffffffffffffffff81118282101715620041a157634e487b7160e01b600052604160045260246000fd5b60405290565b600060808284031215620041ba57600080fd5b620041c46200416f565b620041cf8362003f36565b81526020830151602082015260408301516040820152620041f36060840162003f6c565b60608201529392505050565b600181811c908216806200421457607f821691505b6020821081036200423557634e487b7160e01b600052602260045260246000fd5b50919050565b805167ffffffffffffffff8116811462002d0f57600080fd5b6000608082840312156200426757600080fd5b620042716200416f565b6200427c836200423b565b81526200428c602084016200423b565b602082015260408301516040820152606083015160608201528091505092915050565b8082018082111562002b0757634e487b7160e01b600052601160045260246000fd5b908152604060208201819052600690820152651d5c9b1d5c9b60d21b606082015260800190565b6001600160e01b03198316815281516000906200431d81600485016020870162003ce5565b919091016004019392505050565b600082516200433f81846020870162003ce5565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062003cde608083018462003d0b56fe60806040523480156200001157600080fd5b5060405162002ff238038062002ff28339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612886806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f33565b6104ab565b005b610208610218366004611f33565b61050b565b61020861022b366004611f5f565b610524565b61024361023e36600461205b565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120c6565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb366004612103565b610d8a565b6006546102439081565b610208610308366004612125565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f33565b611146565b60405161024d969594939291906121e7565b6102b4611224565b61026361036a366004612229565b61129f565b61024360035481565b61038b610386366004611f33565b61130a565b60405161024d9190612255565b6102086103a6366004612299565b61136c565b6103be6103b9366004611f33565b611463565b60405161024d94939291906122f5565b6103e16103dc366004612337565b611535565b60405161024d919061235c565b6102436103fc36600461236a565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612337565b6117e8565b610243610433366004612337565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612337565b61199e565b61024361047c366004611f33565b6119f0565b6005546102439081565b61049e610499366004611f33565b611b09565b60405161024d91906123c1565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b03166007828154811061054257610542612423565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612439565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca5750506040805160018082528183019092529192506000919060208083019080368337019050509050828260008151811061061857610618612423565b6020026020010181905250848160008151811061063757610637612423565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e90309086908690600401612460565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a919081019061250d565b90506000805b82518110156109325760025483828151811061075e5761075e612423565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd906125b3565b60008751116107b05760405162461bcd60e51b81526004016104fd906125dc565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612745565b60405180910390a193508061092a81612766565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd906125b3565b60008651116109b25760405162461bcd60e51b81526004016104fd906125dc565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612745565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b98919061278d565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be6612423565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125dc565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb1612423565b9060005260206000209060060201600201819055508260078681548110610cda57610cda612423565b90600052602060002090600602016003019081610cf79190612685565b508160078681548110610d0c57610d0c612423565b9060005260206000209060060201600401819055508060078681548110610d3557610d35612423565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612745565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061278d565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea1612423565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec96122bd565b816003811115610edb57610edb6122bd565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d612423565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f72612423565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612685565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b76122bd565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125fc565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a91906127af565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d8612423565b60009182526020909120600360049092020181015460ff1690811115611300576113006122bd565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906127af565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125fc565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d612423565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f8919061278d565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd906125b3565b60008451116116725760405162461bcd60e51b81526004016104fd906125dc565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612745565b60405180910390a195945050505050565b6000356001600160e01b0319168260405160240161180891815260200190565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093526000858152600a84528181206001600160a01b038616825290935290912054600b805484928692849260029290811061187657611876612423565b60009182526020909120600360049092020181015460ff169081111561189e5761189e6122bd565b8160038111156118b0576118b06122bd565b146118ce576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118ec576118ec612423565b60009182526020909120600160069092020101546001600160a01b0316146119265760405162461bcd60e51b81526004016104fd90612439565b6119308888611c67565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061196690859085906004016127cc565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119d6576119d6612423565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a5f9130916004016127f6565b602060405180830381865afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa0919061281a565b6040518263ffffffff1660e01b8152600401611abe91815260200190565b602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff9190612833565b61ffff1692915050565b611b4b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b5e57611b5e612423565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611bca906125fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf6906125fc565b8015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611ca657611ca6612423565b60009182526020909120600360049092020181015460ff1690811115611cce57611cce6122bd565b816003811115611ce057611ce06122bd565b14611cfe576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611d1c57611d1c612423565b60009182526020909120600160069092020101546001600160a01b031614611d565760405162461bcd60e51b81526004016104fd90612439565b4260078781548110611d6a57611d6a612423565b90600052602060002090600602016004015410611dbb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dcf57611dcf612423565b90600052602060002090600602016005015411611e235760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e5c57611e5c612423565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e8e57611e8e6122bd565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ecb57611ecb612423565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611f239291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f4557600080fd5b5035919050565b61ffff81168114611f5c57600080fd5b50565b60008060408385031215611f7257600080fd5b823591506020830135611f8481611f4c565b809150509250929050565b6001600160a01b0381168114611f5c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fe357611fe3611fa4565b604052919050565b600082601f830112611ffc57600080fd5b813567ffffffffffffffff81111561201657612016611fa4565b612029601f8201601f1916602001611fba565b81815284602083860101111561203e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561207357600080fd5b853561207e81611f8f565b945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6120ad88828901611feb565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120de57600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6000806040838503121561211657600080fd5b50508035926020909101359150565b60008060006040848603121561213a57600080fd5b83359250602084013567ffffffffffffffff8082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217c57600080fd5b87602082850101111561218e57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121c7576020818501810151868301820152016121ab565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061221460c08301866121a1565b60808301949094525060a00152949350505050565b6000806040838503121561223c57600080fd5b823561224781611f8f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101561228d57835183529284019291840191600101612271565b50909695505050505050565b6000602082840312156122ab57600080fd5b81356122b681611f8f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122f157634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0385168152608060208201819052600090612319908301866121a1565b905083604083015261232e60608301846122d3565b95945050505050565b6000806040838503121561234a57600080fd5b823591506020830135611f8481611f8f565b6020810161130482846122d3565b6000806000806080858703121561238057600080fd5b84359350602085013567ffffffffffffffff81111561239e57600080fd5b6123aa87828801611feb565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261240360e08401826121a1565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124c457607f198887030184526124b28683516121a1565b95509284019290840190600101612496565b50505050838203604085015284518083528186019282019060005b818110156124ff57845161ffff16835293830193918301916001016124df565b509098975050505050505050565b6000602080838503121561252057600080fd5b825167ffffffffffffffff8082111561253857600080fd5b818501915085601f83011261254c57600080fd5b81518181111561255e5761255e611fa4565b8060051b915061256f848301611fba565b818152918301840191848101908884111561258957600080fd5b938501935b838510156125a75784518252938501939085019061258e565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c9082168061261057607f821691505b60208210810361263057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561268057600081815260208120601f850160051c8101602086101561265d5750805b601f850160051c820191505b8181101561267c57828155600101612669565b5050505b505050565b815167ffffffffffffffff81111561269f5761269f611fa4565b6126b3816126ad84546125fc565b84612636565b602080601f8311600181146126e857600084156126d05750858301515b600019600386901b1c1916600185901b17855561267c565b600085815260208120601f198616915b82811015612717578886015182559484019460019091019084016126f8565b50858210156127355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061275e60408301846121a1565b949350505050565b60006001820161278657634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561279f57600080fd5b815180151581146122b657600080fd5b6000602082840312156127c157600080fd5b81516122b681611f8f565b6040815260006127df60408301856121a1565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061275e908301846121a1565b60006020828403121561282c57600080fd5b5051919050565b60006020828403121561284557600080fd5b81516122b681611f4c56fea2646970667358221220aeedfc5b64b82ad1ec7dc59187fdcce63baac85dca05d36042fb9809e15a88e764736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a26469706673582212200d520b8e4ebc8b82aa297190295a525102d8c0482029dfae787bfbdb3adc39b064736f6c63430008130033", + "sourceMap": "446:5506:128:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;446:5506:128;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001505760003560e01c806385226c8111620000c7578063b5508aa91162000086578063b5508aa91462000267578063ba414fa61462000271578063c060e3a3146200028c578063c69a50231462000296578063e20c9f7114620002ad578063fa7626d414620002b757600080fd5b806385226c81146200022357806388b7c9c1146200023c578063916a17c61462000246578063a09bd85c1462000250578063b003c44614620001d357600080fd5b80633de35f9111620001145780633de35f9114620001d35780633e5e3c2314620001dd5780633f7286f414620001e757806366d9a9a014620001f157806369970e6b146200020a57600080fd5b806203603214620001555780630a9254e414620001615780631ed7831c146200016b5780632092e8da146200018d5780632ade388014620001ba575b600080fd5b6200015f620002c5565b005b6200015f62000659565b620001756200103d565b60405162000184919062003c69565b60405180910390f35b620001a46200019e36600462003cb8565b620010a1565b6040805192835260208301919091520162000184565b620001c46200169f565b60405162000184919062003d39565b6200015f620017ed565b6200017562001e5c565b6200017562001ebe565b620001fb62001f20565b60405162000184919062003dff565b620002146200200a565b60405190815260200162000184565b6200022d62002782565b60405162000184919062003eb6565b6200015f6200285c565b620001fb620028d7565b620002146200026136600462003f1c565b620029c1565b6200022d62002b0d565b6200027b62002be7565b604051901515815260200162000184565b6200015f62002d14565b62000214620002a736600462003f1c565b62002d24565b6200017562002e22565b6007546200027b9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062002e84565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062002e84565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062002e84565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062002e84565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062002e84565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003f4e565b6001600160a01b0316146040518060600160405280602881526020016201ba376028913962002e84565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062003f7d565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002e84565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062003f4e565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002e84565b565b6200066362002ed2565b6025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201b9f7833981519152906306447d5690602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620006ee915062003bcf565b6001600160a01b039091168152602001604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556024546040519116906200074c9062003bdd565b6001600160a01b039091168152602001604051809103906000f08015801562000779573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316179055602454604051911690620007aa9062003beb565b6001600160a01b039091168152602001604051809103906000f080158015620007d7573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601e54602554604051631a104a5d60e11b815260609360009381169263342094ba92620008309291909116908590600190889060040162003fd8565b6020604051808303816000875af115801562000850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087691906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008b9929116908590600190899060040162004055565b6020604051808303816000875af1158015620008d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ff91906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620009429291169085906001908a90600401620040b0565b6020604051808303816000875af115801562000962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098891906200403b565b601e54602c54604051634d4547c960e01b81526001600160a01b039182166004820152602481018790529293501690634d4547c990604401600060405180830381600087803b158015620009db57600080fd5b505af1158015620009f0573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810187905291169250634d4547c99150604401600060405180830381600087803b15801562000a4557600080fd5b505af115801562000a5a573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000aaf57600080fd5b505af115801562000ac4573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000bd9926001926005929116906004016200410d565b600060405180830381600087803b15801562000bf457600080fd5b505af115801562000c09573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6257600080fd5b505af115801562000c77573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000cb7926001926005929116906004016200410d565b600060405180830381600087803b15801562000cd257600080fd5b505af115801562000ce7573d6000803e3d6000fd5b5050601c546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562000d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6191906200403b565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562000db4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dda91906200403b565b6024805460265460405163288c314960e21b81526001600160a01b03918216600482015293945062000e809391169163a230c5249101602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e54919062003f7d565b6040518060400160405280600d81526020016c2098903737ba1036b2b6b132b960991b81525062002e84565b6024805460275460405163288c314960e21b81526001600160a01b03918216600482015262000f2593919092169163a230c5249101602060405180830381865afa15801562000ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef9919062003f7d565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002e84565b601c5460265460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562000f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa69190620041a7565b60200151602a55601c5460275460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562001008573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200102e9190620041a7565b60200151602b55505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200109757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001078575b5050505050905090565b604051632631f2b160e11b81526103e761ffff831610600482015260009081906000805160206201b9f783398151915290634c63e5629060240160006040518083038186803b158015620010f457600080fd5b505afa15801562001109573d6000803e3d6000fd5b50505050620011176200200a565b602c546040516371c62f3960e11b815260048101839052919250620011c0916001600160a01b039091169063e38c5e7290602401602060405180830381865afa15801562001169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200118f91906200403b565b6000146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200120e57600080fd5b505af115801562001223573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200127757600080fd5b505af11580156200128c573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620012de57600080fd5b505af1158015620012f3573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200134757600080fd5b505af11580156200135c573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200141c57600080fd5b505af115801562001431573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200148557600080fd5b505af11580156200149a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b158015620014f357600080fd5b505af115801562001508573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200155c57600080fd5b505af115801562001571573d6000803e3d6000fd5b5050602c546040516371c62f3960e11b8152600481018590526200161f935061ffff871692506001600160a01b039091169063e38c5e7290602401602060405180830381865afa158015620015ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015f091906200403b565b146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201ba1783398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200169891906200403b565b9150915091565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620017e457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620017cc5783829060005260206000200180546200173890620041ff565b80601f01602080910402602001604051908101604052809291908181526020018280546200176690620041ff565b8015620017b75780601f106200178b57610100808354040283529160200191620017b7565b820191906000526020600020905b8154815290600101906020018083116200179957829003601f168201915b50505050508152602001906001019062001716565b505050508152505081526020019060010190620016c3565b50505050905090565b600080620017fd610132620010a1565b60405163ca669fa760e01b8152669ac844699ef964600482015291935091506000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b1580156200185157600080fd5b505af115801562001866573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa158015620018c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ee919062004254565b60275460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019ad57600080fd5b505af1158015620019c2573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103ea60048201526000805160206201b9f7833981519152925063e5d6bf029150602401600060405180830381600087803b15801562001a9057600080fd5b505af115801562001aa5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562001afe57600080fd5b505af115801562001b13573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001b7e57600080fd5b505af115801562001b93573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b15801562001bec57600080fd5b505af115801562001c01573d6000803e3d6000fd5b5050602c5460275460405163daf9113760e01b8152600481018890526001600160a01b0391821660248201529116925063daf911379150604401600060405180830381600087803b15801562001c5657600080fd5b505af115801562001c6b573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa15801562001ccd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cf3919062004254565b905062001d376000826020015167ffffffffffffffff16116040518060400160405280600d81526020016c64656661756c7420737461746560981b81525062002e84565b62001d82826020015167ffffffffffffffff16600014604051806040016040528060168152602001753430b9903ab732bc3832b1ba32b21031b7b73a3934b160511b81525062002e84565b6020810151602c546040516371c62f3960e11b81526004810187905262001e569267ffffffffffffffff16916001600160a01b03169063e38c5e7290602401602060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200403b565b846020015167ffffffffffffffff1662001e209190620042af565b146040518060400160405280601681526020017518dbdb9d1c9a58881b9bdd081c9959da5cdd195c995960521b81525062002e84565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ff157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001fb25790505b5050505050815250508152602001906001019062001f44565b6040516372eb5f8160e11b81526103e860048201526000906000805160206201b9f78339815191529063e5d6bf0290602401600060405180830381600087803b1580156200205757600080fd5b505af11580156200206c573d6000803e3d6000fd5b505050506200207d602a54620029c1565b90506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020cd57600080fd5b505af1158015620020e2573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002118908490600401620042d1565b600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200219857600080fd5b505af1158015620021ad573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ff57600080fd5b505af115801562002214573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905263020aa9c660248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200226957600080fd5b505af11580156200227e573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b158015620022ce57600080fd5b505af1158015620022e3573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200233557600080fd5b505af11580156200234a573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905261a8f860248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200239d57600080fd5b505af1158015620023b2573d6000803e3d6000fd5b50506040516372eb5f8160e11b815261044b60048201526000805160206201b9f7833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200240057600080fd5b505af115801562002415573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200246e57600080fd5b505af115801562002483573d6000803e3d6000fd5b505050506000805160206201ba1783398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024d557600080fd5b505af1158015620024ea573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002520908490600401620042d1565b600060405180830381600087803b1580156200253b57600080fd5b505af115801562002550573d6000803e3d6000fd5b5050505060006000805160206201ba1783398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620025a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025cf91906200403b565b6040516372eb5f8160e11b81526103ea60048201529091506000805160206201b9f78339815191529063e5d6bf0290602401600060405180830381600087803b1580156200261c57600080fd5b505af115801562002631573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201b9f7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200268a57600080fd5b505af11580156200269f573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c69150620026d5908590600401620042d1565b600060405180830381600087803b158015620026f057600080fd5b505af115801562002705573d6000803e3d6000fd5b5050604051631135fc2960e21b8152600481018490526000805160206201b9f783398151915292506344d7f0a491506024016020604051808303816000875af115801562002757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277d919062003f7d565b505090565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620017e4578382906000526020600020018054620027c890620041ff565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f690620041ff565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b505050505081526020019060010190620027a6565b6000806200286c610133620010a1565b604051636ec1689f60e11b81526001600482015291935091506000805160206201b9f78339815191529063dd82d13e90602401600060405180830381600087803b158015620028ba57600080fd5b505af1158015620028cf573d6000803e3d6000fd5b505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029a857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620029695790505b50505050508152505081526020019060010190620028fb565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b15801562002a1957600080fd5b505af115801562002a2e573d6000803e3d6000fd5b5050602c546001600160a01b0316915063bd45a0a990508362002a53426001620042af565b62002a60426003620042af565b6040516001600160e01b031960e086901b168152600481019390935260806024840152601760848401527f687474703a2f2f5552494f465441534b6f66662e636f6d00000000000000000060a48401526044830191909152606482015260c4015b6020604051808303816000875af115801562002ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b0791906200403b565b92915050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620017e457838290600052602060002001805462002b5390620041ff565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8190620041ff565b801562002bd25780601f1062002ba65761010080835404028352916020019162002bd2565b820191906000526020600020905b81548152906001019060200180831162002bb457829003601f168201915b50505050508152602001906001019062002b31565b600754600090610100900460ff161562002c0a5750600754610100900460ff1690565b60006000805160206201b9f78339815191523b1562002d0f57604080516000805160206201b9f7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c91917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620042f8565b60408051601f198184030181529082905262002cad916200432b565b6000604051808303816000865af19150503d806000811462002cec576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf1565b606091505b509150508080602001905181019062002d0b919062003f7d565b9150505b919050565b60008062001e56610132620010a1565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201b9f78339815191529063ca669fa790602401600060405180830381600087803b15801562002d7c57600080fd5b505af115801562002d91573d6000803e3d6000fd5b5050602d546001600160a01b0316915063bd45a0a990508362002db6426001620042af565b62002dc3426003620042af565b6040516001600160e01b031960e086901b1681526004810193909352608060248401526016608484015275687474703a2f2f5552494f465441534b6f6e2e636f6d60501b60a48401526044830191909152606482015260c40162002ac1565b6060601380548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b8162002ece577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162002ebb919062004349565b60405180910390a162002ece8262003a4b565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b15801562002f6357600080fd5b505af115801562002f78573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b60648201526000805160206201b9f7833981519152925063c657c7189150608401600060405180830381600087803b1580156200300d57600080fd5b505af115801562003022573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b60648201526000805160206201b9f7833981519152925063c657c7189150608401600060405180830381600087803b158015620030b757600080fd5b505af1158015620030cc573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200316d57600080fd5b505af115801562003182573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201b9f783398151915292506306447d569150602401600060405180830381600087803b158015620031db57600080fd5b505af1158015620031f0573d6000803e3d6000fd5b50505050604051620032029062003bf9565b604051809103906000f0801580156200321f573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b158015620032a957600080fd5b505af1158015620032be573d6000803e3d6000fd5b50505050604051620032d09062003c07565b604051809103906000f080158015620032ed573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200337657600080fd5b505af11580156200338b573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b158015620033d957600080fd5b505af1158015620033ee573d6000803e3d6000fd5b50505050604051620034009062003c15565b604051809103906000f0801580156200341d573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b158015620034a357600080fd5b505af1158015620034b8573d6000803e3d6000fd5b50505050604051620034ca9062003c23565b604051809103906000f080158015620034e7573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200357157600080fd5b505af115801562003586573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620035a7915062003c31565b6001600160a01b039091168152602001604051809103906000f080158015620035d4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200366357600080fd5b505af115801562003678573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062003699915062003c3f565b6001600160a01b039091168152602001604051809103906000f080158015620036c6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200375557600080fd5b505af11580156200376a573d6000803e3d6000fd5b505050506040516200377c9062003c4d565b604051809103906000f08015801562003799573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620037f957600080fd5b505af11580156200380e573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200383f9062003c5b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003884573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b60648201526000805160206201b9f78339815191529063c657c71890608401600060405180830381600087803b1580156200391157600080fd5b505af115801562003926573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620039a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c8919062003f4e565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b815290519192506000805160206201b9f7833981519152916390c5013b9160048082019260009290919082900301818387803b15801562003a2f57600080fd5b505af115801562003a44573d6000803e3d6000fd5b5050505050565b8062003ac3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ab19060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ac362003ac6565b50565b6000805160206201b9f78339815191523b1562003bbe57604080516000805160206201b9f7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262003b599291602001620042f8565b60408051601f198184030181529082905262003b75916200432b565b6000604051808303816000865af19150503d806000811462003bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62003bb9565b606091505b505050505b6007805461ff001916610100179055565b612ff2806200437b83390190565b612fce806200736d83390190565b6115b3806200a33b83390190565b610120806200b8ee83390190565b610c72806200ba0e83390190565b613723806200c68083390190565b6123c2806200fda383390190565b6110db806201216583390190565b613043806201324083390190565b6137d5806201628383390190565b611f9f8062019a5883390190565b6020808252825182820181905260009190848201906040850190845b8181101562003cac5783516001600160a01b03168352928401929184019160010162003c85565b50909695505050505050565b60006020828403121562003ccb57600080fd5b813561ffff8116811462003cde57600080fd5b9392505050565b60005b8381101562003d0257818101518382015260200162003ce8565b50506000910152565b6000815180845262003d2581602086016020860162003ce5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562003def57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003dd857605f1989850301835262003dc584865162003d0b565b948e01949350918d019160010162003da6565b505050978a01979450509188019160010162003d60565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003ea757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003e915783516001600160e01b0319168252928b019260019290920191908b019062003e65565b50978a0197955050509187019160010162003e27565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003f0f57603f1988860301845262003efc85835162003d0b565b9450928501929085019060010162003edd565b5092979650505050505050565b60006020828403121562003f2f57600080fd5b5035919050565b80516001600160a01b038116811462002d0f57600080fd5b60006020828403121562003f6157600080fd5b62003cde8262003f36565b8051801515811462002d0f57600080fd5b60006020828403121562003f9057600080fd5b62003cde8262003f6c565b600081518084526020808501945080840160005b8381101562003fcd5781518752958201959082019060010162003faf565b509495945050505050565b60018060a01b038516815260a06020820152601160a08201527061206d6574616461746120737472696e6760781b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b9695505050505050565b6000602082840312156200404e57600080fd5b5051919050565b60018060a01b038516815260a06020820152601360a082015272309036b2ba30b230ba309039ba3934b733901960691b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60018060a01b038516815260a06020820152601560a08201527418481b595d1859185d18481cdd1c9a5b99c8189bdd605a1b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60a0808252600a90820152694131555345524e414d4560b01b60c082015260e060208201819052600690820152651d5c9c9c9b1b60d21b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b6040516080810167ffffffffffffffff81118282101715620041a157634e487b7160e01b600052604160045260246000fd5b60405290565b600060808284031215620041ba57600080fd5b620041c46200416f565b620041cf8362003f36565b81526020830151602082015260408301516040820152620041f36060840162003f6c565b60608201529392505050565b600181811c908216806200421457607f821691505b6020821081036200423557634e487b7160e01b600052602260045260246000fd5b50919050565b805167ffffffffffffffff8116811462002d0f57600080fd5b6000608082840312156200426757600080fd5b620042716200416f565b6200427c836200423b565b81526200428c602084016200423b565b602082015260408301516040820152606083015160608201528091505092915050565b8082018082111562002b0757634e487b7160e01b600052601160045260246000fd5b908152604060208201819052600690820152651d5c9b1d5c9b60d21b606082015260800190565b6001600160e01b03198316815281516000906200431d81600485016020870162003ce5565b919091016004019392505050565b600082516200433f81846020870162003ce5565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062003cde608083018462003d0b56fe60806040523480156200001157600080fd5b5060405162002ff238038062002ff28339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612886806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f33565b6104ab565b005b610208610218366004611f33565b61050b565b61020861022b366004611f5f565b610524565b61024361023e36600461205b565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120c6565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb366004612103565b610d8a565b6006546102439081565b610208610308366004612125565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f33565b611146565b60405161024d969594939291906121e7565b6102b4611224565b61026361036a366004612229565b61129f565b61024360035481565b61038b610386366004611f33565b61130a565b60405161024d9190612255565b6102086103a6366004612299565b61136c565b6103be6103b9366004611f33565b611463565b60405161024d94939291906122f5565b6103e16103dc366004612337565b611535565b60405161024d919061235c565b6102436103fc36600461236a565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612337565b6117e8565b610243610433366004612337565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612337565b61199e565b61024361047c366004611f33565b6119f0565b6005546102439081565b61049e610499366004611f33565b611b09565b60405161024d91906123c1565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b03166007828154811061054257610542612423565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612439565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca5750506040805160018082528183019092529192506000919060208083019080368337019050509050828260008151811061061857610618612423565b6020026020010181905250848160008151811061063757610637612423565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e90309086908690600401612460565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a919081019061250d565b90506000805b82518110156109325760025483828151811061075e5761075e612423565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd906125b3565b60008751116107b05760405162461bcd60e51b81526004016104fd906125dc565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612745565b60405180910390a193508061092a81612766565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd906125b3565b60008651116109b25760405162461bcd60e51b81526004016104fd906125dc565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612745565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b98919061278d565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be6612423565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125dc565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb1612423565b9060005260206000209060060201600201819055508260078681548110610cda57610cda612423565b90600052602060002090600602016003019081610cf79190612685565b508160078681548110610d0c57610d0c612423565b9060005260206000209060060201600401819055508060078681548110610d3557610d35612423565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612745565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061278d565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea1612423565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec96122bd565b816003811115610edb57610edb6122bd565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d612423565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f72612423565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612685565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b76122bd565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125fc565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a91906127af565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d8612423565b60009182526020909120600360049092020181015460ff1690811115611300576113006122bd565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906127af565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125fc565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d612423565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f8919061278d565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd906125b3565b60008451116116725760405162461bcd60e51b81526004016104fd906125dc565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612745565b60405180910390a195945050505050565b6000356001600160e01b0319168260405160240161180891815260200190565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093526000858152600a84528181206001600160a01b038616825290935290912054600b805484928692849260029290811061187657611876612423565b60009182526020909120600360049092020181015460ff169081111561189e5761189e6122bd565b8160038111156118b0576118b06122bd565b146118ce576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118ec576118ec612423565b60009182526020909120600160069092020101546001600160a01b0316146119265760405162461bcd60e51b81526004016104fd90612439565b6119308888611c67565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061196690859085906004016127cc565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119d6576119d6612423565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a5f9130916004016127f6565b602060405180830381865afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa0919061281a565b6040518263ffffffff1660e01b8152600401611abe91815260200190565b602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff9190612833565b61ffff1692915050565b611b4b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b5e57611b5e612423565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611bca906125fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf6906125fc565b8015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611ca657611ca6612423565b60009182526020909120600360049092020181015460ff1690811115611cce57611cce6122bd565b816003811115611ce057611ce06122bd565b14611cfe576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611d1c57611d1c612423565b60009182526020909120600160069092020101546001600160a01b031614611d565760405162461bcd60e51b81526004016104fd90612439565b4260078781548110611d6a57611d6a612423565b90600052602060002090600602016004015410611dbb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dcf57611dcf612423565b90600052602060002090600602016005015411611e235760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e5c57611e5c612423565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e8e57611e8e6122bd565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ecb57611ecb612423565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611f239291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f4557600080fd5b5035919050565b61ffff81168114611f5c57600080fd5b50565b60008060408385031215611f7257600080fd5b823591506020830135611f8481611f4c565b809150509250929050565b6001600160a01b0381168114611f5c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fe357611fe3611fa4565b604052919050565b600082601f830112611ffc57600080fd5b813567ffffffffffffffff81111561201657612016611fa4565b612029601f8201601f1916602001611fba565b81815284602083860101111561203e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561207357600080fd5b853561207e81611f8f565b945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6120ad88828901611feb565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120de57600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6000806040838503121561211657600080fd5b50508035926020909101359150565b60008060006040848603121561213a57600080fd5b83359250602084013567ffffffffffffffff8082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217c57600080fd5b87602082850101111561218e57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121c7576020818501810151868301820152016121ab565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061221460c08301866121a1565b60808301949094525060a00152949350505050565b6000806040838503121561223c57600080fd5b823561224781611f8f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101561228d57835183529284019291840191600101612271565b50909695505050505050565b6000602082840312156122ab57600080fd5b81356122b681611f8f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122f157634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0385168152608060208201819052600090612319908301866121a1565b905083604083015261232e60608301846122d3565b95945050505050565b6000806040838503121561234a57600080fd5b823591506020830135611f8481611f8f565b6020810161130482846122d3565b6000806000806080858703121561238057600080fd5b84359350602085013567ffffffffffffffff81111561239e57600080fd5b6123aa87828801611feb565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261240360e08401826121a1565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124c457607f198887030184526124b28683516121a1565b95509284019290840190600101612496565b50505050838203604085015284518083528186019282019060005b818110156124ff57845161ffff16835293830193918301916001016124df565b509098975050505050505050565b6000602080838503121561252057600080fd5b825167ffffffffffffffff8082111561253857600080fd5b818501915085601f83011261254c57600080fd5b81518181111561255e5761255e611fa4565b8060051b915061256f848301611fba565b818152918301840191848101908884111561258957600080fd5b938501935b838510156125a75784518252938501939085019061258e565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c9082168061261057607f821691505b60208210810361263057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561268057600081815260208120601f850160051c8101602086101561265d5750805b601f850160051c820191505b8181101561267c57828155600101612669565b5050505b505050565b815167ffffffffffffffff81111561269f5761269f611fa4565b6126b3816126ad84546125fc565b84612636565b602080601f8311600181146126e857600084156126d05750858301515b600019600386901b1c1916600185901b17855561267c565b600085815260208120601f198616915b82811015612717578886015182559484019460019091019084016126f8565b50858210156127355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061275e60408301846121a1565b949350505050565b60006001820161278657634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561279f57600080fd5b815180151581146122b657600080fd5b6000602082840312156127c157600080fd5b81516122b681611f8f565b6040815260006127df60408301856121a1565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061275e908301846121a1565b60006020828403121561282c57600080fd5b5051919050565b60006020828403121561284557600080fd5b81516122b681611f4c56fea2646970667358221220aeedfc5b64b82ad1ec7dc59187fdcce63baac85dca05d36042fb9809e15a88e764736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220aad0eaaa04bdb2498e32becfb3ff9f5ce35a43109865baabe0f702662d89e13464736f6c63430008130033", - "sourceMap": "446:5506:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;609:1339:115;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3241:706:115;;;;;;:::i;:::-;;:::i;:::-;;;;1128:25:121;;;1184:2;1169:18;;1162:34;;;;1101:18;3241:706:115;954:248:121;3360:151:59;;;:::i;:::-;;;;;;;:::i;4744:772:115:-;;;:::i;3221:133:59:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2524:711:115:-;;;:::i;:::-;;;5207:25:121;;;5195:2;5180:18;2524:711:115;5061:177:121;2592:140:59;;;:::i;:::-;;;;;;;:::i;5645:305:115:-;;;:::i;3069:146:59:-;;;:::i;2087:213:115:-;;;;;;:::i;:::-;;:::i;2157:141:59:-;;;:::i;1819:584:52:-;;;:::i;:::-;;;6401:14:121;;6394:22;6376:41;;6364:2;6349:18;1819:584:52;6236:187:121;5522:117:115;;;:::i;2306:212::-;;;;;;:::i;:::-;;:::i;2304:142:59:-;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;6969:51:121;3476:66:114;;3487:3;;;;;:23;;6942:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;609:1339:115:-;652:13;:11;:13::i;:::-;690:2;;676:17;;-1:-1:-1;;;676:17:115;;-1:-1:-1;;;;;690:2:115;;;676:17;;;6969:51:121;-1:-1:-1;;;;;;;;;;;676:13:115;;;6942:18:121;;676:17:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;745:4:115;;713:38;;-1:-1:-1;;;;;745:4:115;;;;-1:-1:-1;713:38:115;;-1:-1:-1;713:38:115;:::i;:::-;-1:-1:-1;;;;;6987:32:121;;;6969:51;;6957:2;6942:18;713:38:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;704:6:115;:47;;-1:-1:-1;;;;;;704:47:115;-1:-1:-1;;;;;704:47:115;;;;;;799:4;;771:34;;799:4;;;771:34;;;:::i;:::-;-1:-1:-1;;;;;6987:32:121;;;6969:51;;6957:2;6942:18;771:34:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;761:7:115;:44;;-1:-1:-1;;;;;;761:44:115;-1:-1:-1;;;;;761:44:115;;;;;;853:4;;825:34;;853:4;;;825:34;;;:::i;:::-;-1:-1:-1;;;;;6987:32:121;;;6969:51;;6957:2;6942:18;825:34:115;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;815:7:115;:44;;-1:-1:-1;;;;;;815:44:115;-1:-1:-1;;;;;815:44:115;;;;;;931:3;;963:2;;931:84;;-1:-1:-1;;;931:84:115;;870:33;;-1:-1:-1;;931:3:115;;;:23;;:84;;963:2;;;;;-1:-1:-1;;;;870:33:115;;931:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1043:3;;1075:2;;1043:86;;-1:-1:-1;;;1043:86:115;;913:102;;-1:-1:-1;1025:15:115;;-1:-1:-1;;;;;1043:3:115;;;;:23;;:86;;1075:2;;;1025:15;;1043:3;;1112:16;;1043:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1160:3;;1192:2;;1160:88;;-1:-1:-1;;;1160:88:115;;1025:104;;-1:-1:-1;1139:18:115;;-1:-1:-1;;;;;1160:3:115;;;;:23;;:88;;1192:2;;;1139:18;;1160:3;;1231:16;;1160:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1259:3;;1286:6;;1259:44;;-1:-1:-1;;;1259:44:115;;-1:-1:-1;;;;;1286:6:115;;;1259:44;;;10556:51:121;10623:18;;;10616:34;;;1139:109:115;;-1:-1:-1;1259:3:115;;:18;;10529::121;;1259:44:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1313:3:115;;1340:7;;1313:45;;-1:-1:-1;;;1313:45:115;;-1:-1:-1;;;;;1340:7:115;;;1313:45;;;10556:51:121;10623:18;;;10616:34;;;1313:3:115;;;-1:-1:-1;1313:18:115;;-1:-1:-1;10529:18:121;;1313:45:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1368:3:115;;1395:7;;1368:48;;-1:-1:-1;;;1368:48:115;;-1:-1:-1;;;;;1395:7:115;;;1368:48;;;10556:51:121;10623:18;;;10616:34;;;1368:3:115;;;-1:-1:-1;1368:18:115;;-1:-1:-1;10529:18:121;;1368:48:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;1427:12:115;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1461:2:115;;1452:12;;-1:-1:-1;;;1452:12:115;;-1:-1:-1;;;;;1461:2:115;;;1452:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;1452:8:115;-1:-1:-1;1452:8:115;;-1:-1:-1;6942:18:121;;1452:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:3:115;;1521:4;;1474:53;;-1:-1:-1;;;1474:53:115;;-1:-1:-1;;;;;1474:3:115;;;;-1:-1:-1;1474:8:115;;-1:-1:-1;1474:53:115;;:3;;1510:1;;1521:4;;;1474:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1546:2:115;;1537:12;;-1:-1:-1;;;1537:12:115;;-1:-1:-1;;;;;1546:2:115;;;1537:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;1537:8:115;-1:-1:-1;1537:8:115;;-1:-1:-1;6942:18:121;;1537:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1559:3:115;;1606:4;;1559:53;;-1:-1:-1;;;1559:53:115;;-1:-1:-1;;;;;1559:3:115;;;;-1:-1:-1;1559:8:115;;-1:-1:-1;1559:53:115;;:3;;1595:1;;1606:4;;;1559:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1639:3:115;;1653:2;;1639:17;;-1:-1:-1;;;1639:17:115;;-1:-1:-1;;;;;1653:2:115;;;1639:17;;;6969:51:121;1623:13:115;;-1:-1:-1;1639:3:115;;;-1:-1:-1;1639:13:115;;6942:18:121;;1639:17:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1682:3;;1696:2;;1682:17;;-1:-1:-1;;;1682:17:115;;-1:-1:-1;;;;;1696:2:115;;;1682:17;;;6969:51:121;1623:33:115;;-1:-1:-1;1666:13:115;;1682:3;;;:13;;6942:18:121;;1682:17:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1721:4;;;1735:2;;1721:17;;-1:-1:-1;;;1721:17:115;;-1:-1:-1;;;;;1735:2:115;;;1721:17;;;6969:51:121;1666:33:115;;-1:-1:-1;1710:46:115;;1721:4;;;:13;;6942:18:121;1721:17:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1710:46;;;;;;;;;;;;;-1:-1:-1;;;1710:46:115;;;:10;:46::i;:::-;1777:4;;;1791:2;;1777:17;;-1:-1:-1;;;1777:17:115;;-1:-1:-1;;;;;1791:2:115;;;1777:17;;;6969:51:121;1766:46:115;;1777:4;;;;;:13;;6942:18:121;1777:17:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1766:46;;;;;;;;;;;;;-1:-1:-1;;;1766:46:115;;;:10;:46::i;:::-;1832:3;;1854:2;;1866:4;;;1832:40;;-1:-1:-1;;;1832:40:115;;-1:-1:-1;;;;;1854:2:115;;;1832:40;;;11700:34:121;1866:4:115;;;11750:18:121;;;11743:43;;;;1832:3:115;;;:21;;11635:18:121;;1832:40:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;1823:6;:54;1896:3;;1918:2;;1930:4;;;1896:40;;-1:-1:-1;;;1896:40:115;;-1:-1:-1;;;;;1918:2:115;;;1896:40;;;11700:34:121;1930:4:115;;;11750:18:121;;;11743:43;;;;1896:3:115;;;:21;;11635:18:121;;1896:40:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;1887:6;:54;-1:-1:-1;;;;;;609:1339:115:o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3241:706:115:-;3346:27;;-1:-1:-1;;;3346:27:115;;3369:3;3356:16;;;;3346:27;;;6376:41:121;3307:13:115;;;;-1:-1:-1;;;;;;;;;;;3346:9:115;;;6349:18:121;;3346:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:21;:19;:21::i;:::-;3432:6;;:31;;-1:-1:-1;;;3432:31:115;;;;;5207:25:121;;;3383:28:115;;-1:-1:-1;3421:67:115;;-1:-1:-1;;;;;3432:6:115;;;;:25;;5180:18:121;;3432:31:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3467:1;3432:36;3421:67;;;;;;;;;;;;;-1:-1:-1;;;3421:67:115;;;:10;:67::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3499:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3526:6:115;;:41;;-1:-1:-1;;;3526:41:115;;;;;12822:25:121;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3526:6:115;;;;-1:-1:-1;3526:23:115;;-1:-1:-1;12795:18:121;;3526:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3578:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3605:6:115;;:41;;-1:-1:-1;;;3605:41:115;;;;;12822:25:121;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3605:6:115;;;;-1:-1:-1;3605:23:115;;-1:-1:-1;12795:18:121;;3605:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3657:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3693:2:115;;3684:12;;-1:-1:-1;;;3684:12:115;;-1:-1:-1;;;;;3693:2:115;;;3684:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;3684:8:115;-1:-1:-1;3684:8:115;;-1:-1:-1;6942:18:121;;3684:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3706:6:115;;:41;;-1:-1:-1;;;3706:41:115;;;;;12822:25:121;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3706:6:115;;;;-1:-1:-1;3706:23:115;;-1:-1:-1;12795:18:121;;3706:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3767:2:115;;3758:12;;-1:-1:-1;;;3758:12:115;;-1:-1:-1;;;;;3767:2:115;;;3758:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;3758:8:115;-1:-1:-1;3758:8:115;;-1:-1:-1;6942:18:121;;3758:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3780:6:115;;:41;;-1:-1:-1;;;3780:41:115;;;;;12822:25:121;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3780:6:115;;;;-1:-1:-1;3780:23:115;;-1:-1:-1;12795:18:121;;3780:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3843:6:115;;:31;;-1:-1:-1;;;3843:31:115;;;;;5207:25:121;;;3832:76:115;;-1:-1:-1;3843:45:115;;;;-1:-1:-1;;;;;;3843:6:115;;;;:25;;5180:18:121;;3843:31:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;3832:76;;;;;;;;;;;;;-1:-1:-1;;;3832:76:115;;;:10;:76::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3927:11:115;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3919:21;;3241:706;;;:::o;3360:151:59:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;4744:772:115:-;4783:14;4799:12;4815:26;4837:3;4815:21;:26::i;:::-;4852:36;;-1:-1:-1;;;4852:36:115;;4869:17;4852:36;;;6969:51:121;4782:59:115;;-1:-1:-1;4782:59:115;-1:-1:-1;;;;;;;;;;;;4852:8:115;;;6942:18:121;;4852:36:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4928:3:115;;4951:2;;4963:4;;;4928:41;;-1:-1:-1;;;4928:41:115;;-1:-1:-1;;;;;4951:2:115;;;4928:41;;;11700:34:121;4963:4:115;;;11750:18:121;;;11743:43;;;;4898:27:115;;-1:-1:-1;4928:3:115;;;-1:-1:-1;4928:22:115;;11635:18:121;;4928:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4989:2;;4980:12;;-1:-1:-1;;;4980:12:115;;-1:-1:-1;;;;;4989:2:115;;;4980:12;;;6969:51:121;4898:71:115;;-1:-1:-1;;;;;;;;;;;;4980:8:115;;;6942:18:121;;4980:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;5002:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5029:6:115;;:32;;;-1:-1:-1;;;5029:32:115;;;;;14202:25:121;;;14243:18;;;14236:30;;;;14302:1;14282:18;;;14275:29;-1:-1:-1;;;14320:18:121;;;14313:37;-1:-1:-1;;;;;5029:6:115;;;;-1:-1:-1;5029:13:115;;-1:-1:-1;14367:19:121;;5029:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5072:13:115;;-1:-1:-1;;;5072:13:115;;5080:4;5072:13;;;5207:25:121;-1:-1:-1;;;;;;;;;;;5072:7:115;-1:-1:-1;5072:7:115;;-1:-1:-1;5180:18:121;;5072:13:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5105:2:115;;5096:12;;-1:-1:-1;;;5096:12:115;;-1:-1:-1;;;;;5105:2:115;;;5096:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;5096:8:115;-1:-1:-1;5096:8:115;;-1:-1:-1;6942:18:121;;5096:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5118:6:115;;:32;;;-1:-1:-1;;;5118:32:115;;;;;14202:25:121;;;14243:18;;;14236:30;;;;14302:1;14282:18;;;14275:29;-1:-1:-1;;;14320:18:121;;;14313:37;-1:-1:-1;;;;;5118:6:115;;;;-1:-1:-1;5118:13:115;;-1:-1:-1;14367:19:121;;5118:32:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5170:2:115;;5161:12;;-1:-1:-1;;;5161:12:115;;-1:-1:-1;;;;;5170:2:115;;;5161:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;5161:8:115;-1:-1:-1;5161:8:115;;-1:-1:-1;6942:18:121;;5161:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5183:6:115;;5210:2;;5183:30;;-1:-1:-1;;;5183:30:115;;;;;14764:25:121;;;-1:-1:-1;;;;;5210:2:115;;;14805:18:121;;;14798:60;5183:6:115;;;-1:-1:-1;5183:18:115;;-1:-1:-1;14737:18:121;;5183:30:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5253:3:115;;5276:2;;5288:4;;;5253:41;;-1:-1:-1;;;5253:41:115;;-1:-1:-1;;;;;5276:2:115;;;5253:41;;;11700:34:121;5288:4:115;;;11750:18:121;;;11743:43;;;;5223:27:115;;-1:-1:-1;5253:3:115;;;-1:-1:-1;5253:22:115;;11635:18:121;;5253:41:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5223:71;;5305:40;5326:1;5316:4;:7;;;:11;;;5305:40;;;;;;;;;;;;;-1:-1:-1;;;5305:40:115;;;:10;:40::i;:::-;5355:50;5366:4;:7;;;:12;;5377:1;5366:12;5355:50;;;;;;;;;;;;;-1:-1:-1;;;5355:50:115;;;:10;:50::i;:::-;5475:7;;;;5437:6;;:33;;-1:-1:-1;;;5437:33:115;;;;;5207:25:121;;;5415:94:115;;5426:56;;;-1:-1:-1;;;;;5437:6:115;;:25;;5180:18:121;;5437:33:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5427:4;:7;;;:43;;;;;;:::i;:::-;5426:56;5415:94;;;;;;;;;;;;;-1:-1:-1;;;5415:94:115;;;:10;:94::i;:::-;4772:744;;;;4744:772::o;3221:133:59:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2524:711:115;2597:13;;-1:-1:-1;;;2597:13:115;;2605:4;2597:13;;;5207:25:121;2571:14:115;;-1:-1:-1;;;;;;;;;;;2597:7:115;;;5180:18:121;;2597:13:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:23;2645:6;;2629:15;:23::i;:::-;2620:32;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;2663:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2690:6:115;;:31;;-1:-1:-1;;;2690:31:115;;-1:-1:-1;;;;;2690:6:115;;;;-1:-1:-1;2690:13:115;;-1:-1:-1;2690:31:115;;2704:6;;2690:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2732:27:115;;-1:-1:-1;;;2732:27:115;;2749:8;2732:27;;;6969:51:121;-1:-1:-1;;;;;;;;;;;2732:8:115;-1:-1:-1;2732:8:115;;-1:-1:-1;6942:18:121;;2732:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;2769:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2796:6:115;;:45;;-1:-1:-1;;;2796:45:115;;;;;14764:25:121;;;2831:8:115;14805:18:121;;;14798:60;-1:-1:-1;;;;;2796:6:115;;;;-1:-1:-1;2796:18:115;;-1:-1:-1;14737:18:121;;2796:45:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2852:27:115;;-1:-1:-1;;;2852:27:115;;2869:8;2852:27;;;6969:51:121;-1:-1:-1;;;;;;;;;;;2852:8:115;-1:-1:-1;2852:8:115;;-1:-1:-1;6942:18:121;;2852:27:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;2889:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2916:6:115;;:42;;-1:-1:-1;;;2916:42:115;;;;;14764:25:121;;;2951:5:115;14805:18:121;;;14798:60;-1:-1:-1;;;;;2916:6:115;;;;-1:-1:-1;2916:18:115;;-1:-1:-1;14737:18:121;;2916:42:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2969:13:115;;-1:-1:-1;;;2969:13:115;;2977:4;2969:13;;;5207:25:121;-1:-1:-1;;;;;;;;;;;2969:7:115;-1:-1:-1;2969:7:115;;-1:-1:-1;5180:18:121;;2969:13:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3001:2:115;;2992:12;;-1:-1:-1;;;2992:12:115;;-1:-1:-1;;;;;3001:2:115;;;2992:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;2992:8:115;-1:-1:-1;2992:8:115;;-1:-1:-1;6942:18:121;;2992:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3014:15:115;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3041:6:115;;:31;;-1:-1:-1;;;3041:31:115;;-1:-1:-1;;;;;3041:6:115;;;;-1:-1:-1;3041:13:115;;-1:-1:-1;3041:31:115;;3055:6;;3041:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3083:13;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;3099:11:115;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3123;;-1:-1:-1;;;3123:13:115;;3131:4;3123:13;;;5207:25:121;3083:29:115;;-1:-1:-1;;;;;;;;;;;;3123:7:115;;;5180:18:121;;3123:13:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3155:2:115;;3146:12;;-1:-1:-1;;;3146:12:115;;-1:-1:-1;;;;;3155:2:115;;;3146:12;;;6969:51:121;-1:-1:-1;;;;;;;;;;;3146:8:115;-1:-1:-1;3146:8:115;;-1:-1:-1;6942:18:121;;3146:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3168:6:115;;:31;;-1:-1:-1;;;3168:31:115;;-1:-1:-1;;;;;3168:6:115;;;;-1:-1:-1;3168:13:115;;-1:-1:-1;3168:31:115;;3182:6;;3168:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3210:18:115;;-1:-1:-1;;;3210:18:115;;;;;5207:25:121;;;-1:-1:-1;;;;;;;;;;;3210:11:115;-1:-1:-1;3210:11:115;;-1:-1:-1;5180:18:121;;3210::115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2587:648;2524:711;:::o;2592:140:59:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5645:305:115;5706:14;5722:12;5738:26;5760:3;5738:21;:26::i;:::-;5775:13;;-1:-1:-1;;;5775:13:115;;5783:4;5775:13;;;6376:41:121;5705:59:115;;-1:-1:-1;5705:59:115;-1:-1:-1;;;;;;;;;;;;5775:7:115;;;6349:18:121;;5775:13:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5695:255;;5645:305::o;3069:146:59:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:213:115;2180:2;;2171:12;;-1:-1:-1;;;2171:12:115;;-1:-1:-1;;;;;2180:2:115;;;2171:12;;;6969:51:121;2145:14:115;;-1:-1:-1;;;;;;;;;;;2171:8:115;;;6942:18:121;;2171:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2202:6:115;;-1:-1:-1;;;;;2202:6:115;;-1:-1:-1;2202:13:115;;-1:-1:-1;2216:7:115;2252:19;:15;2202:6;2252:19;:::i;:::-;2273;:15;2291:1;2273:19;:::i;:::-;2202:91;;-1:-1:-1;;;;;;2202:91:115;;;;;;;;;;16156:25:121;;;;16217:3;16197:18;;;16190:31;16258:2;16237:19;;;16230:31;16298:25;16277:19;;;16270:54;16376:18;;;16369:34;;;;16419:18;;;16412:34;16341:19;;2202:91:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2193:100;2087:213;-1:-1:-1;;2087:213:115:o;2157:141:59:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;10556:51:121;;;-1:-1:-1;;;10623:18:121;;;10616:34;2196:43:52;;;;;;;;;10529:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;5522:117:115:-;5574:14;5590:12;5606:26;5628:3;5606:21;:26::i;2306:212::-;2398:2;;2389:12;;-1:-1:-1;;;2389:12:115;;-1:-1:-1;;;;;2398:2:115;;;2389:12;;;6969:51:121;2363:14:115;;-1:-1:-1;;;;;;;;;;;2389:8:115;;;6942:18:121;;2389:12:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2420:7:115;;-1:-1:-1;;;;;2420:7:115;;-1:-1:-1;2420:14:115;;-1:-1:-1;2435:7:115;2470:19;:15;2420:7;2470:19;:::i;:::-;2491;:15;2509:1;2491:19;:::i;:::-;2420:91;;-1:-1:-1;;;;;;2420:91:115;;;;;;;;;;17685:25:121;;;;17746:3;17726:18;;;17719:31;17787:2;17766:19;;;17759:31;-1:-1:-1;;;17806:19:121;;;17799:53;17904:18;;;17897:34;;;;17947:18;;;17940:34;17869:19;;2420:91:115;17417:563:121;2304:142:59;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;18648:51:121;;;;18715:18;;;18708:30;18774:1;18754:18;;;18747:29;-1:-1:-1;;;18792:18:121;;;18785:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;18840:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;19082:51:121;;;;19149:18;;;19142:30;19208:1;19188:18;;;19181:29;-1:-1:-1;;;19226:18:121;;;19219:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;19274:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;19516:51:121;;;;19583:18;;;19576:30;19642:1;19622:18;;;19615:29;-1:-1:-1;;;19660:18:121;;;19653:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;19708:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;19950:51:121;20017:18;;;20010:30;20076:2;20056:18;;;20049:30;-1:-1:-1;;;20095:18:121;;;20088:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;20147:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;6969:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;6942:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;20389:51:121;;;;20456:18;;;20449:30;20515:2;20495:18;;;20488:30;-1:-1:-1;;;20534:18:121;;;20527:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;20584:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;20826:51:121;;;;20893:18;;;20886:30;20952:1;20932:18;;;20925:29;-1:-1:-1;;;20970:18:121;;;20963:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;21019:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;6969:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;6942:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;21261:51:121;;;;21328:18;;;21321:30;21387:1;21367:18;;;21360:29;-1:-1:-1;;;21405:18:121;;;21398:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;21451:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;21693:51:121;;;;21760:18;;;21753:30;21819:2;21799:18;;;21792:30;-1:-1:-1;;;21838:18:121;;;21831:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;21888:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;6987:32:121;;;6969:51;;6957:2;6942:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;22130:51:121;;;;22197:18;;;22190:30;22256:2;22236:18;;;22229:30;-1:-1:-1;;;22275:18:121;;;22268:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;22330:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;6987:32:121;;;6969:51;;6957:2;6942:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;22572:51:121;;;;22639:18;;;22632:30;22698:2;22678:18;;;22671:30;-1:-1:-1;;;22717:18:121;;;22710:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;22772:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;6969:51:121;;;;2573:3:114;;;;:22;;6942:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;23089:15:121;;;23071:34;;23141:15;;;23136:2;23121:18;;23114:43;23193:15;;;23188:2;23173:18;;23166:43;23245:15;;;23240:2;23225:18;;23218:43;23020:3;23005:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;23484:51:121;;;;23551:18;;;23544:30;23610:2;23590:18;;;23583:30;-1:-1:-1;;;23629:18:121;;;23622:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;23682:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;23968:25:121;;;24029:2;24009:18;;;24002:30;24068:2;24048:18;;;24041:30;-1:-1:-1;;;24087:19:121;;;24080:42;24174:18;;;24167:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;24139:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;24414:2:121;24396:21;;;24453:2;24433:18;;;24426:30;24492:25;24487:2;24472:18;;24465:53;24550:2;24535:18;;24212:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;24766:51:121;;;-1:-1:-1;;;24833:18:121;;;24826:34;;;;2712:4:52;24876:18:121;;;24869:34;2489:11:52;;1671:64;2586:43;;24739:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:272::-;735:6;788:2;776:9;767:7;763:23;759:32;756:52;;;804:1;801;794:12;756:52;843:9;830:23;893:6;886:5;882:18;875:5;872:29;862:57;;915:1;912;905:12;862:57;938:5;677:272;-1:-1:-1;;;677:272:121:o;1207:250::-;1292:1;1302:113;1316:6;1313:1;1310:13;1302:113;;;1392:11;;;1386:18;1373:11;;;1366:39;1338:2;1331:10;1302:113;;;-1:-1:-1;;1449:1:121;1431:16;;1424:27;1207:250::o;1462:271::-;1504:3;1542:5;1536:12;1569:6;1564:3;1557:19;1585:76;1654:6;1647:4;1642:3;1638:14;1631:4;1624:5;1620:16;1585:76;:::i;:::-;1715:2;1694:15;-1:-1:-1;;1690:29:121;1681:39;;;;1722:4;1677:50;;1462:271;-1:-1:-1;;1462:271:121:o;1738:1744::-;1973:2;2025:21;;;2095:13;;1998:18;;;2117:22;;;1944:4;;1973:2;2158;;2176:18;;;;2213:1;2256:15;;;2241:31;;2237:40;;2300:15;;;1944:4;;2364:1089;2380:6;2375:3;2372:15;2364:1089;;;-1:-1:-1;;2449:22:121;;;2445:36;2433:49;;2505:13;;2592:9;;-1:-1:-1;;;;;2588:35:121;2573:51;;2663:11;;2657:18;2695:15;;;2688:27;;;2776:19;;2545:15;;;2808:24;;;2989:21;;;;2855:2;2937:17;;;2925:30;;2921:39;;;2879:15;;;;3034:1;3048:296;3064:8;3059:3;3056:17;3048:296;;;3170:2;3166:7;3157:6;3149;3145:19;3141:33;3134:5;3127:48;3202:42;3237:6;3226:8;3220:15;3202:42;:::i;:::-;3273:17;;;;3192:52;-1:-1:-1;3316:14:121;;;;3092:1;3083:11;3048:296;;;-1:-1:-1;;;3431:12:121;;;;3367:6;-1:-1:-1;;3396:15:121;;;;2406:1;2397:11;2364:1089;;;-1:-1:-1;3470:6:121;;1738:1744;-1:-1:-1;;;;;;;;;;1738:1744:121:o;3487:1569::-;3691:4;3720:2;3760;3749:9;3745:18;3790:2;3779:9;3772:21;3813:6;3848;3842:13;3879:6;3871;3864:22;3905:2;3895:12;;3938:2;3927:9;3923:18;3916:25;;4000:2;3990:6;3987:1;3983:14;3972:9;3968:30;3964:39;4038:2;4030:6;4026:15;4059:1;4080;4090:937;4106:6;4101:3;4098:15;4090:937;;;4175:22;;;-1:-1:-1;;4171:36:121;4159:49;;4231:13;;4318:9;;-1:-1:-1;;;;;4314:35:121;4299:51;;4389:11;;4383:18;4421:15;;;4414:27;;;4502:19;;4271:15;;;4534:24;;;4624:21;;;;4669:1;;4592:2;4580:15;;;4683:236;4699:8;4694:3;4691:17;4683:236;;;4780:15;;-1:-1:-1;;;;;;4776:42:121;4762:57;;4888:17;;;;4727:1;4718:11;;;;;4845:14;;;;4683:236;;;-1:-1:-1;5005:12:121;;;;4942:5;-1:-1:-1;;;4970:15:121;;;;4132:1;4123:11;4090:937;;;-1:-1:-1;5044:6:121;;3487:1569;-1:-1:-1;;;;;;;;;3487:1569:121:o;5243:803::-;5405:4;5434:2;5474;5463:9;5459:18;5504:2;5493:9;5486:21;5527:6;5562;5556:13;5593:6;5585;5578:22;5631:2;5620:9;5616:18;5609:25;;5693:2;5683:6;5680:1;5676:14;5665:9;5661:30;5657:39;5643:53;;5731:2;5723:6;5719:15;5752:1;5762:255;5776:6;5773:1;5770:13;5762:255;;;5869:2;5865:7;5853:9;5845:6;5841:22;5837:36;5832:3;5825:49;5897:40;5930:6;5921;5915:13;5897:40;:::i;:::-;5887:50;-1:-1:-1;5995:12:121;;;;5960:15;;;;5798:1;5791:9;5762:255;;;-1:-1:-1;6034:6:121;;5243:803;-1:-1:-1;;;;;;;5243:803:121:o;6051:180::-;6110:6;6163:2;6151:9;6142:7;6138:23;6134:32;6131:52;;;6179:1;6176;6169:12;6131:52;-1:-1:-1;6202:23:121;;6051:180;-1:-1:-1;6051:180:121:o;6428:177::-;6507:13;;-1:-1:-1;;;;;6549:31:121;;6539:42;;6529:70;;6595:1;6592;6585:12;6610:208;6680:6;6733:2;6721:9;6712:7;6708:23;6704:32;6701:52;;;6749:1;6746;6739:12;6701:52;6772:40;6802:9;6772:40;:::i;7031:164::-;7107:13;;7156;;7149:21;7139:32;;7129:60;;7185:1;7182;7175:12;7200:202;7267:6;7320:2;7308:9;7299:7;7295:23;7291:32;7288:52;;;7336:1;7333;7326:12;7288:52;7359:37;7386:9;7359:37;:::i;7407:435::-;7460:3;7498:5;7492:12;7525:6;7520:3;7513:19;7551:4;7580:2;7575:3;7571:12;7564:19;;7617:2;7610:5;7606:14;7638:1;7648:169;7662:6;7659:1;7656:13;7648:169;;;7723:13;;7711:26;;7757:12;;;;7792:15;;;;7684:1;7677:9;7648:169;;;-1:-1:-1;7833:3:121;;7407:435;-1:-1:-1;;;;;7407:435:121:o;7847:775::-;8258:1;8254;8249:3;8245:11;8241:19;8233:6;8229:32;8218:9;8211:51;8298:3;8293:2;8282:9;8278:18;8271:31;8339:2;8333:3;8322:9;8318:19;8311:31;-1:-1:-1;;;8373:3:121;8362:9;8358:19;8351:48;8435:6;8430:2;8419:9;8415:18;8408:34;8492:6;8485:14;8478:22;8473:2;8462:9;8458:18;8451:50;8538:3;8532;8521:9;8517:19;8510:32;8192:4;8559:57;8611:3;8600:9;8596:19;8588:6;8559:57;:::i;:::-;8551:65;7847:775;-1:-1:-1;;;;;;7847:775:121:o;8627:184::-;8697:6;8750:2;8738:9;8729:7;8725:23;8721:32;8718:52;;;8766:1;8763;8756:12;8718:52;-1:-1:-1;8789:16:121;;8627:184;-1:-1:-1;8627:184:121:o;8816:777::-;9227:1;9223;9218:3;9214:11;9210:19;9202:6;9198:32;9187:9;9180:51;9267:3;9262:2;9251:9;9247:18;9240:31;9308:2;9302:3;9291:9;9287:19;9280:31;-1:-1:-1;;;9342:3:121;9331:9;9327:19;9320:50;9406:6;9401:2;9390:9;9386:18;9379:34;9463:6;9456:14;9449:22;9444:2;9433:9;9429:18;9422:50;9509:3;9503;9492:9;9488:19;9481:32;9161:4;9530:57;9582:3;9571:9;9567:19;9559:6;9530:57;:::i;9598:779::-;10009:1;10005;10000:3;9996:11;9992:19;9984:6;9980:32;9969:9;9962:51;10049:3;10044:2;10033:9;10029:18;10022:31;10090:2;10084:3;10073:9;10069:19;10062:31;-1:-1:-1;;;10124:3:121;10113:9;10109:19;10102:52;10190:6;10185:2;10174:9;10170:18;10163:34;10247:6;10240:14;10233:22;10228:2;10217:9;10213:18;10206:50;10293:3;10287;10276:9;10272:19;10265:32;9943:4;10314:57;10366:3;10355:9;10351:19;10343:6;10314:57;:::i;10661:822::-;11064:3;11046:22;;;11105:2;11084:19;;;11077:31;-1:-1:-1;;;11139:3:121;11124:19;;11117:41;11196:3;11189:4;11174:20;;11167:33;;;11237:1;11216:19;;;11209:30;-1:-1:-1;;;11270:3:121;11255:19;;11248:37;11352:2;11337:18;;11330:34;;;;-1:-1:-1;11380:18:121;;11373:34;;;;-1:-1:-1;;;;;11444:32:121;-1:-1:-1;11423:19:121;;11416:61;11317:3;11302:19;;10661:822::o;11797:344::-;11864:2;11858:9;11906:3;11894:16;;11940:18;11925:34;;11961:22;;;11922:62;11919:185;;;12026:10;12021:3;12017:20;12014:1;12007:31;12061:4;12058:1;12051:15;12089:4;12086:1;12079:15;11919:185;12120:2;12113:22;11797:344;:::o;12146:499::-;12243:6;12296:3;12284:9;12275:7;12271:23;12267:33;12264:53;;;12313:1;12310;12303:12;12264:53;12339:17;;:::i;:::-;12379:40;12409:9;12379:40;:::i;:::-;12372:5;12365:55;12473:2;12462:9;12458:18;12452:25;12447:2;12440:5;12436:14;12429:49;12531:2;12520:9;12516:18;12510:25;12505:2;12498:5;12494:14;12487:49;12568:46;12610:2;12599:9;12595:18;12568:46;:::i;:::-;12563:2;12552:14;;12545:70;12556:5;12146:499;-1:-1:-1;;;12146:499:121:o;12914:380::-;12993:1;12989:12;;;;13036;;;13057:61;;13111:4;13103:6;13099:17;13089:27;;13057:61;13164:2;13156:6;13153:14;13133:18;13130:38;13127:161;;13210:10;13205:3;13201:20;13198:1;13191:31;13245:4;13242:1;13235:15;13273:4;13270:1;13263:15;13127:161;;12914:380;;;:::o;13299:175::-;13377:13;;13430:18;13419:30;;13409:41;;13399:69;;13464:1;13461;13454:12;13479:506;13582:6;13635:3;13623:9;13614:7;13610:23;13606:33;13603:53;;;13652:1;13649;13642:12;13603:53;13678:17;;:::i;:::-;13718:39;13747:9;13718:39;:::i;:::-;13711:5;13704:54;13790:48;13834:2;13823:9;13819:18;13790:48;:::i;:::-;13785:2;13778:5;13774:14;13767:72;13892:2;13881:9;13877:18;13871:25;13866:2;13859:5;13855:14;13848:49;13950:2;13939:9;13935:18;13929:25;13924:2;13917:5;13913:14;13906:49;13974:5;13964:15;;;13479:506;;;;:::o;14869:222::-;14934:9;;;14955:10;;;14952:133;;;15007:10;15002:3;14998:20;14995:1;14988:31;15042:4;15039:1;15032:15;15070:4;15067:1;15060:15;15289:401;15501:25;;;15562:2;15557;15542:18;;15535:30;;;15601:1;15581:18;;;15574:29;-1:-1:-1;;;15634:2:121;15619:18;;15612:36;15680:3;15665:19;;15289:401::o;16736:384::-;-1:-1:-1;;;;;;16921:33:121;;16909:46;;16978:13;;16891:3;;17000:74;16978:13;17063:1;17054:11;;17047:4;17035:17;;17000:74;:::i;:::-;17094:16;;;;17112:1;17090:24;;16736:384;-1:-1:-1;;;16736:384:121:o;17125:287::-;17254:3;17292:6;17286:13;17308:66;17367:6;17362:3;17355:4;17347:6;17343:17;17308:66;:::i;:::-;17390:16;;;;;17125:287;-1:-1:-1;;17125:287:121:o;17985:446::-;18235:2;18224:9;18217:21;18274:1;18269:2;18258:9;18254:18;18247:29;-1:-1:-1;;;18307:2:121;18296:9;18292:18;18285:35;18358:3;18351:4;18340:9;18336:20;18329:33;18198:4;18379:46;18420:3;18409:9;18405:19;18397:6;18379:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620001505760003560e01c806385226c8111620000c7578063b5508aa91162000086578063b5508aa91462000267578063ba414fa61462000271578063c060e3a3146200028c578063c69a50231462000296578063e20c9f7114620002ad578063fa7626d414620002b757600080fd5b806385226c81146200022357806388b7c9c1146200023c578063916a17c61462000246578063a09bd85c1462000250578063b003c44614620001d357600080fd5b80633de35f9111620001145780633de35f9114620001d35780633e5e3c2314620001dd5780633f7286f414620001e757806366d9a9a014620001f157806369970e6b146200020a57600080fd5b806203603214620001555780630a9254e414620001615780631ed7831c146200016b5780632092e8da146200018d5780632ade388014620001ba575b600080fd5b6200015f620002c5565b005b6200015f62000659565b620001756200103d565b60405162000184919062003c69565b60405180910390f35b620001a46200019e36600462003cb8565b620010a1565b6040805192835260208301919091520162000184565b620001c46200169f565b60405162000184919062003d39565b6200015f620017ed565b6200017562001e5c565b6200017562001ebe565b620001fb62001f20565b60405162000184919062003dff565b620002146200200a565b60405190815260200162000184565b6200022d62002782565b60405162000184919062003eb6565b6200015f6200285c565b620001fb620028d7565b620002146200026136600462003f1c565b620029c1565b6200022d62002b0d565b6200027b62002be7565b604051901515815260200162000184565b6200015f62002d14565b62000214620002a736600462003f1c565b62002d24565b6200017562002e22565b6007546200027b9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062002e84565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062002e84565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062002e84565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062002e84565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062002e84565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003f4e565b6001600160a01b0316146040518060600160405280602881526020016201bc186028913962002e84565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062003f7d565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002e84565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062003f4e565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002e84565b565b6200066362002ed2565b6025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201bbd8833981519152906306447d5690602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620006ee915062003bcf565b6001600160a01b039091168152602001604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283161790556024546040519116906200074c9062003bdd565b6001600160a01b039091168152602001604051809103906000f08015801562000779573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03928316179055602454604051911690620007aa9062003beb565b6001600160a01b039091168152602001604051809103906000f080158015620007d7573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03928316179055601e54602554604051631a104a5d60e11b815260609360009381169263342094ba92620008309291909116908590600190889060040162003fd8565b6020604051808303816000875af115801562000850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087691906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008b9929116908590600190899060040162004055565b6020604051808303816000875af1158015620008d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ff91906200403b565b601e54602554604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620009429291169085906001908a90600401620040b0565b6020604051808303816000875af115801562000962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098891906200403b565b601e54602c54604051634d4547c960e01b81526001600160a01b039182166004820152602481018790529293501690634d4547c990604401600060405180830381600087803b158015620009db57600080fd5b505af1158015620009f0573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810187905291169250634d4547c99150604401600060405180830381600087803b15801562000a4557600080fd5b505af115801562000a5a573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000aaf57600080fd5b505af115801562000ac4573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b1657600080fd5b505af115801562000b2b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8457600080fd5b505af115801562000b99573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000bd9926001926005929116906004016200410d565b600060405180830381600087803b15801562000bf457600080fd5b505af115801562000c09573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6257600080fd5b505af115801562000c77573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000cb7926001926005929116906004016200410d565b600060405180830381600087803b15801562000cd257600080fd5b505af115801562000ce7573d6000803e3d6000fd5b5050601c546026546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562000d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6191906200403b565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562000db4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dda91906200403b565b6024805460265460405163288c314960e21b81526001600160a01b03918216600482015293945062000e809391169163a230c5249101602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e54919062003f7d565b6040518060400160405280600d81526020016c2098903737ba1036b2b6b132b960991b81525062002e84565b6024805460275460405163288c314960e21b81526001600160a01b03918216600482015262000f2593919092169163a230c5249101602060405180830381865afa15801562000ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef9919062003f7d565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002e84565b601c5460265460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562000f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa69190620041a7565b60200151602a55601c5460275460248054604051634b12ce3360e11b81526001600160a01b039384166004820152908316918101919091529116906396259c6690604401608060405180830381865afa15801562001008573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200102e9190620041a7565b60200151602b55505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200109757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001078575b5050505050905090565b604051632631f2b160e11b81526103e761ffff831610600482015260009081906000805160206201bbd883398151915290634c63e5629060240160006040518083038186803b158015620010f457600080fd5b505afa15801562001109573d6000803e3d6000fd5b50505050620011176200200a565b602c546040516371c62f3960e11b815260048101839052919250620011c0916001600160a01b039091169063e38c5e7290602401602060405180830381865afa15801562001169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200118f91906200403b565b6000146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200120e57600080fd5b505af115801562001223573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200127757600080fd5b505af11580156200128c573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620012de57600080fd5b505af1158015620012f3573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200134757600080fd5b505af11580156200135c573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ae57600080fd5b505af1158015620013c3573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200141c57600080fd5b505af115801562001431573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200148557600080fd5b505af11580156200149a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b158015620014f357600080fd5b505af115801562001508573d6000803e3d6000fd5b5050602c5460405162adc56f60e41b81526004810185905261ffff871660248201526001600160a01b039091169250630adc56f09150604401600060405180830381600087803b1580156200155c57600080fd5b505af115801562001571573d6000803e3d6000fd5b5050602c546040516371c62f3960e11b8152600481018590526200161f935061ffff871692506001600160a01b039091169063e38c5e7290602401602060405180830381865afa158015620015ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015f091906200403b565b146040518060400160405280600f81526020016e1b9bdd081dda185d081a5cc81cd95d608a1b81525062002e84565b6000805160206201bbf883398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200169891906200403b565b9150915091565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620017e457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620017cc5783829060005260206000200180546200173890620041ff565b80601f01602080910402602001604051908101604052809291908181526020018280546200176690620041ff565b8015620017b75780601f106200178b57610100808354040283529160200191620017b7565b820191906000526020600020905b8154815290600101906020018083116200179957829003601f168201915b50505050508152602001906001019062001716565b505050508152505081526020019060010190620016c3565b50505050905090565b600080620017fd610132620010a1565b60405163ca669fa760e01b8152669ac844699ef964600482015291935091506000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b1580156200185157600080fd5b505af115801562001866573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa158015620018c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ee919062004254565b60275460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b1580156200194657600080fd5b505af11580156200195b573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019ad57600080fd5b505af1158015620019c2573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103ea60048201526000805160206201bbd8833981519152925063e5d6bf029150602401600060405180830381600087803b15801562001a9057600080fd5b505af115801562001aa5573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562001afe57600080fd5b505af115801562001b13573d6000803e3d6000fd5b5050602c5460408051632eb1fb6360e11b815260048101889052602481019190915260076044820152663ab9363ab9361960c91b60648201526001600160a01b039091169250635d63f6c69150608401600060405180830381600087803b15801562001b7e57600080fd5b505af115801562001b93573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b15801562001bec57600080fd5b505af115801562001c01573d6000803e3d6000fd5b5050602c5460275460405163daf9113760e01b8152600481018890526001600160a01b0391821660248201529116925063daf911379150604401600060405180830381600087803b15801562001c5657600080fd5b505af115801562001c6b573d6000803e3d6000fd5b505060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600094509116915063584f01be90604401608060405180830381865afa15801562001ccd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cf3919062004254565b905062001d376000826020015167ffffffffffffffff16116040518060400160405280600d81526020016c64656661756c7420737461746560981b81525062002e84565b62001d82826020015167ffffffffffffffff16600014604051806040016040528060168152602001753430b9903ab732bc3832b1ba32b21031b7b73a3934b160511b81525062002e84565b6020810151602c546040516371c62f3960e11b81526004810187905262001e569267ffffffffffffffff16916001600160a01b03169063e38c5e7290602401602060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200403b565b846020015167ffffffffffffffff1662001e209190620042af565b146040518060400160405280601681526020017518dbdb9d1c9a58881b9bdd081c9959da5cdd195c995960521b81525062002e84565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001ff157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001fb25790505b5050505050815250508152602001906001019062001f44565b6040516372eb5f8160e11b81526103e860048201526000906000805160206201bbd88339815191529063e5d6bf0290602401600060405180830381600087803b1580156200205757600080fd5b505af11580156200206c573d6000803e3d6000fd5b505050506200207d602a54620029c1565b90506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020cd57600080fd5b505af1158015620020e2573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002118908490600401620042d1565b600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200219857600080fd5b505af1158015620021ad573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ff57600080fd5b505af115801562002214573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905263020aa9c660248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200226957600080fd5b505af11580156200227e573d6000803e3d6000fd5b505060405163ca669fa760e01b815263020aa9c660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b158015620022ce57600080fd5b505af1158015620022e3573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200233557600080fd5b505af11580156200234a573d6000803e3d6000fd5b5050602c5460405163daf9113760e01b81526004810185905261a8f860248201526001600160a01b03909116925063daf911379150604401600060405180830381600087803b1580156200239d57600080fd5b505af1158015620023b2573d6000803e3d6000fd5b50506040516372eb5f8160e11b815261044b60048201526000805160206201bbd8833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200240057600080fd5b505af115801562002415573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200246e57600080fd5b505af115801562002483573d6000803e3d6000fd5b505050506000805160206201bbf883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024d557600080fd5b505af1158015620024ea573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c6915062002520908490600401620042d1565b600060405180830381600087803b1580156200253b57600080fd5b505af115801562002550573d6000803e3d6000fd5b5050505060006000805160206201bbf883398151915260001c6001600160a01b0316639711715a6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620025a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025cf91906200403b565b6040516372eb5f8160e11b81526103ea60048201529091506000805160206201bbd88339815191529063e5d6bf0290602401600060405180830381600087803b1580156200261c57600080fd5b505af115801562002631573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201bbd8833981519152925063ca669fa79150602401600060405180830381600087803b1580156200268a57600080fd5b505af11580156200269f573d6000803e3d6000fd5b5050602c54604051632eb1fb6360e11b81526001600160a01b039091169250635d63f6c69150620026d5908590600401620042d1565b600060405180830381600087803b158015620026f057600080fd5b505af115801562002705573d6000803e3d6000fd5b5050604051631135fc2960e21b8152600481018490526000805160206201bbd883398151915292506344d7f0a491506024016020604051808303816000875af115801562002757573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200277d919062003f7d565b505090565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620017e4578382906000526020600020018054620027c890620041ff565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f690620041ff565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b505050505081526020019060010190620027a6565b6000806200286c610133620010a1565b604051636ec1689f60e11b81526001600482015291935091506000805160206201bbd88339815191529063dd82d13e90602401600060405180830381600087803b158015620028ba57600080fd5b505af1158015620028cf573d6000803e3d6000fd5b505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017e45760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029a857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620029695790505b50505050508152505081526020019060010190620028fb565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b15801562002a1957600080fd5b505af115801562002a2e573d6000803e3d6000fd5b5050602c546001600160a01b0316915063bd45a0a990508362002a53426001620042af565b62002a60426003620042af565b6040516001600160e01b031960e086901b168152600481019390935260806024840152601760848401527f687474703a2f2f5552494f465441534b6f66662e636f6d00000000000000000060a48401526044830191909152606482015260c4015b6020604051808303816000875af115801562002ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b0791906200403b565b92915050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620017e457838290600052602060002001805462002b5390620041ff565b80601f016020809104026020016040519081016040528092919081815260200182805462002b8190620041ff565b801562002bd25780601f1062002ba65761010080835404028352916020019162002bd2565b820191906000526020600020905b81548152906001019060200180831162002bb457829003601f168201915b50505050508152602001906001019062002b31565b600754600090610100900460ff161562002c0a5750600754610100900460ff1690565b60006000805160206201bbd88339815191523b1562002d0f57604080516000805160206201bbd8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c91917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620042f8565b60408051601f198184030181529082905262002cad916200432b565b6000604051808303816000865af19150503d806000811462002cec576040519150601f19603f3d011682016040523d82523d6000602084013e62002cf1565b606091505b509150508080602001905181019062002d0b919062003f7d565b9150505b919050565b60008062001e56610132620010a1565b60255460405163ca669fa760e01b81526001600160a01b0390911660048201526000906000805160206201bbd88339815191529063ca669fa790602401600060405180830381600087803b15801562002d7c57600080fd5b505af115801562002d91573d6000803e3d6000fd5b5050602d546001600160a01b0316915063bd45a0a990508362002db6426001620042af565b62002dc3426003620042af565b6040516001600160e01b031960e086901b1681526004810193909352608060248401526016608484015275687474703a2f2f5552494f465441534b6f6e2e636f6d60501b60a48401526044830191909152606482015260c40162002ac1565b6060601380548060200260200160405190810160405280929190818152602001828054801562001097576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001078575050505050905090565b8162002ece577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162002ebb919062004349565b60405180910390a162002ece8262003a4b565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b15801562002f6357600080fd5b505af115801562002f78573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b60648201526000805160206201bbd8833981519152925063c657c7189150608401600060405180830381600087803b1580156200300d57600080fd5b505af115801562003022573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b60648201526000805160206201bbd8833981519152925063c657c7189150608401600060405180830381600087803b158015620030b757600080fd5b505af1158015620030cc573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200316d57600080fd5b505af115801562003182573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201bbd883398151915292506306447d569150602401600060405180830381600087803b158015620031db57600080fd5b505af1158015620031f0573d6000803e3d6000fd5b50505050604051620032029062003bf9565b604051809103906000f0801580156200321f573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b158015620032a957600080fd5b505af1158015620032be573d6000803e3d6000fd5b50505050604051620032d09062003c07565b604051809103906000f080158015620032ed573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200337657600080fd5b505af11580156200338b573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b158015620033d957600080fd5b505af1158015620033ee573d6000803e3d6000fd5b50505050604051620034009062003c15565b604051809103906000f0801580156200341d573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b158015620034a357600080fd5b505af1158015620034b8573d6000803e3d6000fd5b50505050604051620034ca9062003c23565b604051809103906000f080158015620034e7573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200357157600080fd5b505af115801562003586573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620035a7915062003c31565b6001600160a01b039091168152602001604051809103906000f080158015620035d4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200366357600080fd5b505af115801562003678573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062003699915062003c3f565b6001600160a01b039091168152602001604051809103906000f080158015620036c6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200375557600080fd5b505af11580156200376a573d6000803e3d6000fd5b505050506040516200377c9062003c4d565b604051809103906000f08015801562003799573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620037f957600080fd5b505af11580156200380e573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200383f9062003c5b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003884573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b60648201526000805160206201bbd88339815191529063c657c71890608401600060405180830381600087803b1580156200391157600080fd5b505af115801562003926573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620039a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c8919062003f4e565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b815290519192506000805160206201bbd8833981519152916390c5013b9160048082019260009290919082900301818387803b15801562003a2f57600080fd5b505af115801562003a44573d6000803e3d6000fd5b5050505050565b8062003ac3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ab19060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003ac362003ac6565b50565b6000805160206201bbd88339815191523b1562003bbe57604080516000805160206201bbd8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262003b599291602001620042f8565b60408051601f198184030181529082905262003b75916200432b565b6000604051808303816000865af19150503d806000811462003bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62003bb9565b606091505b505050505b6007805461ff001916610100179055565b612ff2806200437b83390190565b612fce806200736d83390190565b6115b3806200a33b83390190565b610120806200b8ee83390190565b610c72806200ba0e83390190565b613723806200c68083390190565b6125a3806200fda383390190565b6110db806201234683390190565b613043806201342183390190565b6137d5806201646483390190565b611f9f8062019c3983390190565b6020808252825182820181905260009190848201906040850190845b8181101562003cac5783516001600160a01b03168352928401929184019160010162003c85565b50909695505050505050565b60006020828403121562003ccb57600080fd5b813561ffff8116811462003cde57600080fd5b9392505050565b60005b8381101562003d0257818101518382015260200162003ce8565b50506000910152565b6000815180845262003d2581602086016020860162003ce5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562003def57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003dd857605f1989850301835262003dc584865162003d0b565b948e01949350918d019160010162003da6565b505050978a01979450509188019160010162003d60565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003ea757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003e915783516001600160e01b0319168252928b019260019290920191908b019062003e65565b50978a0197955050509187019160010162003e27565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003f0f57603f1988860301845262003efc85835162003d0b565b9450928501929085019060010162003edd565b5092979650505050505050565b60006020828403121562003f2f57600080fd5b5035919050565b80516001600160a01b038116811462002d0f57600080fd5b60006020828403121562003f6157600080fd5b62003cde8262003f36565b8051801515811462002d0f57600080fd5b60006020828403121562003f9057600080fd5b62003cde8262003f6c565b600081518084526020808501945080840160005b8381101562003fcd5781518752958201959082019060010162003faf565b509495945050505050565b60018060a01b038516815260a06020820152601160a08201527061206d6574616461746120737472696e6760781b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b9695505050505050565b6000602082840312156200404e57600080fd5b5051919050565b60018060a01b038516815260a06020820152601360a082015272309036b2ba30b230ba309039ba3934b733901960691b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60018060a01b038516815260a06020820152601560a08201527418481b595d1859185d18481cdd1c9a5b99c8189bdd605a1b60c0820152836040820152821515606082015260e0608082015260006200403160e083018462003f9b565b60a0808252600a90820152694131555345524e414d4560b01b60c082015260e060208201819052600690820152651d5c9c9c9b1b60d21b610100820152604081019390935260608301919091526001600160a01b031660808201526101200190565b6040516080810167ffffffffffffffff81118282101715620041a157634e487b7160e01b600052604160045260246000fd5b60405290565b600060808284031215620041ba57600080fd5b620041c46200416f565b620041cf8362003f36565b81526020830151602082015260408301516040820152620041f36060840162003f6c565b60608201529392505050565b600181811c908216806200421457607f821691505b6020821081036200423557634e487b7160e01b600052602260045260246000fd5b50919050565b805167ffffffffffffffff8116811462002d0f57600080fd5b6000608082840312156200426757600080fd5b620042716200416f565b6200427c836200423b565b81526200428c602084016200423b565b602082015260408301516040820152606083015160608201528091505092915050565b8082018082111562002b0757634e487b7160e01b600052601160045260246000fd5b908152604060208201819052600690820152651d5c9b1d5c9b60d21b606082015260800190565b6001600160e01b03198316815281516000906200431d81600485016020870162003ce5565b919091016004019392505050565b600082516200433f81846020870162003ce5565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062003cde608083018462003d0b56fe60806040523480156200001157600080fd5b5060405162002ff238038062002ff28339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612886806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f33565b6104ab565b005b610208610218366004611f33565b61050b565b61020861022b366004611f5f565b610524565b61024361023e36600461205b565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120c6565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb366004612103565b610d8a565b6006546102439081565b610208610308366004612125565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f33565b611146565b60405161024d969594939291906121e7565b6102b4611224565b61026361036a366004612229565b61129f565b61024360035481565b61038b610386366004611f33565b61130a565b60405161024d9190612255565b6102086103a6366004612299565b61136c565b6103be6103b9366004611f33565b611463565b60405161024d94939291906122f5565b6103e16103dc366004612337565b611535565b60405161024d919061235c565b6102436103fc36600461236a565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612337565b6117e8565b610243610433366004612337565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612337565b61199e565b61024361047c366004611f33565b6119f0565b6005546102439081565b61049e610499366004611f33565b611b09565b60405161024d91906123c1565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b03166007828154811061054257610542612423565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612439565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca5750506040805160018082528183019092529192506000919060208083019080368337019050509050828260008151811061061857610618612423565b6020026020010181905250848160008151811061063757610637612423565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e90309086908690600401612460565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a919081019061250d565b90506000805b82518110156109325760025483828151811061075e5761075e612423565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd906125b3565b60008751116107b05760405162461bcd60e51b81526004016104fd906125dc565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612745565b60405180910390a193508061092a81612766565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd906125b3565b60008651116109b25760405162461bcd60e51b81526004016104fd906125dc565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612745565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b98919061278d565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be6612423565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125dc565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb1612423565b9060005260206000209060060201600201819055508260078681548110610cda57610cda612423565b90600052602060002090600602016003019081610cf79190612685565b508160078681548110610d0c57610d0c612423565b9060005260206000209060060201600401819055508060078681548110610d3557610d35612423565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612745565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e32919061278d565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea1612423565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec96122bd565b816003811115610edb57610edb6122bd565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d612423565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f72612423565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612685565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b76122bd565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125fc565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a91906127af565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d8612423565b60009182526020909120600360049092020181015460ff1690811115611300576113006122bd565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906127af565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125fc565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125fc565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d612423565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f8919061278d565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd906125b3565b60008451116116725760405162461bcd60e51b81526004016104fd906125dc565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612685565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612745565b60405180910390a195945050505050565b6000356001600160e01b0319168260405160240161180891815260200190565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b0319909516949094179093526000858152600a84528181206001600160a01b038616825290935290912054600b805484928692849260029290811061187657611876612423565b60009182526020909120600360049092020181015460ff169081111561189e5761189e6122bd565b8160038111156118b0576118b06122bd565b146118ce576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118ec576118ec612423565b60009182526020909120600160069092020101546001600160a01b0316146119265760405162461bcd60e51b81526004016104fd90612439565b6119308888611c67565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061196690859085906004016127cc565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119d6576119d6612423565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a5f9130916004016127f6565b602060405180830381865afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa0919061281a565b6040518263ffffffff1660e01b8152600401611abe91815260200190565b602060405180830381865afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff9190612833565b61ffff1692915050565b611b4b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b5e57611b5e612423565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611bca906125fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf6906125fc565b8015611c435780601f10611c1857610100808354040283529160200191611c43565b820191906000526020600020905b815481529060010190602001808311611c2657829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611ca657611ca6612423565b60009182526020909120600360049092020181015460ff1690811115611cce57611cce6122bd565b816003811115611ce057611ce06122bd565b14611cfe576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611d1c57611d1c612423565b60009182526020909120600160069092020101546001600160a01b031614611d565760405162461bcd60e51b81526004016104fd90612439565b4260078781548110611d6a57611d6a612423565b90600052602060002090600602016004015410611dbb5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dcf57611dcf612423565b90600052602060002090600602016005015411611e235760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e5c57611e5c612423565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e8e57611e8e6122bd565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ecb57611ecb612423565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611f239291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f4557600080fd5b5035919050565b61ffff81168114611f5c57600080fd5b50565b60008060408385031215611f7257600080fd5b823591506020830135611f8481611f4c565b809150509250929050565b6001600160a01b0381168114611f5c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fe357611fe3611fa4565b604052919050565b600082601f830112611ffc57600080fd5b813567ffffffffffffffff81111561201657612016611fa4565b612029601f8201601f1916602001611fba565b81815284602083860101111561203e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561207357600080fd5b853561207e81611f8f565b945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6120ad88828901611feb565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120de57600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156120a157600080fd5b6000806040838503121561211657600080fd5b50508035926020909101359150565b60008060006040848603121561213a57600080fd5b83359250602084013567ffffffffffffffff8082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217c57600080fd5b87602082850101111561218e57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121c7576020818501810151868301820152016121ab565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061221460c08301866121a1565b60808301949094525060a00152949350505050565b6000806040838503121561223c57600080fd5b823561224781611f8f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101561228d57835183529284019291840191600101612271565b50909695505050505050565b6000602082840312156122ab57600080fd5b81356122b681611f8f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122f157634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b0385168152608060208201819052600090612319908301866121a1565b905083604083015261232e60608301846122d3565b95945050505050565b6000806040838503121561234a57600080fd5b823591506020830135611f8481611f8f565b6020810161130482846122d3565b6000806000806080858703121561238057600080fd5b84359350602085013567ffffffffffffffff81111561239e57600080fd5b6123aa87828801611feb565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261240360e08401826121a1565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124c457607f198887030184526124b28683516121a1565b95509284019290840190600101612496565b50505050838203604085015284518083528186019282019060005b818110156124ff57845161ffff16835293830193918301916001016124df565b509098975050505050505050565b6000602080838503121561252057600080fd5b825167ffffffffffffffff8082111561253857600080fd5b818501915085601f83011261254c57600080fd5b81518181111561255e5761255e611fa4565b8060051b915061256f848301611fba565b818152918301840191848101908884111561258957600080fd5b938501935b838510156125a75784518252938501939085019061258e565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c9082168061261057607f821691505b60208210810361263057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561268057600081815260208120601f850160051c8101602086101561265d5750805b601f850160051c820191505b8181101561267c57828155600101612669565b5050505b505050565b815167ffffffffffffffff81111561269f5761269f611fa4565b6126b3816126ad84546125fc565b84612636565b602080601f8311600181146126e857600084156126d05750858301515b600019600386901b1c1916600185901b17855561267c565b600085815260208120601f198616915b82811015612717578886015182559484019460019091019084016126f8565b50858210156127355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061275e60408301846121a1565b949350505050565b60006001820161278657634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561279f57600080fd5b815180151581146122b657600080fd5b6000602082840312156127c157600080fd5b81516122b681611f8f565b6040815260006127df60408301856121a1565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061275e908301846121a1565b60006020828403121561282c57600080fd5b5051919050565b60006020828403121561284557600080fd5b81516122b681611f4c56fea2646970667358221220aeedfc5b64b82ad1ec7dc59187fdcce63baac85dca05d36042fb9809e15a88e764736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a26469706673582212200d520b8e4ebc8b82aa297190295a525102d8c0482029dfae787bfbdb3adc39b064736f6c63430008130033", + "sourceMap": "446:5506:128:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;609:1339:128;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3241:706:128;;;;;;:::i;:::-;;:::i;:::-;;;;1128:25:134;;;1184:2;1169:18;;1162:34;;;;1101:18;3241:706:128;954:248:134;3360:151:72;;;:::i;:::-;;;;;;;:::i;4744:772:128:-;;;:::i;3221:133:72:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2524:711:128:-;;;:::i;:::-;;;5207:25:134;;;5195:2;5180:18;2524:711:128;5061:177:134;2592:140:72;;;:::i;:::-;;;;;;;:::i;5645:305:128:-;;;:::i;3069:146:72:-;;;:::i;2087:213:128:-;;;;;;:::i;:::-;;:::i;2157:141:72:-;;;:::i;1819:584:65:-;;;:::i;:::-;;;6401:14:134;;6394:22;6376:41;;6364:2;6349:18;1819:584:65;6236:187:134;5522:117:128;;;:::i;2306:212::-;;;;;;:::i;:::-;;:::i;2304:142:72:-;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;6969:51:134;3476:66:127;;3487:3;;;;;:23;;6942:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;609:1339:128:-;652:13;:11;:13::i;:::-;690:2;;676:17;;-1:-1:-1;;;676:17:128;;-1:-1:-1;;;;;690:2:128;;;676:17;;;6969:51:134;-1:-1:-1;;;;;;;;;;;676:13:128;;;6942:18:134;;676:17:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;745:4:128;;713:38;;-1:-1:-1;;;;;745:4:128;;;;-1:-1:-1;713:38:128;;-1:-1:-1;713:38:128;:::i;:::-;-1:-1:-1;;;;;6987:32:134;;;6969:51;;6957:2;6942:18;713:38:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;704:6:128;:47;;-1:-1:-1;;;;;;704:47:128;-1:-1:-1;;;;;704:47:128;;;;;;799:4;;771:34;;799:4;;;771:34;;;:::i;:::-;-1:-1:-1;;;;;6987:32:134;;;6969:51;;6957:2;6942:18;771:34:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;761:7:128;:44;;-1:-1:-1;;;;;;761:44:128;-1:-1:-1;;;;;761:44:128;;;;;;853:4;;825:34;;853:4;;;825:34;;;:::i;:::-;-1:-1:-1;;;;;6987:32:134;;;6969:51;;6957:2;6942:18;825:34:128;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;815:7:128;:44;;-1:-1:-1;;;;;;815:44:128;-1:-1:-1;;;;;815:44:128;;;;;;931:3;;963:2;;931:84;;-1:-1:-1;;;931:84:128;;870:33;;-1:-1:-1;;931:3:128;;;:23;;:84;;963:2;;;;;-1:-1:-1;;;;870:33:128;;931:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1043:3;;1075:2;;1043:86;;-1:-1:-1;;;1043:86:128;;913:102;;-1:-1:-1;1025:15:128;;-1:-1:-1;;;;;1043:3:128;;;;:23;;:86;;1075:2;;;1025:15;;1043:3;;1112:16;;1043:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1160:3;;1192:2;;1160:88;;-1:-1:-1;;;1160:88:128;;1025:104;;-1:-1:-1;1139:18:128;;-1:-1:-1;;;;;1160:3:128;;;;:23;;:88;;1192:2;;;1139:18;;1160:3;;1231:16;;1160:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1259:3;;1286:6;;1259:44;;-1:-1:-1;;;1259:44:128;;-1:-1:-1;;;;;1286:6:128;;;1259:44;;;10556:51:134;10623:18;;;10616:34;;;1139:109:128;;-1:-1:-1;1259:3:128;;:18;;10529::134;;1259:44:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1313:3:128;;1340:7;;1313:45;;-1:-1:-1;;;1313:45:128;;-1:-1:-1;;;;;1340:7:128;;;1313:45;;;10556:51:134;10623:18;;;10616:34;;;1313:3:128;;;-1:-1:-1;1313:18:128;;-1:-1:-1;10529:18:134;;1313:45:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1368:3:128;;1395:7;;1368:48;;-1:-1:-1;;;1368:48:128;;-1:-1:-1;;;;;1395:7:128;;;1368:48;;;10556:51:134;10623:18;;;10616:34;;;1368:3:128;;;-1:-1:-1;1368:18:128;;-1:-1:-1;10529:18:134;;1368:48:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;1427:12:128;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1461:2:128;;1452:12;;-1:-1:-1;;;1452:12:128;;-1:-1:-1;;;;;1461:2:128;;;1452:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;1452:8:128;-1:-1:-1;1452:8:128;;-1:-1:-1;6942:18:134;;1452:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:3:128;;1521:4;;1474:53;;-1:-1:-1;;;1474:53:128;;-1:-1:-1;;;;;1474:3:128;;;;-1:-1:-1;1474:8:128;;-1:-1:-1;1474:53:128;;:3;;1510:1;;1521:4;;;1474:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1546:2:128;;1537:12;;-1:-1:-1;;;1537:12:128;;-1:-1:-1;;;;;1546:2:128;;;1537:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;1537:8:128;-1:-1:-1;1537:8:128;;-1:-1:-1;6942:18:134;;1537:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1559:3:128;;1606:4;;1559:53;;-1:-1:-1;;;1559:53:128;;-1:-1:-1;;;;;1559:3:128;;;;-1:-1:-1;1559:8:128;;-1:-1:-1;1559:53:128;;:3;;1595:1;;1606:4;;;1559:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1639:3:128;;1653:2;;1639:17;;-1:-1:-1;;;1639:17:128;;-1:-1:-1;;;;;1653:2:128;;;1639:17;;;6969:51:134;1623:13:128;;-1:-1:-1;1639:3:128;;;-1:-1:-1;1639:13:128;;6942:18:134;;1639:17:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1682:3;;1696:2;;1682:17;;-1:-1:-1;;;1682:17:128;;-1:-1:-1;;;;;1696:2:128;;;1682:17;;;6969:51:134;1623:33:128;;-1:-1:-1;1666:13:128;;1682:3;;;:13;;6942:18:134;;1682:17:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1721:4;;;1735:2;;1721:17;;-1:-1:-1;;;1721:17:128;;-1:-1:-1;;;;;1735:2:128;;;1721:17;;;6969:51:134;1666:33:128;;-1:-1:-1;1710:46:128;;1721:4;;;:13;;6942:18:134;1721:17:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1710:46;;;;;;;;;;;;;-1:-1:-1;;;1710:46:128;;;:10;:46::i;:::-;1777:4;;;1791:2;;1777:17;;-1:-1:-1;;;1777:17:128;;-1:-1:-1;;;;;1791:2:128;;;1777:17;;;6969:51:134;1766:46:128;;1777:4;;;;;:13;;6942:18:134;1777:17:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1766:46;;;;;;;;;;;;;-1:-1:-1;;;1766:46:128;;;:10;:46::i;:::-;1832:3;;1854:2;;1866:4;;;1832:40;;-1:-1:-1;;;1832:40:128;;-1:-1:-1;;;;;1854:2:128;;;1832:40;;;11700:34:134;1866:4:128;;;11750:18:134;;;11743:43;;;;1832:3:128;;;:21;;11635:18:134;;1832:40:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;1823:6;:54;1896:3;;1918:2;;1930:4;;;1896:40;;-1:-1:-1;;;1896:40:128;;-1:-1:-1;;;;;1918:2:128;;;1896:40;;;11700:34:134;1930:4:128;;;11750:18:134;;;11743:43;;;;1896:3:128;;;:21;;11635:18:134;;1896:40:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;1887:6;:54;-1:-1:-1;;;;;;609:1339:128:o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3241:706:128:-;3346:27;;-1:-1:-1;;;3346:27:128;;3369:3;3356:16;;;;3346:27;;;6376:41:134;3307:13:128;;;;-1:-1:-1;;;;;;;;;;;3346:9:128;;;6349:18:134;;3346:27:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3390:21;:19;:21::i;:::-;3432:6;;:31;;-1:-1:-1;;;3432:31:128;;;;;5207:25:134;;;3383:28:128;;-1:-1:-1;3421:67:128;;-1:-1:-1;;;;;3432:6:128;;;;:25;;5180:18:134;;3432:31:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3467:1;3432:36;3421:67;;;;;;;;;;;;;-1:-1:-1;;;3421:67:128;;;:10;:67::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3499:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3526:6:128;;:41;;-1:-1:-1;;;3526:41:128;;;;;12822:25:134;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3526:6:128;;;;-1:-1:-1;3526:23:128;;-1:-1:-1;12795:18:134;;3526:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3578:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3605:6:128;;:41;;-1:-1:-1;;;3605:41:128;;;;;12822:25:134;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3605:6:128;;;;-1:-1:-1;3605:23:128;;-1:-1:-1;12795:18:134;;3605:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3657:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3693:2:128;;3684:12;;-1:-1:-1;;;3684:12:128;;-1:-1:-1;;;;;3693:2:128;;;3684:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;3684:8:128;-1:-1:-1;3684:8:128;;-1:-1:-1;6942:18:134;;3684:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3706:6:128;;:41;;-1:-1:-1;;;3706:41:128;;;;;12822:25:134;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3706:6:128;;;;-1:-1:-1;3706:23:128;;-1:-1:-1;12795:18:134;;3706:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3767:2:128;;3758:12;;-1:-1:-1;;;3758:12:128;;-1:-1:-1;;;;;3767:2:128;;;3758:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;3758:8:128;-1:-1:-1;3758:8:128;;-1:-1:-1;6942:18:134;;3758:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3780:6:128;;:41;;-1:-1:-1;;;3780:41:128;;;;;12822:25:134;;;12895:6;12883:19;;12863:18;;;12856:47;-1:-1:-1;;;;;3780:6:128;;;;-1:-1:-1;3780:23:128;;-1:-1:-1;12795:18:134;;3780:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3843:6:128;;:31;;-1:-1:-1;;;3843:31:128;;;;;5207:25:134;;;3832:76:128;;-1:-1:-1;3843:45:128;;;;-1:-1:-1;;;;;;3843:6:128;;;;:25;;5180:18:134;;3843:31:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;3832:76;;;;;;;;;;;;;-1:-1:-1;;;3832:76:128;;;:10;:76::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3927:11:128;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3919:21;;3241:706;;;:::o;3360:151:72:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;4744:772:128:-;4783:14;4799:12;4815:26;4837:3;4815:21;:26::i;:::-;4852:36;;-1:-1:-1;;;4852:36:128;;4869:17;4852:36;;;6969:51:134;4782:59:128;;-1:-1:-1;4782:59:128;-1:-1:-1;;;;;;;;;;;;4852:8:128;;;6942:18:134;;4852:36:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4928:3:128;;4951:2;;4963:4;;;4928:41;;-1:-1:-1;;;4928:41:128;;-1:-1:-1;;;;;4951:2:128;;;4928:41;;;11700:34:134;4963:4:128;;;11750:18:134;;;11743:43;;;;4898:27:128;;-1:-1:-1;4928:3:128;;;-1:-1:-1;4928:22:128;;11635:18:134;;4928:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4989:2;;4980:12;;-1:-1:-1;;;4980:12:128;;-1:-1:-1;;;;;4989:2:128;;;4980:12;;;6969:51:134;4898:71:128;;-1:-1:-1;;;;;;;;;;;;4980:8:128;;;6942:18:134;;4980:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;5002:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5029:6:128;;:32;;;-1:-1:-1;;;5029:32:128;;;;;14202:25:134;;;14243:18;;;14236:30;;;;14302:1;14282:18;;;14275:29;-1:-1:-1;;;14320:18:134;;;14313:37;-1:-1:-1;;;;;5029:6:128;;;;-1:-1:-1;5029:13:128;;-1:-1:-1;14367:19:134;;5029:32:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5072:13:128;;-1:-1:-1;;;5072:13:128;;5080:4;5072:13;;;5207:25:134;-1:-1:-1;;;;;;;;;;;5072:7:128;-1:-1:-1;5072:7:128;;-1:-1:-1;5180:18:134;;5072:13:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5105:2:128;;5096:12;;-1:-1:-1;;;5096:12:128;;-1:-1:-1;;;;;5105:2:128;;;5096:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;5096:8:128;-1:-1:-1;5096:8:128;;-1:-1:-1;6942:18:134;;5096:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5118:6:128;;:32;;;-1:-1:-1;;;5118:32:128;;;;;14202:25:134;;;14243:18;;;14236:30;;;;14302:1;14282:18;;;14275:29;-1:-1:-1;;;14320:18:134;;;14313:37;-1:-1:-1;;;;;5118:6:128;;;;-1:-1:-1;5118:13:128;;-1:-1:-1;14367:19:134;;5118:32:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5170:2:128;;5161:12;;-1:-1:-1;;;5161:12:128;;-1:-1:-1;;;;;5170:2:128;;;5161:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;5161:8:128;-1:-1:-1;5161:8:128;;-1:-1:-1;6942:18:134;;5161:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5183:6:128;;5210:2;;5183:30;;-1:-1:-1;;;5183:30:128;;;;;14764:25:134;;;-1:-1:-1;;;;;5210:2:128;;;14805:18:134;;;14798:60;5183:6:128;;;-1:-1:-1;5183:18:128;;-1:-1:-1;14737:18:134;;5183:30:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5253:3:128;;5276:2;;5288:4;;;5253:41;;-1:-1:-1;;;5253:41:128;;-1:-1:-1;;;;;5276:2:128;;;5253:41;;;11700:34:134;5288:4:128;;;11750:18:134;;;11743:43;;;;5223:27:128;;-1:-1:-1;5253:3:128;;;-1:-1:-1;5253:22:128;;11635:18:134;;5253:41:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5223:71;;5305:40;5326:1;5316:4;:7;;;:11;;;5305:40;;;;;;;;;;;;;-1:-1:-1;;;5305:40:128;;;:10;:40::i;:::-;5355:50;5366:4;:7;;;:12;;5377:1;5366:12;5355:50;;;;;;;;;;;;;-1:-1:-1;;;5355:50:128;;;:10;:50::i;:::-;5475:7;;;;5437:6;;:33;;-1:-1:-1;;;5437:33:128;;;;;5207:25:134;;;5415:94:128;;5426:56;;;-1:-1:-1;;;;;5437:6:128;;:25;;5180:18:134;;5437:33:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5427:4;:7;;;:43;;;;;;:::i;:::-;5426:56;5415:94;;;;;;;;;;;;;-1:-1:-1;;;5415:94:128;;;:10;:94::i;:::-;4772:744;;;;4744:772::o;3221:133:72:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2524:711:128;2597:13;;-1:-1:-1;;;2597:13:128;;2605:4;2597:13;;;5207:25:134;2571:14:128;;-1:-1:-1;;;;;;;;;;;2597:7:128;;;5180:18:134;;2597:13:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:23;2645:6;;2629:15;:23::i;:::-;2620:32;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;2663:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2690:6:128;;:31;;-1:-1:-1;;;2690:31:128;;-1:-1:-1;;;;;2690:6:128;;;;-1:-1:-1;2690:13:128;;-1:-1:-1;2690:31:128;;2704:6;;2690:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2732:27:128;;-1:-1:-1;;;2732:27:128;;2749:8;2732:27;;;6969:51:134;-1:-1:-1;;;;;;;;;;;2732:8:128;-1:-1:-1;2732:8:128;;-1:-1:-1;6942:18:134;;2732:27:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;2769:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2796:6:128;;:45;;-1:-1:-1;;;2796:45:128;;;;;14764:25:134;;;2831:8:128;14805:18:134;;;14798:60;-1:-1:-1;;;;;2796:6:128;;;;-1:-1:-1;2796:18:128;;-1:-1:-1;14737:18:134;;2796:45:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2852:27:128;;-1:-1:-1;;;2852:27:128;;2869:8;2852:27;;;6969:51:134;-1:-1:-1;;;;;;;;;;;2852:8:128;-1:-1:-1;2852:8:128;;-1:-1:-1;6942:18:134;;2852:27:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;2889:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2916:6:128;;:42;;-1:-1:-1;;;2916:42:128;;;;;14764:25:134;;;2951:5:128;14805:18:134;;;14798:60;-1:-1:-1;;;;;2916:6:128;;;;-1:-1:-1;2916:18:128;;-1:-1:-1;14737:18:134;;2916:42:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2969:13:128;;-1:-1:-1;;;2969:13:128;;2977:4;2969:13;;;5207:25:134;-1:-1:-1;;;;;;;;;;;2969:7:128;-1:-1:-1;2969:7:128;;-1:-1:-1;5180:18:134;;2969:13:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3001:2:128;;2992:12;;-1:-1:-1;;;2992:12:128;;-1:-1:-1;;;;;3001:2:128;;;2992:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;2992:8:128;-1:-1:-1;2992:8:128;;-1:-1:-1;6942:18:134;;2992:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3014:15:128;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3041:6:128;;:31;;-1:-1:-1;;;3041:31:128;;-1:-1:-1;;;;;3041:6:128;;;;-1:-1:-1;3041:13:128;;-1:-1:-1;3041:31:128;;3055:6;;3041:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3083:13;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;3099:11:128;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3123;;-1:-1:-1;;;3123:13:128;;3131:4;3123:13;;;5207:25:134;3083:29:128;;-1:-1:-1;;;;;;;;;;;;3123:7:128;;;5180:18:134;;3123:13:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3155:2:128;;3146:12;;-1:-1:-1;;;3146:12:128;;-1:-1:-1;;;;;3155:2:128;;;3146:12;;;6969:51:134;-1:-1:-1;;;;;;;;;;;3146:8:128;-1:-1:-1;3146:8:128;;-1:-1:-1;6942:18:134;;3146:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3168:6:128;;:31;;-1:-1:-1;;;3168:31:128;;-1:-1:-1;;;;;3168:6:128;;;;-1:-1:-1;3168:13:128;;-1:-1:-1;3168:31:128;;3182:6;;3168:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3210:18:128;;-1:-1:-1;;;3210:18:128;;;;;5207:25:134;;;-1:-1:-1;;;;;;;;;;;3210:11:128;-1:-1:-1;3210:11:128;;-1:-1:-1;5180:18:134;;3210::128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2587:648;2524:711;:::o;2592:140:72:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5645:305:128;5706:14;5722:12;5738:26;5760:3;5738:21;:26::i;:::-;5775:13;;-1:-1:-1;;;5775:13:128;;5783:4;5775:13;;;6376:41:134;5705:59:128;;-1:-1:-1;5705:59:128;-1:-1:-1;;;;;;;;;;;;5775:7:128;;;6349:18:134;;5775:13:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5695:255;;5645:305::o;3069:146:72:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:213:128;2180:2;;2171:12;;-1:-1:-1;;;2171:12:128;;-1:-1:-1;;;;;2180:2:128;;;2171:12;;;6969:51:134;2145:14:128;;-1:-1:-1;;;;;;;;;;;2171:8:128;;;6942:18:134;;2171:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2202:6:128;;-1:-1:-1;;;;;2202:6:128;;-1:-1:-1;2202:13:128;;-1:-1:-1;2216:7:128;2252:19;:15;2202:6;2252:19;:::i;:::-;2273;:15;2291:1;2273:19;:::i;:::-;2202:91;;-1:-1:-1;;;;;;2202:91:128;;;;;;;;;;16156:25:134;;;;16217:3;16197:18;;;16190:31;16258:2;16237:19;;;16230:31;16298:25;16277:19;;;16270:54;16376:18;;;16369:34;;;;16419:18;;;16412:34;16341:19;;2202:91:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2193:100;2087:213;-1:-1:-1;;2087:213:128:o;2157:141:72:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;10556:51:134;;;-1:-1:-1;;;10623:18:134;;;10616:34;2196:43:65;;;;;;;;;10529:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;5522:117:128:-;5574:14;5590:12;5606:26;5628:3;5606:21;:26::i;2306:212::-;2398:2;;2389:12;;-1:-1:-1;;;2389:12:128;;-1:-1:-1;;;;;2398:2:128;;;2389:12;;;6969:51:134;2363:14:128;;-1:-1:-1;;;;;;;;;;;2389:8:128;;;6942:18:134;;2389:12:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2420:7:128;;-1:-1:-1;;;;;2420:7:128;;-1:-1:-1;2420:14:128;;-1:-1:-1;2435:7:128;2470:19;:15;2420:7;2470:19;:::i;:::-;2491;:15;2509:1;2491:19;:::i;:::-;2420:91;;-1:-1:-1;;;;;;2420:91:128;;;;;;;;;;17685:25:134;;;;17746:3;17726:18;;;17719:31;17787:2;17766:19;;;17759:31;-1:-1:-1;;;17806:19:134;;;17799:53;17904:18;;;17897:34;;;;17947:18;;;17940:34;17869:19;;2420:91:128;17417:563:134;2304:142:72;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;18648:51:134;;;;18715:18;;;18708:30;18774:1;18754:18;;;18747:29;-1:-1:-1;;;18792:18:134;;;18785:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;18840:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;19082:51:134;;;;19149:18;;;19142:30;19208:1;19188:18;;;19181:29;-1:-1:-1;;;19226:18:134;;;19219:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;19274:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;19516:51:134;;;;19583:18;;;19576:30;19642:1;19622:18;;;19615:29;-1:-1:-1;;;19660:18:134;;;19653:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;19708:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;19950:51:134;20017:18;;;20010:30;20076:2;20056:18;;;20049:30;-1:-1:-1;;;20095:18:134;;;20088:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;20147:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;6969:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;6942:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;20389:51:134;;;;20456:18;;;20449:30;20515:2;20495:18;;;20488:30;-1:-1:-1;;;20534:18:134;;;20527:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;20584:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;20826:51:134;;;;20893:18;;;20886:30;20952:1;20932:18;;;20925:29;-1:-1:-1;;;20970:18:134;;;20963:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;21019:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;6969:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;6942:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;21261:51:134;;;;21328:18;;;21321:30;21387:1;21367:18;;;21360:29;-1:-1:-1;;;21405:18:134;;;21398:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;21451:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;21693:51:134;;;;21760:18;;;21753:30;21819:2;21799:18;;;21792:30;-1:-1:-1;;;21838:18:134;;;21831:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;21888:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;6987:32:134;;;6969:51;;6957:2;6942:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;22130:51:134;;;;22197:18;;;22190:30;22256:2;22236:18;;;22229:30;-1:-1:-1;;;22275:18:134;;;22268:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;22330:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;6987:32:134;;;6969:51;;6957:2;6942:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;22572:51:134;;;;22639:18;;;22632:30;22698:2;22678:18;;;22671:30;-1:-1:-1;;;22717:18:134;;;22710:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;22772:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;6969:51:134;;;;2573:3:127;;;;:22;;6942:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;23089:15:134;;;23071:34;;23141:15;;;23136:2;23121:18;;23114:43;23193:15;;;23188:2;23173:18;;23166:43;23245:15;;;23240:2;23225:18;;23218:43;23020:3;23005:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;23484:51:134;;;;23551:18;;;23544:30;23610:2;23590:18;;;23583:30;-1:-1:-1;;;23629:18:134;;;23622:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;23682:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;23968:25:134;;;24029:2;24009:18;;;24002:30;24068:2;24048:18;;;24041:30;-1:-1:-1;;;24087:19:134;;;24080:42;24174:18;;;24167:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;24139:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;24414:2:134;24396:21;;;24453:2;24433:18;;;24426:30;24492:25;24487:2;24472:18;;24465:53;24550:2;24535:18;;24212:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;24766:51:134;;;-1:-1:-1;;;24833:18:134;;;24826:34;;;;2712:4:65;24876:18:134;;;24869:34;2489:11:65;;1671:64;2586:43;;24739:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:272::-;735:6;788:2;776:9;767:7;763:23;759:32;756:52;;;804:1;801;794:12;756:52;843:9;830:23;893:6;886:5;882:18;875:5;872:29;862:57;;915:1;912;905:12;862:57;938:5;677:272;-1:-1:-1;;;677:272:134:o;1207:250::-;1292:1;1302:113;1316:6;1313:1;1310:13;1302:113;;;1392:11;;;1386:18;1373:11;;;1366:39;1338:2;1331:10;1302:113;;;-1:-1:-1;;1449:1:134;1431:16;;1424:27;1207:250::o;1462:271::-;1504:3;1542:5;1536:12;1569:6;1564:3;1557:19;1585:76;1654:6;1647:4;1642:3;1638:14;1631:4;1624:5;1620:16;1585:76;:::i;:::-;1715:2;1694:15;-1:-1:-1;;1690:29:134;1681:39;;;;1722:4;1677:50;;1462:271;-1:-1:-1;;1462:271:134:o;1738:1744::-;1973:2;2025:21;;;2095:13;;1998:18;;;2117:22;;;1944:4;;1973:2;2158;;2176:18;;;;2213:1;2256:15;;;2241:31;;2237:40;;2300:15;;;1944:4;;2364:1089;2380:6;2375:3;2372:15;2364:1089;;;-1:-1:-1;;2449:22:134;;;2445:36;2433:49;;2505:13;;2592:9;;-1:-1:-1;;;;;2588:35:134;2573:51;;2663:11;;2657:18;2695:15;;;2688:27;;;2776:19;;2545:15;;;2808:24;;;2989:21;;;;2855:2;2937:17;;;2925:30;;2921:39;;;2879:15;;;;3034:1;3048:296;3064:8;3059:3;3056:17;3048:296;;;3170:2;3166:7;3157:6;3149;3145:19;3141:33;3134:5;3127:48;3202:42;3237:6;3226:8;3220:15;3202:42;:::i;:::-;3273:17;;;;3192:52;-1:-1:-1;3316:14:134;;;;3092:1;3083:11;3048:296;;;-1:-1:-1;;;3431:12:134;;;;3367:6;-1:-1:-1;;3396:15:134;;;;2406:1;2397:11;2364:1089;;;-1:-1:-1;3470:6:134;;1738:1744;-1:-1:-1;;;;;;;;;;1738:1744:134:o;3487:1569::-;3691:4;3720:2;3760;3749:9;3745:18;3790:2;3779:9;3772:21;3813:6;3848;3842:13;3879:6;3871;3864:22;3905:2;3895:12;;3938:2;3927:9;3923:18;3916:25;;4000:2;3990:6;3987:1;3983:14;3972:9;3968:30;3964:39;4038:2;4030:6;4026:15;4059:1;4080;4090:937;4106:6;4101:3;4098:15;4090:937;;;4175:22;;;-1:-1:-1;;4171:36:134;4159:49;;4231:13;;4318:9;;-1:-1:-1;;;;;4314:35:134;4299:51;;4389:11;;4383:18;4421:15;;;4414:27;;;4502:19;;4271:15;;;4534:24;;;4624:21;;;;4669:1;;4592:2;4580:15;;;4683:236;4699:8;4694:3;4691:17;4683:236;;;4780:15;;-1:-1:-1;;;;;;4776:42:134;4762:57;;4888:17;;;;4727:1;4718:11;;;;;4845:14;;;;4683:236;;;-1:-1:-1;5005:12:134;;;;4942:5;-1:-1:-1;;;4970:15:134;;;;4132:1;4123:11;4090:937;;;-1:-1:-1;5044:6:134;;3487:1569;-1:-1:-1;;;;;;;;;3487:1569:134:o;5243:803::-;5405:4;5434:2;5474;5463:9;5459:18;5504:2;5493:9;5486:21;5527:6;5562;5556:13;5593:6;5585;5578:22;5631:2;5620:9;5616:18;5609:25;;5693:2;5683:6;5680:1;5676:14;5665:9;5661:30;5657:39;5643:53;;5731:2;5723:6;5719:15;5752:1;5762:255;5776:6;5773:1;5770:13;5762:255;;;5869:2;5865:7;5853:9;5845:6;5841:22;5837:36;5832:3;5825:49;5897:40;5930:6;5921;5915:13;5897:40;:::i;:::-;5887:50;-1:-1:-1;5995:12:134;;;;5960:15;;;;5798:1;5791:9;5762:255;;;-1:-1:-1;6034:6:134;;5243:803;-1:-1:-1;;;;;;;5243:803:134:o;6051:180::-;6110:6;6163:2;6151:9;6142:7;6138:23;6134:32;6131:52;;;6179:1;6176;6169:12;6131:52;-1:-1:-1;6202:23:134;;6051:180;-1:-1:-1;6051:180:134:o;6428:177::-;6507:13;;-1:-1:-1;;;;;6549:31:134;;6539:42;;6529:70;;6595:1;6592;6585:12;6610:208;6680:6;6733:2;6721:9;6712:7;6708:23;6704:32;6701:52;;;6749:1;6746;6739:12;6701:52;6772:40;6802:9;6772:40;:::i;7031:164::-;7107:13;;7156;;7149:21;7139:32;;7129:60;;7185:1;7182;7175:12;7200:202;7267:6;7320:2;7308:9;7299:7;7295:23;7291:32;7288:52;;;7336:1;7333;7326:12;7288:52;7359:37;7386:9;7359:37;:::i;7407:435::-;7460:3;7498:5;7492:12;7525:6;7520:3;7513:19;7551:4;7580:2;7575:3;7571:12;7564:19;;7617:2;7610:5;7606:14;7638:1;7648:169;7662:6;7659:1;7656:13;7648:169;;;7723:13;;7711:26;;7757:12;;;;7792:15;;;;7684:1;7677:9;7648:169;;;-1:-1:-1;7833:3:134;;7407:435;-1:-1:-1;;;;;7407:435:134:o;7847:775::-;8258:1;8254;8249:3;8245:11;8241:19;8233:6;8229:32;8218:9;8211:51;8298:3;8293:2;8282:9;8278:18;8271:31;8339:2;8333:3;8322:9;8318:19;8311:31;-1:-1:-1;;;8373:3:134;8362:9;8358:19;8351:48;8435:6;8430:2;8419:9;8415:18;8408:34;8492:6;8485:14;8478:22;8473:2;8462:9;8458:18;8451:50;8538:3;8532;8521:9;8517:19;8510:32;8192:4;8559:57;8611:3;8600:9;8596:19;8588:6;8559:57;:::i;:::-;8551:65;7847:775;-1:-1:-1;;;;;;7847:775:134:o;8627:184::-;8697:6;8750:2;8738:9;8729:7;8725:23;8721:32;8718:52;;;8766:1;8763;8756:12;8718:52;-1:-1:-1;8789:16:134;;8627:184;-1:-1:-1;8627:184:134:o;8816:777::-;9227:1;9223;9218:3;9214:11;9210:19;9202:6;9198:32;9187:9;9180:51;9267:3;9262:2;9251:9;9247:18;9240:31;9308:2;9302:3;9291:9;9287:19;9280:31;-1:-1:-1;;;9342:3:134;9331:9;9327:19;9320:50;9406:6;9401:2;9390:9;9386:18;9379:34;9463:6;9456:14;9449:22;9444:2;9433:9;9429:18;9422:50;9509:3;9503;9492:9;9488:19;9481:32;9161:4;9530:57;9582:3;9571:9;9567:19;9559:6;9530:57;:::i;9598:779::-;10009:1;10005;10000:3;9996:11;9992:19;9984:6;9980:32;9969:9;9962:51;10049:3;10044:2;10033:9;10029:18;10022:31;10090:2;10084:3;10073:9;10069:19;10062:31;-1:-1:-1;;;10124:3:134;10113:9;10109:19;10102:52;10190:6;10185:2;10174:9;10170:18;10163:34;10247:6;10240:14;10233:22;10228:2;10217:9;10213:18;10206:50;10293:3;10287;10276:9;10272:19;10265:32;9943:4;10314:57;10366:3;10355:9;10351:19;10343:6;10314:57;:::i;10661:822::-;11064:3;11046:22;;;11105:2;11084:19;;;11077:31;-1:-1:-1;;;11139:3:134;11124:19;;11117:41;11196:3;11189:4;11174:20;;11167:33;;;11237:1;11216:19;;;11209:30;-1:-1:-1;;;11270:3:134;11255:19;;11248:37;11352:2;11337:18;;11330:34;;;;-1:-1:-1;11380:18:134;;11373:34;;;;-1:-1:-1;;;;;11444:32:134;-1:-1:-1;11423:19:134;;11416:61;11317:3;11302:19;;10661:822::o;11797:344::-;11864:2;11858:9;11906:3;11894:16;;11940:18;11925:34;;11961:22;;;11922:62;11919:185;;;12026:10;12021:3;12017:20;12014:1;12007:31;12061:4;12058:1;12051:15;12089:4;12086:1;12079:15;11919:185;12120:2;12113:22;11797:344;:::o;12146:499::-;12243:6;12296:3;12284:9;12275:7;12271:23;12267:33;12264:53;;;12313:1;12310;12303:12;12264:53;12339:17;;:::i;:::-;12379:40;12409:9;12379:40;:::i;:::-;12372:5;12365:55;12473:2;12462:9;12458:18;12452:25;12447:2;12440:5;12436:14;12429:49;12531:2;12520:9;12516:18;12510:25;12505:2;12498:5;12494:14;12487:49;12568:46;12610:2;12599:9;12595:18;12568:46;:::i;:::-;12563:2;12552:14;;12545:70;12556:5;12146:499;-1:-1:-1;;;12146:499:134:o;12914:380::-;12993:1;12989:12;;;;13036;;;13057:61;;13111:4;13103:6;13099:17;13089:27;;13057:61;13164:2;13156:6;13153:14;13133:18;13130:38;13127:161;;13210:10;13205:3;13201:20;13198:1;13191:31;13245:4;13242:1;13235:15;13273:4;13270:1;13263:15;13127:161;;12914:380;;;:::o;13299:175::-;13377:13;;13430:18;13419:30;;13409:41;;13399:69;;13464:1;13461;13454:12;13479:506;13582:6;13635:3;13623:9;13614:7;13610:23;13606:33;13603:53;;;13652:1;13649;13642:12;13603:53;13678:17;;:::i;:::-;13718:39;13747:9;13718:39;:::i;:::-;13711:5;13704:54;13790:48;13834:2;13823:9;13819:18;13790:48;:::i;:::-;13785:2;13778:5;13774:14;13767:72;13892:2;13881:9;13877:18;13871:25;13866:2;13859:5;13855:14;13848:49;13950:2;13939:9;13935:18;13929:25;13924:2;13917:5;13913:14;13906:49;13974:5;13964:15;;;13479:506;;;;:::o;14869:222::-;14934:9;;;14955:10;;;14952:133;;;15007:10;15002:3;14998:20;14995:1;14988:31;15042:4;15039:1;15032:15;15070:4;15067:1;15060:15;15289:401;15501:25;;;15562:2;15557;15542:18;;15535:30;;;15601:1;15581:18;;;15574:29;-1:-1:-1;;;15634:2:134;15619:18;;15612:36;15680:3;15665:19;;15289:401::o;16736:384::-;-1:-1:-1;;;;;;16921:33:134;;16909:46;;16978:13;;16891:3;;17000:74;16978:13;17063:1;17054:11;;17047:4;17035:17;;17000:74;:::i;:::-;17094:16;;;;17112:1;17090:24;;16736:384;-1:-1:-1;;;16736:384:134:o;17125:287::-;17254:3;17292:6;17286:13;17308:66;17367:6;17362:3;17355:4;17347:6;17343:17;17308:66;:::i;:::-;17390:16;;;;;17125:287;-1:-1:-1;;17125:287:134:o;17985:446::-;18235:2;18224:9;18217:21;18274:1;18269:2;18258:9;18254:18;18247:29;-1:-1:-1;;;18307:2:134;18296:9;18292:18;18285:35;18358:3;18351:4;18340:9;18336:20;18329:33;18198:4;18379:46;18420:3;18409:9;18405:19;18397:6;18379:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -694,7 +694,7 @@ "testSocialTaksMultiple()": "c060e3a3", "testWorksAsRepProvider()": "b003c446" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleID_\",\"type\":\"uint256\"}],\"name\":\"_createONTasks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleID_\",\"type\":\"uint256\"}],\"name\":\"_createOffTasks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCreateCheckTask\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMulti\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonMembersCanHaveReputation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"pointsTime\",\"type\":\"uint16\"}],\"name\":\"testSetsWeightForTask\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snap1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"task\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSocialTaksMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWorksAsRepProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MultiPluginLR.t.sol\":\"MultiPluginLR\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/OffchainTaskWithRep.sol\":{\"keccak256\":\"0x2e64972ba8e0c6dcc04133b04d4e3e46f553809d3e67bb1f7d935744de05f91c\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://b084de595b0d4e195ee8b2d07f073b77bc68ff0c3b903989b6b23d312a6d27b1\",\"dweb:/ipfs/Qmav2AJLron4upaiGbBfWhuoeD5yPfL6ze4M6ZctpJoU61\"]},\"contracts/plugins/interactions/OpenTaskWithRep.sol\":{\"keccak256\":\"0x202a7bde84758a6ca25f79e6f480a32b094e56bd969fc853c28d051b94f4bc1b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://388a2ac731290db796faa718c95dd5f45d8ff4fa8ff363c4eb735e745cc46522\",\"dweb:/ipfs/QmYgiDoBFa1goDvVUJY1KsPnkMnWXqnzoP6CYfP3x2Bzan\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OpenTaskPlugin.sol\":{\"keccak256\":\"0xd215215ab0ecc5dac6fb2ac9f8b4b9d2ffdbce053461ef9a6720c50098a2ad6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://228fdf34502528d92c0a7aaeebcd9d6a3a6a3b3b14625b7de4c554c2d3e149f7\",\"dweb:/ipfs/QmeCdkrTEJHWc6CtZkPBEWg6E1LxWWyHtfhtsSDYXRs2KS\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/MultiPluginLR.t.sol\":{\"keccak256\":\"0x84526b140c734f402e78ba47f5e0804c95ff21ada174eb84325abc27c8da8e3a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://84c98372e5627dd71faeeb6bf99080c6f2dbdfa87f708f03aaa9cf655e687480\",\"dweb:/ipfs/QmNrsGsUySd5xJr6s1FTvXgRDr438VrX4PvbTUSVBDT1uK\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleID_\",\"type\":\"uint256\"}],\"name\":\"_createONTasks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"roleID_\",\"type\":\"uint256\"}],\"name\":\"_createOffTasks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCreateCheckTask\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMulti\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonMembersCanHaveReputation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"pointsTime\",\"type\":\"uint16\"}],\"name\":\"testSetsWeightForTask\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snap1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"task\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSocialTaksMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWorksAsRepProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MultiPluginLR.t.sol\":\"MultiPluginLR\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/OffchainTaskWithRep.sol\":{\"keccak256\":\"0x2e64972ba8e0c6dcc04133b04d4e3e46f553809d3e67bb1f7d935744de05f91c\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://b084de595b0d4e195ee8b2d07f073b77bc68ff0c3b903989b6b23d312a6d27b1\",\"dweb:/ipfs/Qmav2AJLron4upaiGbBfWhuoeD5yPfL6ze4M6ZctpJoU61\"]},\"contracts/plugins/interactions/OpenTaskWithRep.sol\":{\"keccak256\":\"0x202a7bde84758a6ca25f79e6f480a32b094e56bd969fc853c28d051b94f4bc1b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://388a2ac731290db796faa718c95dd5f45d8ff4fa8ff363c4eb735e745cc46522\",\"dweb:/ipfs/QmYgiDoBFa1goDvVUJY1KsPnkMnWXqnzoP6CYfP3x2Bzan\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OpenTaskPlugin.sol\":{\"keccak256\":\"0xd215215ab0ecc5dac6fb2ac9f8b4b9d2ffdbce053461ef9a6720c50098a2ad6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://228fdf34502528d92c0a7aaeebcd9d6a3a6a3b3b14625b7de4c554c2d3e149f7\",\"dweb:/ipfs/QmeCdkrTEJHWc6CtZkPBEWg6E1LxWWyHtfhtsSDYXRs2KS\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/MultiPluginLR.t.sol\":{\"keccak256\":\"0x84526b140c734f402e78ba47f5e0804c95ff21ada174eb84325abc27c8da8e3a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://84c98372e5627dd71faeeb6bf99080c6f2dbdfa87f708f03aaa9cf655e687480\",\"dweb:/ipfs/QmNrsGsUySd5xJr6s1FTvXgRDr438VrX4PvbTUSVBDT1uK\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1430,6 +1430,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1494,6 +1502,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1615,10 +1631,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -2179,25 +2195,25 @@ }, "ast": { "absolutePath": "test/MultiPluginLR.t.sol", - "id": 71095, + "id": 71881, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "MultiPluginLR": [ - 71094 + 71880 ], "OffchainTaskWithRep": [ - 6874 + 7625 ], "OpenTaskWithRep": [ - 7056 + 7807 ], "SocialBotPlugin": [ - 7390 + 8141 ], "console": [ - 32435 + 33186 ], "groupState": [ 1229 @@ -2207,12 +2223,12 @@ ] }, "nodeType": "SourceUnit", - "src": "39:5914:115", + "src": "39:5914:128", "nodes": [ { - "id": 70242, + "id": 71028, "nodeType": "PragmaDirective", - "src": "39:23:115", + "src": "39:23:128", "nodes": [], "literals": [ "solidity", @@ -2221,48 +2237,48 @@ ] }, { - "id": 70246, + "id": 71032, "nodeType": "ImportDirective", - "src": "64:77:115", + "src": "64:77:128", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 71095, - "sourceUnit": 70241, + "scope": 71881, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 70243, + "id": 71029, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:115", + "referencedDeclaration": 71026, + "src": "72:11:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 70244, + "id": 71030, "name": "individualState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1238, - "src": "85:15:115", + "src": "85:15:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 70245, + "id": 71031, "name": "groupState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1229, - "src": "102:10:115", + "src": "102:10:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2271,24 +2287,24 @@ "unitAlias": "" }, { - "id": 70248, + "id": 71034, "nodeType": "ImportDirective", - "src": "143:86:115", + "src": "143:86:128", "nodes": [], "absolutePath": "contracts/plugins/interactions/SocialBotPlugin.sol", "file": "../contracts/plugins/interactions/SocialBotPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 71095, - "sourceUnit": 7391, + "scope": 71881, + "sourceUnit": 8142, "symbolAliases": [ { "foreign": { - "id": 70247, + "id": 71033, "name": "SocialBotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7390, - "src": "151:15:115", + "referencedDeclaration": 8141, + "src": "151:15:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2297,24 +2313,24 @@ "unitAlias": "" }, { - "id": 70250, + "id": 71036, "nodeType": "ImportDirective", - "src": "230:94:115", + "src": "230:94:128", "nodes": [], "absolutePath": "contracts/plugins/interactions/OffchainTaskWithRep.sol", "file": "../contracts/plugins/interactions/OffchainTaskWithRep.sol", "nameLocation": "-1:-1:-1", - "scope": 71095, - "sourceUnit": 6875, + "scope": 71881, + "sourceUnit": 7626, "symbolAliases": [ { "foreign": { - "id": 70249, + "id": 71035, "name": "OffchainTaskWithRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6874, - "src": "238:19:115", + "referencedDeclaration": 7625, + "src": "238:19:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2323,24 +2339,24 @@ "unitAlias": "" }, { - "id": 70252, + "id": 71038, "nodeType": "ImportDirective", - "src": "325:86:115", + "src": "325:86:128", "nodes": [], "absolutePath": "contracts/plugins/interactions/OpenTaskWithRep.sol", "file": "../contracts/plugins/interactions/OpenTaskWithRep.sol", "nameLocation": "-1:-1:-1", - "scope": 71095, - "sourceUnit": 7057, + "scope": 71881, + "sourceUnit": 7808, "symbolAliases": [ { "foreign": { - "id": 70251, + "id": 71037, "name": "OpenTaskWithRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7056, - "src": "333:15:115", + "referencedDeclaration": 7807, + "src": "333:15:128", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2349,147 +2365,147 @@ "unitAlias": "" }, { - "id": 70253, + "id": 71039, "nodeType": "ImportDirective", - "src": "413:31:115", + "src": "413:31:128", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 71095, - "sourceUnit": 32436, + "scope": 71881, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 71094, + "id": 71880, "nodeType": "ContractDefinition", - "src": "446:5506:115", + "src": "446:5506:128", "nodes": [ { - "id": 70258, + "id": 71044, "nodeType": "VariableDeclaration", - "src": "490:26:115", + "src": "490:26:128", "nodes": [], "constant": false, "mutability": "mutable", "name": "offTWR", - "nameLocation": "510:6:115", - "scope": 71094, + "nameLocation": "510:6:128", + "scope": 71880, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" }, "typeName": { - "id": 70257, + "id": 71043, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70256, + "id": 71042, "name": "OffchainTaskWithRep", "nameLocations": [ - "490:19:115" + "490:19:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6874, - "src": "490:19:115" + "referencedDeclaration": 7625, + "src": "490:19:128" }, - "referencedDeclaration": 6874, - "src": "490:19:115", + "referencedDeclaration": 7625, + "src": "490:19:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, "visibility": "internal" }, { - "id": 70261, + "id": 71047, "nodeType": "VariableDeclaration", - "src": "522:23:115", + "src": "522:23:128", "nodes": [], "constant": false, "mutability": "mutable", "name": "openTWR", - "nameLocation": "538:7:115", - "scope": 71094, + "nameLocation": "538:7:128", + "scope": 71880, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" }, "typeName": { - "id": 70260, + "id": 71046, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70259, + "id": 71045, "name": "OpenTaskWithRep", "nameLocations": [ - "522:15:115" + "522:15:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7056, - "src": "522:15:115" + "referencedDeclaration": 7807, + "src": "522:15:128" }, - "referencedDeclaration": 7056, - "src": "522:15:115", + "referencedDeclaration": 7807, + "src": "522:15:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, "visibility": "internal" }, { - "id": 70264, + "id": 71050, "nodeType": "VariableDeclaration", - "src": "551:23:115", + "src": "551:23:128", "nodes": [], "constant": false, "mutability": "mutable", "name": "socBotP", - "nameLocation": "567:7:115", - "scope": 71094, + "nameLocation": "567:7:128", + "scope": 71880, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" }, "typeName": { - "id": 70263, + "id": 71049, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70262, + "id": 71048, "name": "SocialBotPlugin", "nameLocations": [ - "551:15:115" + "551:15:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "551:15:115" + "referencedDeclaration": 8141, + "src": "551:15:128" }, - "referencedDeclaration": 7390, - "src": "551:15:115", + "referencedDeclaration": 8141, + "src": "551:15:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, "visibility": "internal" }, { - "id": 70266, + "id": 71052, "nodeType": "VariableDeclaration", - "src": "580:22:115", + "src": "580:22:128", "nodes": [], "constant": false, "mutability": "mutable", "name": "tasksIncrement", - "nameLocation": "588:14:115", - "scope": 71094, + "nameLocation": "588:14:128", + "scope": 71880, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2497,10 +2513,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70265, + "id": 71051, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "580:7:115", + "src": "580:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2509,14 +2525,14 @@ "visibility": "internal" }, { - "id": 70490, + "id": 71276, "nodeType": "FunctionDefinition", - "src": "609:1339:115", + "src": "609:1339:128", "nodes": [], "body": { - "id": 70489, + "id": 71275, "nodeType": "Block", - "src": "642:1306:115", + "src": "642:1306:128", "nodes": [], "statements": [ { @@ -2525,33 +2541,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70270, + "id": 71056, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "652:5:115", + "src": "652:5:128", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MultiPluginLR_$71094_$", + "typeIdentifier": "t_type$_t_super$_MultiPluginLR_$71880_$", "typeString": "type(contract super MultiPluginLR)" } }, - "id": 70272, + "id": 71058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "658:5:115", + "memberLocation": "658:5:128", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "652:11:115", + "referencedDeclaration": 70929, + "src": "652:11:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 70273, + "id": 71059, "isConstant": false, "isLValue": false, "isPure": false, @@ -2560,27 +2576,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "652:13:115", + "src": "652:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70274, + "id": 71060, "nodeType": "ExpressionStatement", - "src": "652:13:115" + "src": "652:13:128" }, { "expression": { "arguments": [ { - "id": 70278, + "id": 71064, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "690:2:115", + "referencedDeclaration": 70587, + "src": "690:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2595,33 +2611,33 @@ } ], "expression": { - "id": 70275, + "id": 71061, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "676:2:115", + "referencedDeclaration": 13541, + "src": "676:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70277, + "id": 71063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "679:10:115", + "memberLocation": "679:10:128", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "676:13:115", + "referencedDeclaration": 24725, + "src": "676:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70279, + "id": 71065, "isConstant": false, "isLValue": false, "isPure": false, @@ -2630,33 +2646,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "676:17:115", + "src": "676:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70280, + "id": 71066, "nodeType": "ExpressionStatement", - "src": "676:17:115" + "src": "676:17:128" }, { "expression": { - "id": 70290, + "id": 71076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70281, + "id": 71067, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "704:6:115", + "referencedDeclaration": 71044, + "src": "704:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, @@ -2667,14 +2683,14 @@ { "arguments": [ { - "id": 70287, + "id": 71073, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "745:4:115", + "referencedDeclaration": 70573, + "src": "745:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2682,30 +2698,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70286, + "id": 71072, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "737:7:115", + "src": "737:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70285, + "id": 71071, "name": "address", "nodeType": "ElementaryTypeName", - "src": "737:7:115", + "src": "737:7:128", "typeDescriptions": {} } }, - "id": 70288, + "id": 71074, "isConstant": false, "isLValue": false, "isPure": false, @@ -2714,7 +2730,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "737:13:115", + "src": "737:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2729,39 +2745,39 @@ "typeString": "address" } ], - "id": 70284, + "id": 71070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "713:23:115", + "src": "713:23:128", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OffchainTaskWithRep_$6874_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OffchainTaskWithRep_$7625_$", "typeString": "function (address) returns (contract OffchainTaskWithRep)" }, "typeName": { - "id": 70283, + "id": 71069, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70282, + "id": 71068, "name": "OffchainTaskWithRep", "nameLocations": [ - "717:19:115" + "717:19:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6874, - "src": "717:19:115" + "referencedDeclaration": 7625, + "src": "717:19:128" }, - "referencedDeclaration": 6874, - "src": "717:19:115", + "referencedDeclaration": 7625, + "src": "717:19:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } } }, - "id": 70289, + "id": 71075, "isConstant": false, "isLValue": false, "isPure": false, @@ -2770,39 +2786,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "713:38:115", + "src": "713:38:128", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "src": "704:47:115", + "src": "704:47:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70291, + "id": 71077, "nodeType": "ExpressionStatement", - "src": "704:47:115" + "src": "704:47:128" }, { "expression": { - "id": 70301, + "id": 71087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70292, + "id": 71078, "name": "openTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70261, - "src": "761:7:115", + "referencedDeclaration": 71047, + "src": "761:7:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, @@ -2813,14 +2829,14 @@ { "arguments": [ { - "id": 70298, + "id": 71084, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "799:4:115", + "referencedDeclaration": 70573, + "src": "799:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2828,30 +2844,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70297, + "id": 71083, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "791:7:115", + "src": "791:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70296, + "id": 71082, "name": "address", "nodeType": "ElementaryTypeName", - "src": "791:7:115", + "src": "791:7:128", "typeDescriptions": {} } }, - "id": 70299, + "id": 71085, "isConstant": false, "isLValue": false, "isPure": false, @@ -2860,7 +2876,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "791:13:115", + "src": "791:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2875,39 +2891,39 @@ "typeString": "address" } ], - "id": 70295, + "id": 71081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "771:19:115", + "src": "771:19:128", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OpenTaskWithRep_$7056_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OpenTaskWithRep_$7807_$", "typeString": "function (address) returns (contract OpenTaskWithRep)" }, "typeName": { - "id": 70294, + "id": 71080, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70293, + "id": 71079, "name": "OpenTaskWithRep", "nameLocations": [ - "775:15:115" + "775:15:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7056, - "src": "775:15:115" + "referencedDeclaration": 7807, + "src": "775:15:128" }, - "referencedDeclaration": 7056, - "src": "775:15:115", + "referencedDeclaration": 7807, + "src": "775:15:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } } }, - "id": 70300, + "id": 71086, "isConstant": false, "isLValue": false, "isPure": false, @@ -2916,39 +2932,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "771:34:115", + "src": "771:34:128", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, - "src": "761:44:115", + "src": "761:44:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, - "id": 70302, + "id": 71088, "nodeType": "ExpressionStatement", - "src": "761:44:115" + "src": "761:44:128" }, { "expression": { - "id": 70312, + "id": 71098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70303, + "id": 71089, "name": "socBotP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70264, - "src": "815:7:115", + "referencedDeclaration": 71050, + "src": "815:7:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, @@ -2959,14 +2975,14 @@ { "arguments": [ { - "id": 70309, + "id": 71095, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "853:4:115", + "referencedDeclaration": 70573, + "src": "853:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2974,30 +2990,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70308, + "id": 71094, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "845:7:115", + "src": "845:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70307, + "id": 71093, "name": "address", "nodeType": "ElementaryTypeName", - "src": "845:7:115", + "src": "845:7:128", "typeDescriptions": {} } }, - "id": 70310, + "id": 71096, "isConstant": false, "isLValue": false, "isPure": false, @@ -3006,7 +3022,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "845:13:115", + "src": "845:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3021,39 +3037,39 @@ "typeString": "address" } ], - "id": 70306, + "id": 71092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "825:19:115", + "src": "825:19:128", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$7390_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$8141_$", "typeString": "function (address) returns (contract SocialBotPlugin)" }, "typeName": { - "id": 70305, + "id": 71091, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70304, + "id": 71090, "name": "SocialBotPlugin", "nameLocations": [ - "829:15:115" + "829:15:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "829:15:115" + "referencedDeclaration": 8141, + "src": "829:15:128" }, - "referencedDeclaration": 7390, - "src": "829:15:115", + "referencedDeclaration": 8141, + "src": "829:15:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } }, - "id": 70311, + "id": 71097, "isConstant": false, "isLValue": false, "isPure": false, @@ -3062,37 +3078,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "825:34:115", + "src": "825:34:128", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "src": "815:44:115", + "src": "815:44:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 70313, + "id": 71099, "nodeType": "ExpressionStatement", - "src": "815:44:115" + "src": "815:44:128" }, { "assignments": [ - 70318 + 71104 ], "declarations": [ { "constant": false, - "id": 70318, + "id": 71104, "mutability": "mutable", "name": "mockdependencies", - "nameLocation": "887:16:115", + "nameLocation": "887:16:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "870:33:115", + "scope": 71275, + "src": "870:33:128", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3101,18 +3117,18 @@ }, "typeName": { "baseType": { - "id": 70316, + "id": 71102, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "870:7:115", + "src": "870:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70317, + "id": 71103, "nodeType": "ArrayTypeName", - "src": "870:9:115", + "src": "870:9:128", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -3121,24 +3137,24 @@ "visibility": "internal" } ], - "id": 70319, + "id": 71105, "nodeType": "VariableDeclarationStatement", - "src": "870:33:115" + "src": "870:33:128" }, { "assignments": [ - 70321 + 71107 ], "declarations": [ { "constant": false, - "id": 70321, + "id": 71107, "mutability": "mutable", "name": "aDefID1", - "nameLocation": "921:7:115", + "nameLocation": "921:7:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "913:15:115", + "scope": 71275, + "src": "913:15:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3146,10 +3162,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70320, + "id": 71106, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "913:7:115", + "src": "913:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3158,18 +3174,18 @@ "visibility": "internal" } ], - "id": 70333, + "id": 71119, "initialValue": { "arguments": [ { "arguments": [ { - "id": 70326, + "id": 71112, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "963:2:115", + "referencedDeclaration": 70587, + "src": "963:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3183,27 +3199,27 @@ "typeString": "address" } ], - "id": 70325, + "id": 71111, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "955:8:115", + "src": "955:8:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 70324, + "id": 71110, "name": "address", "nodeType": "ElementaryTypeName", - "src": "955:8:115", + "src": "955:8:128", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 70327, + "id": 71113, "isConstant": false, "isLValue": false, "isPure": false, @@ -3212,7 +3228,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "955:11:115", + "src": "955:11:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3221,14 +3237,14 @@ }, { "hexValue": "61206d6574616461746120737472696e67", - "id": 70328, + "id": 71114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "968:19:115", + "src": "968:19:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_72ea0425effa267302696cb69e370ea75c0aeb3387ed5512c8765ccc00ffb38e", "typeString": "literal_string \"a metadata string\"" @@ -3237,14 +3253,14 @@ }, { "hexValue": "30", - "id": 70329, + "id": 71115, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "989:1:115", + "src": "989:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3253,14 +3269,14 @@ }, { "hexValue": "74727565", - "id": 70330, + "id": 71116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "992:4:115", + "src": "992:4:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3268,12 +3284,12 @@ "value": "true" }, { - "id": 70331, + "id": 71117, "name": "mockdependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70318, - "src": "998:16:115", + "referencedDeclaration": 71104, + "src": "998:16:128", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -3304,33 +3320,33 @@ } ], "expression": { - "id": 70322, + "id": 71108, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "931:3:115", + "referencedDeclaration": 70555, + "src": "931:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70323, + "id": 71109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "935:19:115", + "memberLocation": "935:19:128", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "931:23:115", + "referencedDeclaration": 9556, + "src": "931:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 70332, + "id": 71118, "isConstant": false, "isLValue": false, "isPure": false, @@ -3339,7 +3355,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "931:84:115", + "src": "931:84:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3347,22 +3363,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "913:102:115" + "src": "913:102:128" }, { "assignments": [ - 70335 + 71121 ], "declarations": [ { "constant": false, - "id": 70335, + "id": 71121, "mutability": "mutable", "name": "aDefID2", - "nameLocation": "1033:7:115", + "nameLocation": "1033:7:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "1025:15:115", + "scope": 71275, + "src": "1025:15:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3370,10 +3386,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70334, + "id": 71120, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1025:7:115", + "src": "1025:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3382,18 +3398,18 @@ "visibility": "internal" } ], - "id": 70347, + "id": 71133, "initialValue": { "arguments": [ { "arguments": [ { - "id": 70340, + "id": 71126, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1075:2:115", + "referencedDeclaration": 70587, + "src": "1075:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3407,27 +3423,27 @@ "typeString": "address" } ], - "id": 70339, + "id": 71125, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1067:8:115", + "src": "1067:8:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 70338, + "id": 71124, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1067:8:115", + "src": "1067:8:128", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 70341, + "id": 71127, "isConstant": false, "isLValue": false, "isPure": false, @@ -3436,7 +3452,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1067:11:115", + "src": "1067:11:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3445,14 +3461,14 @@ }, { "hexValue": "61206d6574616461746120737472696e672032", - "id": 70342, + "id": 71128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1080:21:115", + "src": "1080:21:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_717bb63519ebefe944bc4ba193b8e354dc644e913dd5f5cbcb5de79751ee1970", "typeString": "literal_string \"a metadata string 2\"" @@ -3461,14 +3477,14 @@ }, { "hexValue": "30", - "id": 70343, + "id": 71129, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1103:1:115", + "src": "1103:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3477,14 +3493,14 @@ }, { "hexValue": "74727565", - "id": 70344, + "id": 71130, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1106:4:115", + "src": "1106:4:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3492,12 +3508,12 @@ "value": "true" }, { - "id": 70345, + "id": 71131, "name": "mockdependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70318, - "src": "1112:16:115", + "referencedDeclaration": 71104, + "src": "1112:16:128", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -3528,33 +3544,33 @@ } ], "expression": { - "id": 70336, + "id": 71122, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1043:3:115", + "referencedDeclaration": 70555, + "src": "1043:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70337, + "id": 71123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1047:19:115", + "memberLocation": "1047:19:128", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1043:23:115", + "referencedDeclaration": 9556, + "src": "1043:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 70346, + "id": 71132, "isConstant": false, "isLValue": false, "isPure": false, @@ -3563,7 +3579,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1043:86:115", + "src": "1043:86:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3571,22 +3587,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1025:104:115" + "src": "1025:104:128" }, { "assignments": [ - 70349 + 71135 ], "declarations": [ { "constant": false, - "id": 70349, + "id": 71135, "mutability": "mutable", "name": "aSocBotID3", - "nameLocation": "1147:10:115", + "nameLocation": "1147:10:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "1139:18:115", + "scope": 71275, + "src": "1139:18:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3594,10 +3610,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70348, + "id": 71134, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1139:7:115", + "src": "1139:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3606,18 +3622,18 @@ "visibility": "internal" } ], - "id": 70361, + "id": 71147, "initialValue": { "arguments": [ { "arguments": [ { - "id": 70354, + "id": 71140, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1192:2:115", + "referencedDeclaration": 70587, + "src": "1192:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3631,27 +3647,27 @@ "typeString": "address" } ], - "id": 70353, + "id": 71139, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1184:8:115", + "src": "1184:8:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 70352, + "id": 71138, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1184:8:115", + "src": "1184:8:128", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 70355, + "id": 71141, "isConstant": false, "isLValue": false, "isPure": false, @@ -3660,7 +3676,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1184:11:115", + "src": "1184:11:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3669,14 +3685,14 @@ }, { "hexValue": "61206d6574616461746120737472696e6720626f74", - "id": 70356, + "id": 71142, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:23:115", + "src": "1197:23:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_95cb4736e2c6d232a2720f6273c73f0f4378006bd6380a197bb64c3db65f4b26", "typeString": "literal_string \"a metadata string bot\"" @@ -3685,14 +3701,14 @@ }, { "hexValue": "30", - "id": 70357, + "id": 71143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1222:1:115", + "src": "1222:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3701,14 +3717,14 @@ }, { "hexValue": "74727565", - "id": 70358, + "id": 71144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1225:4:115", + "src": "1225:4:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3716,12 +3732,12 @@ "value": "true" }, { - "id": 70359, + "id": 71145, "name": "mockdependencies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70318, - "src": "1231:16:115", + "referencedDeclaration": 71104, + "src": "1231:16:128", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -3752,33 +3768,33 @@ } ], "expression": { - "id": 70350, + "id": 71136, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1160:3:115", + "referencedDeclaration": 70555, + "src": "1160:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70351, + "id": 71137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1164:19:115", + "memberLocation": "1164:19:128", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1160:23:115", + "referencedDeclaration": 9556, + "src": "1160:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 70360, + "id": 71146, "isConstant": false, "isLValue": false, "isPure": false, @@ -3787,7 +3803,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1160:88:115", + "src": "1160:88:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3795,7 +3811,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1139:109:115" + "src": "1139:109:128" }, { "expression": { @@ -3803,14 +3819,14 @@ { "arguments": [ { - "id": 70367, + "id": 71153, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "1286:6:115", + "referencedDeclaration": 71044, + "src": "1286:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } } @@ -3818,30 +3834,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } ], - "id": 70366, + "id": 71152, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1278:7:115", + "src": "1278:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70365, + "id": 71151, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1278:7:115", + "src": "1278:7:128", "typeDescriptions": {} } }, - "id": 70368, + "id": 71154, "isConstant": false, "isLValue": false, "isPure": false, @@ -3850,7 +3866,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1278:15:115", + "src": "1278:15:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3858,12 +3874,12 @@ } }, { - "id": 70369, + "id": 71155, "name": "aDefID1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70321, - "src": "1295:7:115", + "referencedDeclaration": 71107, + "src": "1295:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3882,33 +3898,33 @@ } ], "expression": { - "id": 70362, + "id": 71148, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1259:3:115", + "referencedDeclaration": 70555, + "src": "1259:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70364, + "id": 71150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1263:14:115", + "memberLocation": "1263:14:128", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1259:18:115", + "referencedDeclaration": 9533, + "src": "1259:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 70370, + "id": 71156, "isConstant": false, "isLValue": false, "isPure": false, @@ -3917,16 +3933,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1259:44:115", + "src": "1259:44:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70371, + "id": 71157, "nodeType": "ExpressionStatement", - "src": "1259:44:115" + "src": "1259:44:128" }, { "expression": { @@ -3934,14 +3950,14 @@ { "arguments": [ { - "id": 70377, + "id": 71163, "name": "openTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70261, - "src": "1340:7:115", + "referencedDeclaration": 71047, + "src": "1340:7:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } } @@ -3949,30 +3965,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } ], - "id": 70376, + "id": 71162, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1332:7:115", + "src": "1332:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70375, + "id": 71161, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1332:7:115", + "src": "1332:7:128", "typeDescriptions": {} } }, - "id": 70378, + "id": 71164, "isConstant": false, "isLValue": false, "isPure": false, @@ -3981,7 +3997,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1332:16:115", + "src": "1332:16:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3989,12 +4005,12 @@ } }, { - "id": 70379, + "id": 71165, "name": "aDefID2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70335, - "src": "1350:7:115", + "referencedDeclaration": 71121, + "src": "1350:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4013,33 +4029,33 @@ } ], "expression": { - "id": 70372, + "id": 71158, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1313:3:115", + "referencedDeclaration": 70555, + "src": "1313:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70374, + "id": 71160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1317:14:115", + "memberLocation": "1317:14:128", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1313:18:115", + "referencedDeclaration": 9533, + "src": "1313:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 70380, + "id": 71166, "isConstant": false, "isLValue": false, "isPure": false, @@ -4048,16 +4064,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1313:45:115", + "src": "1313:45:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70381, + "id": 71167, "nodeType": "ExpressionStatement", - "src": "1313:45:115" + "src": "1313:45:128" }, { "expression": { @@ -4065,14 +4081,14 @@ { "arguments": [ { - "id": 70387, + "id": 71173, "name": "socBotP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70264, - "src": "1395:7:115", + "referencedDeclaration": 71050, + "src": "1395:7:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } @@ -4080,30 +4096,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } ], - "id": 70386, + "id": 71172, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1387:7:115", + "src": "1387:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70385, + "id": 71171, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1387:7:115", + "src": "1387:7:128", "typeDescriptions": {} } }, - "id": 70388, + "id": 71174, "isConstant": false, "isLValue": false, "isPure": false, @@ -4112,7 +4128,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1387:16:115", + "src": "1387:16:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4120,12 +4136,12 @@ } }, { - "id": 70389, + "id": 71175, "name": "aSocBotID3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70349, - "src": "1405:10:115", + "referencedDeclaration": 71135, + "src": "1405:10:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4144,33 +4160,33 @@ } ], "expression": { - "id": 70382, + "id": 71168, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1368:3:115", + "referencedDeclaration": 70555, + "src": "1368:3:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 70384, + "id": 71170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1372:14:115", + "memberLocation": "1372:14:128", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1368:18:115", + "referencedDeclaration": 9533, + "src": "1368:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 70390, + "id": 71176, "isConstant": false, "isLValue": false, "isPure": false, @@ -4179,16 +4195,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1368:48:115", + "src": "1368:48:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70391, + "id": 71177, "nodeType": "ExpressionStatement", - "src": "1368:48:115" + "src": "1368:48:128" }, { "expression": { @@ -4196,33 +4212,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70392, + "id": 71178, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1427:2:115", + "referencedDeclaration": 13541, + "src": "1427:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70394, + "id": 71180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1430:9:115", + "memberLocation": "1430:9:128", "memberName": "stopPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23991, - "src": "1427:12:115", + "referencedDeclaration": 24742, + "src": "1427:12:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70395, + "id": 71181, "isConstant": false, "isLValue": false, "isPure": false, @@ -4231,27 +4247,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1427:14:115", + "src": "1427:14:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70396, + "id": 71182, "nodeType": "ExpressionStatement", - "src": "1427:14:115" + "src": "1427:14:128" }, { "expression": { "arguments": [ { - "id": 70400, + "id": 71186, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1461:2:115", + "referencedDeclaration": 70589, + "src": "1461:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4266,33 +4282,33 @@ } ], "expression": { - "id": 70397, + "id": 71183, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1452:2:115", + "referencedDeclaration": 13541, + "src": "1452:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70399, + "id": 71185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1455:5:115", + "memberLocation": "1455:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1452:8:115", + "referencedDeclaration": 24720, + "src": "1452:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70401, + "id": 71187, "isConstant": false, "isLValue": false, "isPure": false, @@ -4301,30 +4317,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1452:12:115", + "src": "1452:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70402, + "id": 71188, "nodeType": "ExpressionStatement", - "src": "1452:12:115" + "src": "1452:12:128" }, { "expression": { "arguments": [ { "hexValue": "4131555345524e414d45", - "id": 70406, + "id": 71192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1483:12:115", + "src": "1483:12:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_24fb79c1732dfc2ab19654193a42c833542120e7302b2de936e6f611cec6a2c3", "typeString": "literal_string \"A1USERNAME\"" @@ -4333,14 +4349,14 @@ }, { "hexValue": "757272726c6c", - "id": 70407, + "id": 71193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1497:8:115", + "src": "1497:8:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2282d2453312c0d2d3e2213255ff3c7a232d55946902fcad9d57cf960e19405e", "typeString": "literal_string \"urrrll\"" @@ -4349,14 +4365,14 @@ }, { "hexValue": "31", - "id": 70408, + "id": 71194, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1507:1:115", + "src": "1507:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4365,14 +4381,14 @@ }, { "hexValue": "35", - "id": 70409, + "id": 71195, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1510:1:115", + "src": "1510:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -4382,14 +4398,14 @@ { "arguments": [ { - "id": 70412, + "id": 71198, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1521:4:115", + "referencedDeclaration": 70573, + "src": "1521:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -4397,30 +4413,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70411, + "id": 71197, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1513:7:115", + "src": "1513:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70410, + "id": 71196, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1513:7:115", + "src": "1513:7:128", "typeDescriptions": {} } }, - "id": 70413, + "id": 71199, "isConstant": false, "isLValue": false, "isPure": false, @@ -4429,7 +4445,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1513:13:115", + "src": "1513:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4461,33 +4477,33 @@ } ], "expression": { - "id": 70403, + "id": 71189, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1474:3:115", + "referencedDeclaration": 70549, + "src": "1474:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70405, + "id": 71191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1478:4:115", + "memberLocation": "1478:4:128", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1474:8:115", + "src": "1474:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 70414, + "id": 71200, "isConstant": false, "isLValue": false, "isPure": false, @@ -4496,27 +4512,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1474:53:115", + "src": "1474:53:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70415, + "id": 71201, "nodeType": "ExpressionStatement", - "src": "1474:53:115" + "src": "1474:53:128" }, { "expression": { "arguments": [ { - "id": 70419, + "id": 71205, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1546:2:115", + "referencedDeclaration": 70591, + "src": "1546:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4531,33 +4547,33 @@ } ], "expression": { - "id": 70416, + "id": 71202, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1537:2:115", + "referencedDeclaration": 13541, + "src": "1537:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70418, + "id": 71204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1540:5:115", + "memberLocation": "1540:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1537:8:115", + "referencedDeclaration": 24720, + "src": "1537:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70420, + "id": 71206, "isConstant": false, "isLValue": false, "isPure": false, @@ -4566,30 +4582,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1537:12:115", + "src": "1537:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70421, + "id": 71207, "nodeType": "ExpressionStatement", - "src": "1537:12:115" + "src": "1537:12:128" }, { "expression": { "arguments": [ { "hexValue": "4131555345524e414d45", - "id": 70425, + "id": 71211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1568:12:115", + "src": "1568:12:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_24fb79c1732dfc2ab19654193a42c833542120e7302b2de936e6f611cec6a2c3", "typeString": "literal_string \"A1USERNAME\"" @@ -4598,14 +4614,14 @@ }, { "hexValue": "757272726c6c", - "id": 70426, + "id": 71212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1582:8:115", + "src": "1582:8:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2282d2453312c0d2d3e2213255ff3c7a232d55946902fcad9d57cf960e19405e", "typeString": "literal_string \"urrrll\"" @@ -4614,14 +4630,14 @@ }, { "hexValue": "31", - "id": 70427, + "id": 71213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1592:1:115", + "src": "1592:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4630,14 +4646,14 @@ }, { "hexValue": "35", - "id": 70428, + "id": 71214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1595:1:115", + "src": "1595:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -4647,14 +4663,14 @@ { "arguments": [ { - "id": 70431, + "id": 71217, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1606:4:115", + "referencedDeclaration": 70573, + "src": "1606:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -4662,30 +4678,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70430, + "id": 71216, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1598:7:115", + "src": "1598:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70429, + "id": 71215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1598:7:115", + "src": "1598:7:128", "typeDescriptions": {} } }, - "id": 70432, + "id": 71218, "isConstant": false, "isLValue": false, "isPure": false, @@ -4694,7 +4710,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1598:13:115", + "src": "1598:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4726,33 +4742,33 @@ } ], "expression": { - "id": 70422, + "id": 71208, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1559:3:115", + "referencedDeclaration": 70549, + "src": "1559:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70424, + "id": 71210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1563:4:115", + "memberLocation": "1563:4:128", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1559:8:115", + "src": "1559:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 70433, + "id": 71219, "isConstant": false, "isLValue": false, "isPure": false, @@ -4761,31 +4777,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1559:53:115", + "src": "1559:53:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70434, + "id": 71220, "nodeType": "ExpressionStatement", - "src": "1559:53:115" + "src": "1559:53:128" }, { "assignments": [ - 70436 + 71222 ], "declarations": [ { "constant": false, - "id": 70436, + "id": 71222, "mutability": "mutable", "name": "a1bal", - "nameLocation": "1631:5:115", + "nameLocation": "1631:5:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "1623:13:115", + "scope": 71275, + "src": "1623:13:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4793,10 +4809,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70435, + "id": 71221, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1623:7:115", + "src": "1623:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4805,16 +4821,16 @@ "visibility": "internal" } ], - "id": 70441, + "id": 71227, "initialValue": { "arguments": [ { - "id": 70439, + "id": 71225, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1653:2:115", + "referencedDeclaration": 70589, + "src": "1653:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4829,33 +4845,33 @@ } ], "expression": { - "id": 70437, + "id": 71223, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1639:3:115", + "referencedDeclaration": 70549, + "src": "1639:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70438, + "id": 71224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1643:9:115", + "memberLocation": "1643:9:128", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 55690, - "src": "1639:13:115", + "referencedDeclaration": 56441, + "src": "1639:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 70440, + "id": 71226, "isConstant": false, "isLValue": false, "isPure": false, @@ -4864,7 +4880,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1639:17:115", + "src": "1639:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4872,22 +4888,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1623:33:115" + "src": "1623:33:128" }, { "assignments": [ - 70443 + 71229 ], "declarations": [ { "constant": false, - "id": 70443, + "id": 71229, "mutability": "mutable", "name": "a2bal", - "nameLocation": "1674:5:115", + "nameLocation": "1674:5:128", "nodeType": "VariableDeclaration", - "scope": 70489, - "src": "1666:13:115", + "scope": 71275, + "src": "1666:13:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4895,10 +4911,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70442, + "id": 71228, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1666:7:115", + "src": "1666:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4907,16 +4923,16 @@ "visibility": "internal" } ], - "id": 70448, + "id": 71234, "initialValue": { "arguments": [ { - "id": 70446, + "id": 71232, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1696:2:115", + "referencedDeclaration": 70591, + "src": "1696:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4931,33 +4947,33 @@ } ], "expression": { - "id": 70444, + "id": 71230, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1682:3:115", + "referencedDeclaration": 70549, + "src": "1682:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70445, + "id": 71231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1686:9:115", + "memberLocation": "1686:9:128", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 55690, - "src": "1682:13:115", + "referencedDeclaration": 56441, + "src": "1682:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 70447, + "id": 71233, "isConstant": false, "isLValue": false, "isPure": false, @@ -4966,7 +4982,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1682:17:115", + "src": "1682:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4974,7 +4990,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1666:33:115" + "src": "1666:33:128" }, { "expression": { @@ -4982,12 +4998,12 @@ { "arguments": [ { - "id": 70452, + "id": 71238, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1735:2:115", + "referencedDeclaration": 70589, + "src": "1735:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5002,33 +5018,33 @@ } ], "expression": { - "id": 70450, + "id": 71236, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1721:4:115", + "referencedDeclaration": 70573, + "src": "1721:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 70451, + "id": 71237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1726:8:115", + "memberLocation": "1726:8:128", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "1721:13:115", + "referencedDeclaration": 6323, + "src": "1721:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 70453, + "id": 71239, "isConstant": false, "isLValue": false, "isPure": false, @@ -5037,7 +5053,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1721:17:115", + "src": "1721:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5046,14 +5062,14 @@ }, { "hexValue": "4131206e6f74206d656d626572", - "id": 70454, + "id": 71240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1740:15:115", + "src": "1740:15:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_338065a88625fe44e725a04cd34fdf709522d69abec011c0593dcff82c99a0d0", "typeString": "literal_string \"A1 not member\"" @@ -5072,21 +5088,21 @@ "typeString": "literal_string \"A1 not member\"" } ], - "id": 70449, + "id": 71235, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1710:10:115", + "referencedDeclaration": 11481, + "src": "1710:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70455, + "id": 71241, "isConstant": false, "isLValue": false, "isPure": false, @@ -5095,16 +5111,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1710:46:115", + "src": "1710:46:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70456, + "id": 71242, "nodeType": "ExpressionStatement", - "src": "1710:46:115" + "src": "1710:46:128" }, { "expression": { @@ -5112,12 +5128,12 @@ { "arguments": [ { - "id": 70460, + "id": 71246, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1791:2:115", + "referencedDeclaration": 70591, + "src": "1791:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5132,33 +5148,33 @@ } ], "expression": { - "id": 70458, + "id": 71244, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1777:4:115", + "referencedDeclaration": 70573, + "src": "1777:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 70459, + "id": 71245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1782:8:115", + "memberLocation": "1782:8:128", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "1777:13:115", + "referencedDeclaration": 6323, + "src": "1777:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 70461, + "id": 71247, "isConstant": false, "isLValue": false, "isPure": false, @@ -5167,7 +5183,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1777:17:115", + "src": "1777:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5176,14 +5192,14 @@ }, { "hexValue": "4132206e6f74206d656d626572", - "id": 70462, + "id": 71248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1796:15:115", + "src": "1796:15:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_acfd8628d31a1b3e5a3830e8f2e8a5b2f406eddf6d122ba8be6f17d12ceb265e", "typeString": "literal_string \"A2 not member\"" @@ -5202,21 +5218,21 @@ "typeString": "literal_string \"A2 not member\"" } ], - "id": 70457, + "id": 71243, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1766:10:115", + "referencedDeclaration": 11481, + "src": "1766:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70463, + "id": 71249, "isConstant": false, "isLValue": false, "isPure": false, @@ -5225,31 +5241,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1766:46:115", + "src": "1766:46:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70464, + "id": 71250, "nodeType": "ExpressionStatement", - "src": "1766:46:115" + "src": "1766:46:128" }, { "expression": { - "id": 70475, + "id": 71261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70465, + "id": 71251, "name": "A1role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69811, - "src": "1823:6:115", + "referencedDeclaration": 70597, + "src": "1823:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5261,12 +5277,12 @@ "expression": { "arguments": [ { - "id": 70468, + "id": 71254, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1854:2:115", + "referencedDeclaration": 70589, + "src": "1854:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5275,14 +5291,14 @@ { "arguments": [ { - "id": 70471, + "id": 71257, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1866:4:115", + "referencedDeclaration": 70573, + "src": "1866:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5290,30 +5306,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70470, + "id": 71256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1858:7:115", + "src": "1858:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70469, + "id": 71255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1858:7:115", + "src": "1858:7:128", "typeDescriptions": {} } }, - "id": 70472, + "id": 71258, "isConstant": false, "isLValue": false, "isPure": false, @@ -5322,7 +5338,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1858:13:115", + "src": "1858:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5342,33 +5358,33 @@ } ], "expression": { - "id": 70466, + "id": 71252, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1832:3:115", + "referencedDeclaration": 70549, + "src": "1832:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70467, + "id": 71253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1836:17:115", + "memberLocation": "1836:17:128", "memberName": "getMembershipData", "nodeType": "MemberAccess", "referencedDeclaration": 1130, - "src": "1832:21:115", + "src": "1832:21:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_DAOMember_$1065_memory_ptr_$", "typeString": "function (address,address) view external returns (struct IAutID.DAOMember memory)" } }, - "id": 70473, + "id": 71259, "isConstant": false, "isLValue": false, "isPure": false, @@ -5377,52 +5393,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1832:40:115", + "src": "1832:40:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_DAOMember_$1065_memory_ptr", "typeString": "struct IAutID.DAOMember memory" } }, - "id": 70474, + "id": 71260, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "1873:4:115", + "memberLocation": "1873:4:128", "memberName": "role", "nodeType": "MemberAccess", "referencedDeclaration": 1060, - "src": "1832:45:115", + "src": "1832:45:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1823:54:115", + "src": "1823:54:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70476, + "id": 71262, "nodeType": "ExpressionStatement", - "src": "1823:54:115" + "src": "1823:54:128" }, { "expression": { - "id": 70487, + "id": 71273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70477, + "id": 71263, "name": "A2role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69813, - "src": "1887:6:115", + "referencedDeclaration": 70599, + "src": "1887:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5434,12 +5450,12 @@ "expression": { "arguments": [ { - "id": 70480, + "id": 71266, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1918:2:115", + "referencedDeclaration": 70591, + "src": "1918:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5448,14 +5464,14 @@ { "arguments": [ { - "id": 70483, + "id": 71269, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1930:4:115", + "referencedDeclaration": 70573, + "src": "1930:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5463,30 +5479,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70482, + "id": 71268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1922:7:115", + "src": "1922:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70481, + "id": 71267, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1922:7:115", + "src": "1922:7:128", "typeDescriptions": {} } }, - "id": 70484, + "id": 71270, "isConstant": false, "isLValue": false, "isPure": false, @@ -5495,7 +5511,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1922:13:115", + "src": "1922:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5515,33 +5531,33 @@ } ], "expression": { - "id": 70478, + "id": 71264, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1896:3:115", + "referencedDeclaration": 70549, + "src": "1896:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 70479, + "id": 71265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1900:17:115", + "memberLocation": "1900:17:128", "memberName": "getMembershipData", "nodeType": "MemberAccess", "referencedDeclaration": 1130, - "src": "1896:21:115", + "src": "1896:21:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_DAOMember_$1065_memory_ptr_$", "typeString": "function (address,address) view external returns (struct IAutID.DAOMember memory)" } }, - "id": 70485, + "id": 71271, "isConstant": false, "isLValue": false, "isPure": false, @@ -5550,81 +5566,81 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1896:40:115", + "src": "1896:40:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_DAOMember_$1065_memory_ptr", "typeString": "struct IAutID.DAOMember memory" } }, - "id": 70486, + "id": 71272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "1937:4:115", + "memberLocation": "1937:4:128", "memberName": "role", "nodeType": "MemberAccess", "referencedDeclaration": 1060, - "src": "1896:45:115", + "src": "1896:45:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1887:54:115", + "src": "1887:54:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70488, + "id": 71274, "nodeType": "ExpressionStatement", - "src": "1887:54:115" + "src": "1887:54:128" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "618:5:115", + "nameLocation": "618:5:128", "overrides": { - "id": 70268, + "id": 71054, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "633:8:115" + "src": "633:8:128" }, "parameters": { - "id": 70267, + "id": 71053, "nodeType": "ParameterList", "parameters": [], - "src": "623:2:115" + "src": "623:2:128" }, "returnParameters": { - "id": 70269, + "id": 71055, "nodeType": "ParameterList", "parameters": [], - "src": "642:0:115" + "src": "642:0:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 70514, + "id": 71300, "nodeType": "ModifierDefinition", - "src": "1954:127:115", + "src": "1954:127:128", "nodes": [], "body": { - "id": 70513, + "id": 71299, "nodeType": "Block", - "src": "1983:98:115", + "src": "1983:98:128", "nodes": [], "statements": [ { @@ -5637,7 +5653,7 @@ "typeIdentifier": "t_uint160", "typeString": "uint160" }, - "id": 70503, + "id": 71289, "isConstant": false, "isLValue": false, "isPure": true, @@ -5646,22 +5662,22 @@ "expression": { "arguments": [ { - "id": 70499, + "id": 71285, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2020:7:115", + "src": "2020:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 70498, + "id": 71284, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "2020:7:115", + "src": "2020:7:128", "typeDescriptions": {} } } @@ -5673,18 +5689,18 @@ "typeString": "type(uint160)" } ], - "id": 70497, + "id": 71283, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, - "src": "2015:4:115", + "src": "2015:4:128", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 70500, + "id": 71286, "isConstant": false, "isLValue": false, "isPure": true, @@ -5693,22 +5709,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2015:13:115", + "src": "2015:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint160", "typeString": "type(uint160)" } }, - "id": 70501, + "id": 71287, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2029:3:115", + "memberLocation": "2029:3:128", "memberName": "max", "nodeType": "MemberAccess", - "src": "2015:17:115", + "src": "2015:17:128", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" @@ -5718,21 +5734,21 @@ "operator": "/", "rightExpression": { "hexValue": "3332", - "id": 70502, + "id": 71288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2035:2:115", + "src": "2035:2:128", "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, - "src": "2015:22:115", + "src": "2015:22:128", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" @@ -5746,26 +5762,26 @@ "typeString": "uint160" } ], - "id": 70496, + "id": 71282, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2007:7:115", + "src": "2007:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70495, + "id": 71281, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2007:7:115", + "src": "2007:7:128", "typeDescriptions": {} } }, - "id": 70504, + "id": 71290, "isConstant": false, "isLValue": false, "isPure": true, @@ -5774,7 +5790,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2007:31:115", + "src": "2007:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5790,33 +5806,33 @@ } ], "expression": { - "id": 70492, + "id": 71278, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1993:2:115", + "referencedDeclaration": 13541, + "src": "1993:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70494, + "id": 71280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1996:10:115", + "memberLocation": "1996:10:128", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "1993:13:115", + "referencedDeclaration": 24725, + "src": "1993:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70505, + "id": 71291, "isConstant": false, "isLValue": false, "isPure": false, @@ -5825,21 +5841,21 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1993:46:115", + "src": "1993:46:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70506, + "id": 71292, "nodeType": "ExpressionStatement", - "src": "1993:46:115" + "src": "1993:46:128" }, { - "id": 70507, + "id": 71293, "nodeType": "PlaceholderStatement", - "src": "2049:1:115" + "src": "2049:1:128" }, { "expression": { @@ -5847,33 +5863,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70508, + "id": 71294, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2060:2:115", + "referencedDeclaration": 13541, + "src": "2060:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70510, + "id": 71296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2063:9:115", + "memberLocation": "2063:9:128", "memberName": "stopPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23991, - "src": "2060:12:115", + "referencedDeclaration": 24742, + "src": "2060:12:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70511, + "id": 71297, "isConstant": false, "isLValue": false, "isPure": false, @@ -5882,51 +5898,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2060:14:115", + "src": "2060:14:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70512, + "id": 71298, "nodeType": "ExpressionStatement", - "src": "2060:14:115" + "src": "2060:14:128" } ] }, "name": "callerIsNotMember", - "nameLocation": "1963:17:115", + "nameLocation": "1963:17:128", "parameters": { - "id": 70491, + "id": 71277, "nodeType": "ParameterList", "parameters": [], - "src": "1980:2:115" + "src": "1980:2:128" }, "virtual": false, "visibility": "internal" }, { - "id": 70544, + "id": 71330, "nodeType": "FunctionDefinition", - "src": "2087:213:115", + "src": "2087:213:128", "nodes": [], "body": { - "id": 70543, + "id": 71329, "nodeType": "Block", - "src": "2161:139:115", + "src": "2161:139:128", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 70524, + "id": 71310, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2180:2:115", + "referencedDeclaration": 70587, + "src": "2180:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5941,33 +5957,33 @@ } ], "expression": { - "id": 70521, + "id": 71307, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2171:2:115", + "referencedDeclaration": 13541, + "src": "2171:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70523, + "id": 71309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2174:5:115", + "memberLocation": "2174:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2171:8:115", + "referencedDeclaration": 24720, + "src": "2171:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70525, + "id": 71311, "isConstant": false, "isLValue": false, "isPure": false, @@ -5976,31 +5992,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2171:12:115", + "src": "2171:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70526, + "id": 71312, "nodeType": "ExpressionStatement", - "src": "2171:12:115" + "src": "2171:12:128" }, { "expression": { - "id": 70541, + "id": 71327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70527, + "id": 71313, "name": "taskID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70519, - "src": "2193:6:115", + "referencedDeclaration": 71305, + "src": "2193:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6011,12 +6027,12 @@ "rightHandSide": { "arguments": [ { - "id": 70530, + "id": 71316, "name": "roleID_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70516, - "src": "2216:7:115", + "referencedDeclaration": 71302, + "src": "2216:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6024,14 +6040,14 @@ }, { "hexValue": "687474703a2f2f5552494f465441534b6f66662e636f6d", - "id": 70531, + "id": 71317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2225:25:115", + "src": "2225:25:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_698814c3d6711851cdae21246662a1c86fc14e54a1493d4fc316351e3cbb4aa1", "typeString": "literal_string \"http://URIOFTASKoff.com\"" @@ -6043,33 +6059,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70535, + "id": 71321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70532, + "id": 71318, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2252:5:115", + "src": "2252:5:128", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 70533, + "id": 71319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2258:9:115", + "memberLocation": "2258:9:128", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2252:15:115", + "src": "2252:15:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6079,21 +6095,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 70534, + "id": 71320, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2270:1:115", + "src": "2270:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2252:19:115", + "src": "2252:19:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6104,33 +6120,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70539, + "id": 71325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70536, + "id": 71322, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2273:5:115", + "src": "2273:5:128", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 70537, + "id": 71323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2279:9:115", + "memberLocation": "2279:9:128", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2273:15:115", + "src": "2273:15:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6140,21 +6156,21 @@ "operator": "+", "rightExpression": { "hexValue": "33", - "id": 70538, + "id": 71324, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2291:1:115", + "src": "2291:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, - "src": "2273:19:115", + "src": "2273:19:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6181,33 +6197,33 @@ } ], "expression": { - "id": 70528, + "id": 71314, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "2202:6:115", + "referencedDeclaration": 71044, + "src": "2202:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70529, + "id": 71315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2209:6:115", + "memberLocation": "2209:6:128", "memberName": "create", "nodeType": "MemberAccess", - "referencedDeclaration": 10023, - "src": "2202:13:115", + "referencedDeclaration": 10774, + "src": "2202:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,string memory,uint256,uint256) external returns (uint256)" } }, - "id": 70540, + "id": 71326, "isConstant": false, "isLValue": false, "isPure": false, @@ -6216,22 +6232,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2202:91:115", + "src": "2202:91:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2193:100:115", + "src": "2193:100:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70542, + "id": 71328, "nodeType": "ExpressionStatement", - "src": "2193:100:115" + "src": "2193:100:128" } ] }, @@ -6240,20 +6256,20 @@ "kind": "function", "modifiers": [], "name": "_createOffTasks", - "nameLocation": "2096:15:115", + "nameLocation": "2096:15:128", "parameters": { - "id": 70517, + "id": 71303, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70516, + "id": 71302, "mutability": "mutable", "name": "roleID_", - "nameLocation": "2120:7:115", + "nameLocation": "2120:7:128", "nodeType": "VariableDeclaration", - "scope": 70544, - "src": "2112:15:115", + "scope": 71330, + "src": "2112:15:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6261,10 +6277,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70515, + "id": 71301, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2112:7:115", + "src": "2112:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6273,21 +6289,21 @@ "visibility": "internal" } ], - "src": "2111:17:115" + "src": "2111:17:128" }, "returnParameters": { - "id": 70520, + "id": 71306, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70519, + "id": 71305, "mutability": "mutable", "name": "taskID", - "nameLocation": "2153:6:115", + "nameLocation": "2153:6:128", "nodeType": "VariableDeclaration", - "scope": 70544, - "src": "2145:14:115", + "scope": 71330, + "src": "2145:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6295,10 +6311,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70518, + "id": 71304, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2145:7:115", + "src": "2145:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6307,34 +6323,34 @@ "visibility": "internal" } ], - "src": "2144:16:115" + "src": "2144:16:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 70574, + "id": 71360, "nodeType": "FunctionDefinition", - "src": "2306:212:115", + "src": "2306:212:128", "nodes": [], "body": { - "id": 70573, + "id": 71359, "nodeType": "Block", - "src": "2379:139:115", + "src": "2379:139:128", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 70554, + "id": 71340, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2398:2:115", + "referencedDeclaration": 70587, + "src": "2398:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6349,33 +6365,33 @@ } ], "expression": { - "id": 70551, + "id": 71337, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2389:2:115", + "referencedDeclaration": 13541, + "src": "2389:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70553, + "id": 71339, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2392:5:115", + "memberLocation": "2392:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2389:8:115", + "referencedDeclaration": 24720, + "src": "2389:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70555, + "id": 71341, "isConstant": false, "isLValue": false, "isPure": false, @@ -6384,31 +6400,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2389:12:115", + "src": "2389:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70556, + "id": 71342, "nodeType": "ExpressionStatement", - "src": "2389:12:115" + "src": "2389:12:128" }, { "expression": { - "id": 70571, + "id": 71357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70557, + "id": 71343, "name": "taskID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70549, - "src": "2411:6:115", + "referencedDeclaration": 71335, + "src": "2411:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6419,12 +6435,12 @@ "rightHandSide": { "arguments": [ { - "id": 70560, + "id": 71346, "name": "roleID_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70546, - "src": "2435:7:115", + "referencedDeclaration": 71332, + "src": "2435:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6432,14 +6448,14 @@ }, { "hexValue": "687474703a2f2f5552494f465441534b6f6e2e636f6d", - "id": 70561, + "id": 71347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2444:24:115", + "src": "2444:24:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3b1df5678ad18093f8114bfb2912561c8b1fdf1674d9c1ed09363bdd92e8cbe5", "typeString": "literal_string \"http://URIOFTASKon.com\"" @@ -6451,33 +6467,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70565, + "id": 71351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70562, + "id": 71348, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2470:5:115", + "src": "2470:5:128", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 70563, + "id": 71349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2476:9:115", + "memberLocation": "2476:9:128", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2470:15:115", + "src": "2470:15:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6487,21 +6503,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 70564, + "id": 71350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2488:1:115", + "src": "2488:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2470:19:115", + "src": "2470:19:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6512,33 +6528,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70569, + "id": 71355, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70566, + "id": 71352, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2491:5:115", + "src": "2491:5:128", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 70567, + "id": 71353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2497:9:115", + "memberLocation": "2497:9:128", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2491:15:115", + "src": "2491:15:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6548,21 +6564,21 @@ "operator": "+", "rightExpression": { "hexValue": "33", - "id": 70568, + "id": 71354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2509:1:115", + "src": "2509:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, - "src": "2491:19:115", + "src": "2491:19:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6589,33 +6605,33 @@ } ], "expression": { - "id": 70558, + "id": 71344, "name": "openTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70261, - "src": "2420:7:115", + "referencedDeclaration": 71047, + "src": "2420:7:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, - "id": 70559, + "id": 71345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2428:6:115", + "memberLocation": "2428:6:128", "memberName": "create", "nodeType": "MemberAccess", - "referencedDeclaration": 10023, - "src": "2420:14:115", + "referencedDeclaration": 10774, + "src": "2420:14:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,string memory,uint256,uint256) external returns (uint256)" } }, - "id": 70570, + "id": 71356, "isConstant": false, "isLValue": false, "isPure": false, @@ -6624,22 +6640,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2420:91:115", + "src": "2420:91:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2411:100:115", + "src": "2411:100:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70572, + "id": 71358, "nodeType": "ExpressionStatement", - "src": "2411:100:115" + "src": "2411:100:128" } ] }, @@ -6648,20 +6664,20 @@ "kind": "function", "modifiers": [], "name": "_createONTasks", - "nameLocation": "2315:14:115", + "nameLocation": "2315:14:128", "parameters": { - "id": 70547, + "id": 71333, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70546, + "id": 71332, "mutability": "mutable", "name": "roleID_", - "nameLocation": "2338:7:115", + "nameLocation": "2338:7:128", "nodeType": "VariableDeclaration", - "scope": 70574, - "src": "2330:15:115", + "scope": 71360, + "src": "2330:15:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6669,10 +6685,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70545, + "id": 71331, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2330:7:115", + "src": "2330:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6681,21 +6697,21 @@ "visibility": "internal" } ], - "src": "2329:17:115" + "src": "2329:17:128" }, "returnParameters": { - "id": 70550, + "id": 71336, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70549, + "id": 71335, "mutability": "mutable", "name": "taskID", - "nameLocation": "2371:6:115", + "nameLocation": "2371:6:128", "nodeType": "VariableDeclaration", - "scope": 70574, - "src": "2363:14:115", + "scope": 71360, + "src": "2363:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6703,10 +6719,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70548, + "id": 71334, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2363:7:115", + "src": "2363:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6715,22 +6731,22 @@ "visibility": "internal" } ], - "src": "2362:16:115" + "src": "2362:16:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 70707, + "id": 71493, "nodeType": "FunctionDefinition", - "src": "2524:711:115", + "src": "2524:711:128", "nodes": [], "body": { - "id": 70706, + "id": 71492, "nodeType": "Block", - "src": "2587:648:115", + "src": "2587:648:128", "nodes": [], "statements": [ { @@ -6738,14 +6754,14 @@ "arguments": [ { "hexValue": "31303030", - "id": 70582, + "id": 71368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2605:4:115", + "src": "2605:4:128", "typeDescriptions": { "typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000" @@ -6761,33 +6777,33 @@ } ], "expression": { - "id": 70579, + "id": 71365, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2597:2:115", + "referencedDeclaration": 13541, + "src": "2597:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70581, + "id": 71367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2600:4:115", + "memberLocation": "2600:4:128", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "2597:7:115", + "referencedDeclaration": 24657, + "src": "2597:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 70583, + "id": 71369, "isConstant": false, "isLValue": false, "isPure": false, @@ -6796,31 +6812,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2597:13:115", + "src": "2597:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70584, + "id": 71370, "nodeType": "ExpressionStatement", - "src": "2597:13:115" + "src": "2597:13:128" }, { "expression": { - "id": 70589, + "id": 71375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70585, + "id": 71371, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "2620:6:115", + "referencedDeclaration": 71363, + "src": "2620:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6831,12 +6847,12 @@ "rightHandSide": { "arguments": [ { - "id": 70587, + "id": 71373, "name": "A1role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69811, - "src": "2645:6:115", + "referencedDeclaration": 70597, + "src": "2645:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6850,18 +6866,18 @@ "typeString": "uint256" } ], - "id": 70586, + "id": 71372, "name": "_createOffTasks", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70544, - "src": "2629:15:115", + "referencedDeclaration": 71330, + "src": "2629:15:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 70588, + "id": 71374, "isConstant": false, "isLValue": false, "isPure": false, @@ -6870,22 +6886,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2629:23:115", + "src": "2629:23:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2620:32:115", + "src": "2620:32:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70590, + "id": 71376, "nodeType": "ExpressionStatement", - "src": "2620:32:115" + "src": "2620:32:128" }, { "expression": { @@ -6893,33 +6909,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70591, + "id": 71377, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2663:2:115", + "referencedDeclaration": 13541, + "src": "2663:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70593, + "id": 71379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2666:12:115", + "memberLocation": "2666:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "2663:15:115", + "referencedDeclaration": 24784, + "src": "2663:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70594, + "id": 71380, "isConstant": false, "isLValue": false, "isPure": false, @@ -6928,27 +6944,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2663:17:115", + "src": "2663:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70595, + "id": 71381, "nodeType": "ExpressionStatement", - "src": "2663:17:115" + "src": "2663:17:128" }, { "expression": { "arguments": [ { - "id": 70599, + "id": 71385, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "2704:6:115", + "referencedDeclaration": 71363, + "src": "2704:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6956,14 +6972,14 @@ }, { "hexValue": "75726c75726c", - "id": 70600, + "id": 71386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2712:8:115", + "src": "2712:8:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_361fb5a15c0ca12229c8bd4a77b16db12fa61192c66f8adaf87f445627a4cf37", "typeString": "literal_string \"urlurl\"" @@ -6983,33 +6999,33 @@ } ], "expression": { - "id": 70596, + "id": 71382, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "2690:6:115", + "referencedDeclaration": 71044, + "src": "2690:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70598, + "id": 71384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2697:6:115", + "memberLocation": "2697:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "2690:13:115", + "referencedDeclaration": 10529, + "src": "2690:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70601, + "id": 71387, "isConstant": false, "isLValue": false, "isPure": false, @@ -7018,16 +7034,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2690:31:115", + "src": "2690:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70602, + "id": 71388, "nodeType": "ExpressionStatement", - "src": "2690:31:115" + "src": "2690:31:128" }, { "expression": { @@ -7036,14 +7052,14 @@ "arguments": [ { "hexValue": "3334323533323534", - "id": 70608, + "id": 71394, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2749:8:115", + "src": "2749:8:128", "typeDescriptions": { "typeIdentifier": "t_rational_34253254_by_1", "typeString": "int_const 34253254" @@ -7058,26 +7074,26 @@ "typeString": "int_const 34253254" } ], - "id": 70607, + "id": 71393, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2741:7:115", + "src": "2741:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70606, + "id": 71392, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2741:7:115", + "src": "2741:7:128", "typeDescriptions": {} } }, - "id": 70609, + "id": 71395, "isConstant": false, "isLValue": false, "isPure": true, @@ -7086,7 +7102,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2741:17:115", + "src": "2741:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7102,33 +7118,33 @@ } ], "expression": { - "id": 70603, + "id": 71389, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2732:2:115", + "referencedDeclaration": 13541, + "src": "2732:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70605, + "id": 71391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2735:5:115", + "memberLocation": "2735:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2732:8:115", + "referencedDeclaration": 24720, + "src": "2732:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70610, + "id": 71396, "isConstant": false, "isLValue": false, "isPure": false, @@ -7137,16 +7153,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2732:27:115", + "src": "2732:27:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70611, + "id": 71397, "nodeType": "ExpressionStatement", - "src": "2732:27:115" + "src": "2732:27:128" }, { "expression": { @@ -7154,33 +7170,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70612, + "id": 71398, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2769:2:115", + "referencedDeclaration": 13541, + "src": "2769:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70614, + "id": 71400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2772:12:115", + "memberLocation": "2772:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "2769:15:115", + "referencedDeclaration": 24784, + "src": "2769:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70615, + "id": 71401, "isConstant": false, "isLValue": false, "isPure": false, @@ -7189,27 +7205,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2769:17:115", + "src": "2769:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70616, + "id": 71402, "nodeType": "ExpressionStatement", - "src": "2769:17:115" + "src": "2769:17:128" }, { "expression": { "arguments": [ { - "id": 70620, + "id": 71406, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "2815:6:115", + "referencedDeclaration": 71363, + "src": "2815:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7219,14 +7235,14 @@ "arguments": [ { "hexValue": "3334323533323534", - "id": 70623, + "id": 71409, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2831:8:115", + "src": "2831:8:128", "typeDescriptions": { "typeIdentifier": "t_rational_34253254_by_1", "typeString": "int_const 34253254" @@ -7241,26 +7257,26 @@ "typeString": "int_const 34253254" } ], - "id": 70622, + "id": 71408, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2823:7:115", + "src": "2823:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70621, + "id": 71407, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2823:7:115", + "src": "2823:7:128", "typeDescriptions": {} } }, - "id": 70624, + "id": 71410, "isConstant": false, "isLValue": false, "isPure": true, @@ -7269,7 +7285,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2823:17:115", + "src": "2823:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7289,33 +7305,33 @@ } ], "expression": { - "id": 70617, + "id": 71403, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "2796:6:115", + "referencedDeclaration": 71044, + "src": "2796:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70619, + "id": 71405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2803:11:115", + "memberLocation": "2803:11:128", "memberName": "finalizeFor", "nodeType": "MemberAccess", - "referencedDeclaration": 6776, - "src": "2796:18:115", + "referencedDeclaration": 7527, + "src": "2796:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address) external" } }, - "id": 70625, + "id": 71411, "isConstant": false, "isLValue": false, "isPure": false, @@ -7324,16 +7340,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2796:45:115", + "src": "2796:45:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70626, + "id": 71412, "nodeType": "ExpressionStatement", - "src": "2796:45:115" + "src": "2796:45:128" }, { "expression": { @@ -7342,14 +7358,14 @@ "arguments": [ { "hexValue": "3334323533323534", - "id": 70632, + "id": 71418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2869:8:115", + "src": "2869:8:128", "typeDescriptions": { "typeIdentifier": "t_rational_34253254_by_1", "typeString": "int_const 34253254" @@ -7364,26 +7380,26 @@ "typeString": "int_const 34253254" } ], - "id": 70631, + "id": 71417, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2861:7:115", + "src": "2861:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70630, + "id": 71416, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2861:7:115", + "src": "2861:7:128", "typeDescriptions": {} } }, - "id": 70633, + "id": 71419, "isConstant": false, "isLValue": false, "isPure": true, @@ -7392,7 +7408,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2861:17:115", + "src": "2861:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7408,33 +7424,33 @@ } ], "expression": { - "id": 70627, + "id": 71413, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2852:2:115", + "referencedDeclaration": 13541, + "src": "2852:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70629, + "id": 71415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2855:5:115", + "memberLocation": "2855:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2852:8:115", + "referencedDeclaration": 24720, + "src": "2852:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70634, + "id": 71420, "isConstant": false, "isLValue": false, "isPure": false, @@ -7443,16 +7459,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2852:27:115", + "src": "2852:27:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70635, + "id": 71421, "nodeType": "ExpressionStatement", - "src": "2852:27:115" + "src": "2852:27:128" }, { "expression": { @@ -7460,33 +7476,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70636, + "id": 71422, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2889:2:115", + "referencedDeclaration": 13541, + "src": "2889:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70638, + "id": 71424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2892:12:115", + "memberLocation": "2892:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "2889:15:115", + "referencedDeclaration": 24784, + "src": "2889:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70639, + "id": 71425, "isConstant": false, "isLValue": false, "isPure": false, @@ -7495,27 +7511,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2889:17:115", + "src": "2889:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70640, + "id": 71426, "nodeType": "ExpressionStatement", - "src": "2889:17:115" + "src": "2889:17:128" }, { "expression": { "arguments": [ { - "id": 70644, + "id": 71430, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "2935:6:115", + "referencedDeclaration": 71363, + "src": "2935:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7525,14 +7541,14 @@ "arguments": [ { "hexValue": "3433323536", - "id": 70647, + "id": 71433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2951:5:115", + "src": "2951:5:128", "typeDescriptions": { "typeIdentifier": "t_rational_43256_by_1", "typeString": "int_const 43256" @@ -7547,26 +7563,26 @@ "typeString": "int_const 43256" } ], - "id": 70646, + "id": 71432, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2943:7:115", + "src": "2943:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70645, + "id": 71431, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2943:7:115", + "src": "2943:7:128", "typeDescriptions": {} } }, - "id": 70648, + "id": 71434, "isConstant": false, "isLValue": false, "isPure": true, @@ -7575,7 +7591,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2943:14:115", + "src": "2943:14:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7595,33 +7611,33 @@ } ], "expression": { - "id": 70641, + "id": 71427, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "2916:6:115", + "referencedDeclaration": 71044, + "src": "2916:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70643, + "id": 71429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2923:11:115", + "memberLocation": "2923:11:128", "memberName": "finalizeFor", "nodeType": "MemberAccess", - "referencedDeclaration": 6776, - "src": "2916:18:115", + "referencedDeclaration": 7527, + "src": "2916:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address) external" } }, - "id": 70649, + "id": 71435, "isConstant": false, "isLValue": false, "isPure": false, @@ -7630,30 +7646,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2916:42:115", + "src": "2916:42:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70650, + "id": 71436, "nodeType": "ExpressionStatement", - "src": "2916:42:115" + "src": "2916:42:128" }, { "expression": { "arguments": [ { "hexValue": "31303939", - "id": 70654, + "id": 71440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2977:4:115", + "src": "2977:4:128", "typeDescriptions": { "typeIdentifier": "t_rational_1099_by_1", "typeString": "int_const 1099" @@ -7669,33 +7685,33 @@ } ], "expression": { - "id": 70651, + "id": 71437, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2969:2:115", + "referencedDeclaration": 13541, + "src": "2969:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70653, + "id": 71439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2972:4:115", + "memberLocation": "2972:4:128", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "2969:7:115", + "referencedDeclaration": 24657, + "src": "2969:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 70655, + "id": 71441, "isConstant": false, "isLValue": false, "isPure": false, @@ -7704,27 +7720,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2969:13:115", + "src": "2969:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70656, + "id": 71442, "nodeType": "ExpressionStatement", - "src": "2969:13:115" + "src": "2969:13:128" }, { "expression": { "arguments": [ { - "id": 70660, + "id": 71446, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3001:2:115", + "referencedDeclaration": 70589, + "src": "3001:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7739,33 +7755,33 @@ } ], "expression": { - "id": 70657, + "id": 71443, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2992:2:115", + "referencedDeclaration": 13541, + "src": "2992:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70659, + "id": 71445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2995:5:115", + "memberLocation": "2995:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2992:8:115", + "referencedDeclaration": 24720, + "src": "2992:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70661, + "id": 71447, "isConstant": false, "isLValue": false, "isPure": false, @@ -7774,16 +7790,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2992:12:115", + "src": "2992:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70662, + "id": 71448, "nodeType": "ExpressionStatement", - "src": "2992:12:115" + "src": "2992:12:128" }, { "expression": { @@ -7791,33 +7807,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70663, + "id": 71449, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3014:2:115", + "referencedDeclaration": 13541, + "src": "3014:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70665, + "id": 71451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3017:12:115", + "memberLocation": "3017:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3014:15:115", + "referencedDeclaration": 24784, + "src": "3014:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70666, + "id": 71452, "isConstant": false, "isLValue": false, "isPure": false, @@ -7826,27 +7842,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3014:17:115", + "src": "3014:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70667, + "id": 71453, "nodeType": "ExpressionStatement", - "src": "3014:17:115" + "src": "3014:17:128" }, { "expression": { "arguments": [ { - "id": 70671, + "id": 71457, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "3055:6:115", + "referencedDeclaration": 71363, + "src": "3055:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7854,14 +7870,14 @@ }, { "hexValue": "75726c75726c", - "id": 70672, + "id": 71458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3063:8:115", + "src": "3063:8:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_361fb5a15c0ca12229c8bd4a77b16db12fa61192c66f8adaf87f445627a4cf37", "typeString": "literal_string \"urlurl\"" @@ -7881,33 +7897,33 @@ } ], "expression": { - "id": 70668, + "id": 71454, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3041:6:115", + "referencedDeclaration": 71044, + "src": "3041:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70670, + "id": 71456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3048:6:115", + "memberLocation": "3048:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "3041:13:115", + "referencedDeclaration": 10529, + "src": "3041:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70673, + "id": 71459, "isConstant": false, "isLValue": false, "isPure": false, @@ -7916,31 +7932,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3041:31:115", + "src": "3041:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70674, + "id": 71460, "nodeType": "ExpressionStatement", - "src": "3041:31:115" + "src": "3041:31:128" }, { "assignments": [ - 70676 + 71462 ], "declarations": [ { "constant": false, - "id": 70676, + "id": 71462, "mutability": "mutable", "name": "snap0", - "nameLocation": "3091:5:115", + "nameLocation": "3091:5:128", "nodeType": "VariableDeclaration", - "scope": 70706, - "src": "3083:13:115", + "scope": 71492, + "src": "3083:13:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7948,10 +7964,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70675, + "id": 71461, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3083:7:115", + "src": "3083:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7960,39 +7976,39 @@ "visibility": "internal" } ], - "id": 70680, + "id": 71466, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 70677, + "id": 71463, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3099:2:115", + "referencedDeclaration": 13541, + "src": "3099:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70678, + "id": 71464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3102:8:115", + "memberLocation": "3102:8:128", "memberName": "snapshot", "nodeType": "MemberAccess", - "referencedDeclaration": 24216, - "src": "3099:11:115", + "referencedDeclaration": 24967, + "src": "3099:11:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 70679, + "id": 71465, "isConstant": false, "isLValue": false, "isPure": false, @@ -8001,7 +8017,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3099:13:115", + "src": "3099:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8009,21 +8025,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3083:29:115" + "src": "3083:29:128" }, { "expression": { "arguments": [ { "hexValue": "31303032", - "id": 70684, + "id": 71470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3131:4:115", + "src": "3131:4:128", "typeDescriptions": { "typeIdentifier": "t_rational_1002_by_1", "typeString": "int_const 1002" @@ -8039,33 +8055,33 @@ } ], "expression": { - "id": 70681, + "id": 71467, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3123:2:115", + "referencedDeclaration": 13541, + "src": "3123:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70683, + "id": 71469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3126:4:115", + "memberLocation": "3126:4:128", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "3123:7:115", + "referencedDeclaration": 24657, + "src": "3123:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 70685, + "id": 71471, "isConstant": false, "isLValue": false, "isPure": false, @@ -8074,27 +8090,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3123:13:115", + "src": "3123:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70686, + "id": 71472, "nodeType": "ExpressionStatement", - "src": "3123:13:115" + "src": "3123:13:128" }, { "expression": { "arguments": [ { - "id": 70690, + "id": 71476, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3155:2:115", + "referencedDeclaration": 70589, + "src": "3155:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8109,33 +8125,33 @@ } ], "expression": { - "id": 70687, + "id": 71473, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3146:2:115", + "referencedDeclaration": 13541, + "src": "3146:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70689, + "id": 71475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3149:5:115", + "memberLocation": "3149:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3146:8:115", + "referencedDeclaration": 24720, + "src": "3146:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70691, + "id": 71477, "isConstant": false, "isLValue": false, "isPure": false, @@ -8144,27 +8160,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3146:12:115", + "src": "3146:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70692, + "id": 71478, "nodeType": "ExpressionStatement", - "src": "3146:12:115" + "src": "3146:12:128" }, { "expression": { "arguments": [ { - "id": 70696, + "id": 71482, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70577, - "src": "3182:6:115", + "referencedDeclaration": 71363, + "src": "3182:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8172,14 +8188,14 @@ }, { "hexValue": "75726c75726c", - "id": 70697, + "id": 71483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3190:8:115", + "src": "3190:8:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_361fb5a15c0ca12229c8bd4a77b16db12fa61192c66f8adaf87f445627a4cf37", "typeString": "literal_string \"urlurl\"" @@ -8199,33 +8215,33 @@ } ], "expression": { - "id": 70693, + "id": 71479, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3168:6:115", + "referencedDeclaration": 71044, + "src": "3168:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70695, + "id": 71481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3175:6:115", + "memberLocation": "3175:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "3168:13:115", + "referencedDeclaration": 10529, + "src": "3168:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70698, + "id": 71484, "isConstant": false, "isLValue": false, "isPure": false, @@ -8234,27 +8250,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3168:31:115", + "src": "3168:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70699, + "id": 71485, "nodeType": "ExpressionStatement", - "src": "3168:31:115" + "src": "3168:31:128" }, { "expression": { "arguments": [ { - "id": 70703, + "id": 71489, "name": "snap0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70676, - "src": "3222:5:115", + "referencedDeclaration": 71462, + "src": "3222:5:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8269,33 +8285,33 @@ } ], "expression": { - "id": 70700, + "id": 71486, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3210:2:115", + "referencedDeclaration": 13541, + "src": "3210:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70702, + "id": 71488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3213:8:115", + "memberLocation": "3213:8:128", "memberName": "revertTo", "nodeType": "MemberAccess", - "referencedDeclaration": 24223, - "src": "3210:11:115", + "referencedDeclaration": 24974, + "src": "3210:11:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) external returns (bool)" } }, - "id": 70704, + "id": 71490, "isConstant": false, "isLValue": false, "isPure": false, @@ -8304,16 +8320,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3210:18:115", + "src": "3210:18:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 70705, + "id": 71491, "nodeType": "ExpressionStatement", - "src": "3210:18:115" + "src": "3210:18:128" } ] }, @@ -8322,26 +8338,26 @@ "kind": "function", "modifiers": [], "name": "testCreateCheckTask", - "nameLocation": "2533:19:115", + "nameLocation": "2533:19:128", "parameters": { - "id": 70575, + "id": 71361, "nodeType": "ParameterList", "parameters": [], - "src": "2552:2:115" + "src": "2552:2:128" }, "returnParameters": { - "id": 70578, + "id": 71364, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70577, + "id": 71363, "mutability": "mutable", "name": "taskid", - "nameLocation": "2579:6:115", + "nameLocation": "2579:6:128", "nodeType": "VariableDeclaration", - "scope": 70707, - "src": "2571:14:115", + "scope": 71493, + "src": "2571:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8349,10 +8365,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70576, + "id": 71362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2571:7:115", + "src": "2571:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8361,22 +8377,22 @@ "visibility": "internal" } ], - "src": "2570:16:115" + "src": "2570:16:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 70811, + "id": 71597, "nodeType": "FunctionDefinition", - "src": "3241:706:115", + "src": "3241:706:128", "nodes": [], "body": { - "id": 70810, + "id": 71596, "nodeType": "Block", - "src": "3336:611:115", + "src": "3336:611:128", "nodes": [], "statements": [ { @@ -8387,18 +8403,18 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 70721, + "id": 71507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 70719, + "id": 71505, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3356:10:115", + "referencedDeclaration": 71495, + "src": "3356:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8408,21 +8424,21 @@ "operator": "<", "rightExpression": { "hexValue": "393939", - "id": 70720, + "id": 71506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3369:3:115", + "src": "3369:3:128", "typeDescriptions": { "typeIdentifier": "t_rational_999_by_1", "typeString": "int_const 999" }, "value": "999" }, - "src": "3356:16:115", + "src": "3356:16:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8437,33 +8453,33 @@ } ], "expression": { - "id": 70716, + "id": 71502, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3346:2:115", + "referencedDeclaration": 13541, + "src": "3346:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70718, + "id": 71504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3349:6:115", + "memberLocation": "3349:6:128", "memberName": "assume", "nodeType": "MemberAccess", - "referencedDeclaration": 23836, - "src": "3346:9:115", + "referencedDeclaration": 24587, + "src": "3346:9:128", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure external" } }, - "id": 70722, + "id": 71508, "isConstant": false, "isLValue": false, "isPure": false, @@ -8472,31 +8488,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3346:27:115", + "src": "3346:27:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70723, + "id": 71509, "nodeType": "ExpressionStatement", - "src": "3346:27:115" + "src": "3346:27:128" }, { "expression": { - "id": 70727, + "id": 71513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70724, + "id": 71510, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3383:4:115", + "referencedDeclaration": 71500, + "src": "3383:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8508,18 +8524,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 70725, + "id": 71511, "name": "testCreateCheckTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70707, - "src": "3390:19:115", + "referencedDeclaration": 71493, + "src": "3390:19:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$", "typeString": "function () returns (uint256)" } }, - "id": 70726, + "id": 71512, "isConstant": false, "isLValue": false, "isPure": false, @@ -8528,22 +8544,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3390:21:115", + "src": "3390:21:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3383:28:115", + "src": "3383:28:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70728, + "id": 71514, "nodeType": "ExpressionStatement", - "src": "3383:28:115" + "src": "3383:28:128" }, { "expression": { @@ -8553,7 +8569,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70735, + "id": 71521, "isConstant": false, "isLValue": false, "isPure": false, @@ -8561,12 +8577,12 @@ "leftExpression": { "arguments": [ { - "id": 70732, + "id": 71518, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3458:4:115", + "referencedDeclaration": 71500, + "src": "3458:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8581,33 +8597,33 @@ } ], "expression": { - "id": 70730, + "id": 71516, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3432:6:115", + "referencedDeclaration": 71044, + "src": "3432:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70731, + "id": 71517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3439:18:115", + "memberLocation": "3439:18:128", "memberName": "getRepPointsOfTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6873, - "src": "3432:25:115", + "referencedDeclaration": 7624, + "src": "3432:25:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 70733, + "id": 71519, "isConstant": false, "isLValue": false, "isPure": false, @@ -8616,7 +8632,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3432:31:115", + "src": "3432:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8627,21 +8643,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 70734, + "id": 71520, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3467:1:115", + "src": "3467:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "3432:36:115", + "src": "3432:36:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8649,14 +8665,14 @@ }, { "hexValue": "6e6f74207768617420697320736574", - "id": 70736, + "id": 71522, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3470:17:115", + "src": "3470:17:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_883c1a66852d15a198370a6ad53d446b2db290c6c2a3a4dd4cd91df1d06b90b1", "typeString": "literal_string \"not what is set\"" @@ -8675,21 +8691,21 @@ "typeString": "literal_string \"not what is set\"" } ], - "id": 70729, + "id": 71515, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3421:10:115", + "referencedDeclaration": 11481, + "src": "3421:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70737, + "id": 71523, "isConstant": false, "isLValue": false, "isPure": false, @@ -8698,16 +8714,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3421:67:115", + "src": "3421:67:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70738, + "id": 71524, "nodeType": "ExpressionStatement", - "src": "3421:67:115" + "src": "3421:67:128" }, { "expression": { @@ -8715,33 +8731,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70739, + "id": 71525, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3499:2:115", + "referencedDeclaration": 13541, + "src": "3499:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70741, + "id": 71527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3502:12:115", + "memberLocation": "3502:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3499:15:115", + "referencedDeclaration": 24784, + "src": "3499:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70742, + "id": 71528, "isConstant": false, "isLValue": false, "isPure": false, @@ -8750,39 +8766,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3499:17:115", + "src": "3499:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70743, + "id": 71529, "nodeType": "ExpressionStatement", - "src": "3499:17:115" + "src": "3499:17:128" }, { "expression": { "arguments": [ { - "id": 70747, + "id": 71533, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3550:4:115", + "referencedDeclaration": 71500, + "src": "3550:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 70748, + "id": 71534, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3556:10:115", + "referencedDeclaration": 71495, + "src": "3556:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8801,33 +8817,33 @@ } ], "expression": { - "id": 70744, + "id": 71530, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3526:6:115", + "referencedDeclaration": 71044, + "src": "3526:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70746, + "id": 71532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3533:16:115", + "memberLocation": "3533:16:128", "memberName": "setWeightForTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6843, - "src": "3526:23:115", + "referencedDeclaration": 7594, + "src": "3526:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$returns$__$", "typeString": "function (uint256,uint16) external" } }, - "id": 70749, + "id": 71535, "isConstant": false, "isLValue": false, "isPure": false, @@ -8836,16 +8852,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3526:41:115", + "src": "3526:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70750, + "id": 71536, "nodeType": "ExpressionStatement", - "src": "3526:41:115" + "src": "3526:41:128" }, { "expression": { @@ -8853,33 +8869,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70751, + "id": 71537, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3578:2:115", + "referencedDeclaration": 13541, + "src": "3578:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70753, + "id": 71539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3581:12:115", + "memberLocation": "3581:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3578:15:115", + "referencedDeclaration": 24784, + "src": "3578:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70754, + "id": 71540, "isConstant": false, "isLValue": false, "isPure": false, @@ -8888,39 +8904,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3578:17:115", + "src": "3578:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70755, + "id": 71541, "nodeType": "ExpressionStatement", - "src": "3578:17:115" + "src": "3578:17:128" }, { "expression": { "arguments": [ { - "id": 70759, + "id": 71545, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3629:4:115", + "referencedDeclaration": 71500, + "src": "3629:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 70760, + "id": 71546, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3635:10:115", + "referencedDeclaration": 71495, + "src": "3635:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8939,33 +8955,33 @@ } ], "expression": { - "id": 70756, + "id": 71542, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3605:6:115", + "referencedDeclaration": 71044, + "src": "3605:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70758, + "id": 71544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3612:16:115", + "memberLocation": "3612:16:128", "memberName": "setWeightForTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6843, - "src": "3605:23:115", + "referencedDeclaration": 7594, + "src": "3605:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$returns$__$", "typeString": "function (uint256,uint16) external" } }, - "id": 70761, + "id": 71547, "isConstant": false, "isLValue": false, "isPure": false, @@ -8974,16 +8990,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3605:41:115", + "src": "3605:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70762, + "id": 71548, "nodeType": "ExpressionStatement", - "src": "3605:41:115" + "src": "3605:41:128" }, { "expression": { @@ -8991,33 +9007,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70763, + "id": 71549, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3657:2:115", + "referencedDeclaration": 13541, + "src": "3657:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70765, + "id": 71551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3660:12:115", + "memberLocation": "3660:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "3657:15:115", + "referencedDeclaration": 24784, + "src": "3657:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70766, + "id": 71552, "isConstant": false, "isLValue": false, "isPure": false, @@ -9026,27 +9042,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3657:17:115", + "src": "3657:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70767, + "id": 71553, "nodeType": "ExpressionStatement", - "src": "3657:17:115" + "src": "3657:17:128" }, { "expression": { "arguments": [ { - "id": 70771, + "id": 71557, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3693:2:115", + "referencedDeclaration": 70589, + "src": "3693:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9061,33 +9077,33 @@ } ], "expression": { - "id": 70768, + "id": 71554, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3684:2:115", + "referencedDeclaration": 13541, + "src": "3684:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70770, + "id": 71556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3687:5:115", + "memberLocation": "3687:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3684:8:115", + "referencedDeclaration": 24720, + "src": "3684:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70772, + "id": 71558, "isConstant": false, "isLValue": false, "isPure": false, @@ -9096,39 +9112,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3684:12:115", + "src": "3684:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70773, + "id": 71559, "nodeType": "ExpressionStatement", - "src": "3684:12:115" + "src": "3684:12:128" }, { "expression": { "arguments": [ { - "id": 70777, + "id": 71563, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3730:4:115", + "referencedDeclaration": 71500, + "src": "3730:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 70778, + "id": 71564, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3736:10:115", + "referencedDeclaration": 71495, + "src": "3736:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9147,33 +9163,33 @@ } ], "expression": { - "id": 70774, + "id": 71560, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3706:6:115", + "referencedDeclaration": 71044, + "src": "3706:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70776, + "id": 71562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3713:16:115", + "memberLocation": "3713:16:128", "memberName": "setWeightForTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6843, - "src": "3706:23:115", + "referencedDeclaration": 7594, + "src": "3706:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$returns$__$", "typeString": "function (uint256,uint16) external" } }, - "id": 70779, + "id": 71565, "isConstant": false, "isLValue": false, "isPure": false, @@ -9182,27 +9198,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3706:41:115", + "src": "3706:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70780, + "id": 71566, "nodeType": "ExpressionStatement", - "src": "3706:41:115" + "src": "3706:41:128" }, { "expression": { "arguments": [ { - "id": 70784, + "id": 71570, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "3767:2:115", + "referencedDeclaration": 70587, + "src": "3767:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9217,33 +9233,33 @@ } ], "expression": { - "id": 70781, + "id": 71567, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3758:2:115", + "referencedDeclaration": 13541, + "src": "3758:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70783, + "id": 71569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3761:5:115", + "memberLocation": "3761:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3758:8:115", + "referencedDeclaration": 24720, + "src": "3758:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70785, + "id": 71571, "isConstant": false, "isLValue": false, "isPure": false, @@ -9252,39 +9268,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3758:12:115", + "src": "3758:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70786, + "id": 71572, "nodeType": "ExpressionStatement", - "src": "3758:12:115" + "src": "3758:12:128" }, { "expression": { "arguments": [ { - "id": 70790, + "id": 71576, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3804:4:115", + "referencedDeclaration": 71500, + "src": "3804:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 70791, + "id": 71577, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3810:10:115", + "referencedDeclaration": 71495, + "src": "3810:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9303,33 +9319,33 @@ } ], "expression": { - "id": 70787, + "id": 71573, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3780:6:115", + "referencedDeclaration": 71044, + "src": "3780:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70789, + "id": 71575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3787:16:115", + "memberLocation": "3787:16:128", "memberName": "setWeightForTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6843, - "src": "3780:23:115", + "referencedDeclaration": 7594, + "src": "3780:23:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$returns$__$", "typeString": "function (uint256,uint16) external" } }, - "id": 70792, + "id": 71578, "isConstant": false, "isLValue": false, "isPure": false, @@ -9338,16 +9354,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3780:41:115", + "src": "3780:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70793, + "id": 71579, "nodeType": "ExpressionStatement", - "src": "3780:41:115" + "src": "3780:41:128" }, { "expression": { @@ -9357,7 +9373,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70800, + "id": 71586, "isConstant": false, "isLValue": false, "isPure": false, @@ -9365,12 +9381,12 @@ "leftExpression": { "arguments": [ { - "id": 70797, + "id": 71583, "name": "task", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70714, - "src": "3869:4:115", + "referencedDeclaration": 71500, + "src": "3869:4:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9385,33 +9401,33 @@ } ], "expression": { - "id": 70795, + "id": 71581, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "3843:6:115", + "referencedDeclaration": 71044, + "src": "3843:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70796, + "id": 71582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3850:18:115", + "memberLocation": "3850:18:128", "memberName": "getRepPointsOfTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6873, - "src": "3843:25:115", + "referencedDeclaration": 7624, + "src": "3843:25:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 70798, + "id": 71584, "isConstant": false, "isLValue": false, "isPure": false, @@ -9420,7 +9436,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3843:31:115", + "src": "3843:31:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -9430,18 +9446,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 70799, + "id": 71585, "name": "pointsTime", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70709, - "src": "3878:10:115", + "referencedDeclaration": 71495, + "src": "3878:10:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "3843:45:115", + "src": "3843:45:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9449,14 +9465,14 @@ }, { "hexValue": "6e6f74207768617420697320736574", - "id": 70801, + "id": 71587, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3890:17:115", + "src": "3890:17:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_883c1a66852d15a198370a6ad53d446b2db290c6c2a3a4dd4cd91df1d06b90b1", "typeString": "literal_string \"not what is set\"" @@ -9475,21 +9491,21 @@ "typeString": "literal_string \"not what is set\"" } ], - "id": 70794, + "id": 71580, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3832:10:115", + "referencedDeclaration": 11481, + "src": "3832:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70802, + "id": 71588, "isConstant": false, "isLValue": false, "isPure": false, @@ -9498,31 +9514,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3832:76:115", + "src": "3832:76:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70803, + "id": 71589, "nodeType": "ExpressionStatement", - "src": "3832:76:115" + "src": "3832:76:128" }, { "expression": { - "id": 70808, + "id": 71594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 70804, + "id": 71590, "name": "snap1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70712, - "src": "3919:5:115", + "referencedDeclaration": 71498, + "src": "3919:5:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9535,33 +9551,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70805, + "id": 71591, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3927:2:115", + "referencedDeclaration": 13541, + "src": "3927:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70806, + "id": 71592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3930:8:115", + "memberLocation": "3930:8:128", "memberName": "snapshot", "nodeType": "MemberAccess", - "referencedDeclaration": 24216, - "src": "3927:11:115", + "referencedDeclaration": 24967, + "src": "3927:11:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 70807, + "id": 71593, "isConstant": false, "isLValue": false, "isPure": false, @@ -9570,22 +9586,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3927:13:115", + "src": "3927:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3919:21:115", + "src": "3919:21:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 70809, + "id": 71595, "nodeType": "ExpressionStatement", - "src": "3919:21:115" + "src": "3919:21:128" } ] }, @@ -9594,20 +9610,20 @@ "kind": "function", "modifiers": [], "name": "testSetsWeightForTask", - "nameLocation": "3250:21:115", + "nameLocation": "3250:21:128", "parameters": { - "id": 70710, + "id": 71496, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70709, + "id": 71495, "mutability": "mutable", "name": "pointsTime", - "nameLocation": "3279:10:115", + "nameLocation": "3279:10:128", "nodeType": "VariableDeclaration", - "scope": 70811, - "src": "3272:17:115", + "scope": 71597, + "src": "3272:17:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9615,10 +9631,10 @@ "typeString": "uint16" }, "typeName": { - "id": 70708, + "id": 71494, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "3272:6:115", + "src": "3272:6:128", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9627,21 +9643,21 @@ "visibility": "internal" } ], - "src": "3271:19:115" + "src": "3271:19:128" }, "returnParameters": { - "id": 70715, + "id": 71501, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 70712, + "id": 71498, "mutability": "mutable", "name": "snap1", - "nameLocation": "3315:5:115", + "nameLocation": "3315:5:128", "nodeType": "VariableDeclaration", - "scope": 70811, - "src": "3307:13:115", + "scope": 71597, + "src": "3307:13:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9649,10 +9665,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70711, + "id": 71497, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3307:7:115", + "src": "3307:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9662,13 +9678,13 @@ }, { "constant": false, - "id": 70714, + "id": 71500, "mutability": "mutable", "name": "task", - "nameLocation": "3330:4:115", + "nameLocation": "3330:4:128", "nodeType": "VariableDeclaration", - "scope": 70811, - "src": "3322:12:115", + "scope": 71597, + "src": "3322:12:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9676,10 +9692,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70713, + "id": 71499, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3322:7:115", + "src": "3322:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9688,39 +9704,39 @@ "visibility": "internal" } ], - "src": "3306:29:115" + "src": "3306:29:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 70937, + "id": 71723, "nodeType": "FunctionDefinition", - "src": "3953:785:115", + "src": "3953:785:128", "nodes": [], "body": { - "id": 70936, + "id": 71722, "nodeType": "Block", - "src": "3994:744:115", + "src": "3994:744:128", "nodes": [], "statements": [ { "assignments": [ - 70815, - 70817 + 71601, + 71603 ], "declarations": [ { "constant": false, - "id": 70815, + "id": 71601, "mutability": "mutable", "name": "taskid", - "nameLocation": "4013:6:115", + "nameLocation": "4013:6:128", "nodeType": "VariableDeclaration", - "scope": 70936, - "src": "4005:14:115", + "scope": 71722, + "src": "4005:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9728,10 +9744,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70814, + "id": 71600, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4005:7:115", + "src": "4005:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9741,13 +9757,13 @@ }, { "constant": false, - "id": 70817, + "id": 71603, "mutability": "mutable", "name": "snap", - "nameLocation": "4029:4:115", + "nameLocation": "4029:4:128", "nodeType": "VariableDeclaration", - "scope": 70936, - "src": "4021:12:115", + "scope": 71722, + "src": "4021:12:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9755,10 +9771,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70816, + "id": 71602, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4021:7:115", + "src": "4021:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9767,19 +9783,19 @@ "visibility": "internal" } ], - "id": 70821, + "id": 71607, "initialValue": { "arguments": [ { "hexValue": "333036", - "id": 70819, + "id": 71605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4059:3:115", + "src": "4059:3:128", "typeDescriptions": { "typeIdentifier": "t_rational_306_by_1", "typeString": "int_const 306" @@ -9794,18 +9810,18 @@ "typeString": "int_const 306" } ], - "id": 70818, + "id": 71604, "name": "testSetsWeightForTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70811, - "src": "4037:21:115", + "referencedDeclaration": 71597, + "src": "4037:21:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (uint16) returns (uint256,uint256)" } }, - "id": 70820, + "id": 71606, "isConstant": false, "isLValue": false, "isPure": false, @@ -9814,7 +9830,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4037:26:115", + "src": "4037:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -9822,7 +9838,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4004:59:115" + "src": "4004:59:128" }, { "expression": { @@ -9831,14 +9847,14 @@ "arguments": [ { "hexValue": "3433353637333432353638373938353634", - "id": 70827, + "id": 71613, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4091:17:115", + "src": "4091:17:128", "typeDescriptions": { "typeIdentifier": "t_rational_43567342568798564_by_1", "typeString": "int_const 43567342568798564" @@ -9853,26 +9869,26 @@ "typeString": "int_const 43567342568798564" } ], - "id": 70826, + "id": 71612, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4083:7:115", + "src": "4083:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70825, + "id": 71611, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4083:7:115", + "src": "4083:7:128", "typeDescriptions": {} } }, - "id": 70828, + "id": 71614, "isConstant": false, "isLValue": false, "isPure": true, @@ -9881,7 +9897,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4083:26:115", + "src": "4083:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -9897,33 +9913,33 @@ } ], "expression": { - "id": 70822, + "id": 71608, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4074:2:115", + "referencedDeclaration": 13541, + "src": "4074:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70824, + "id": 71610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4077:5:115", + "memberLocation": "4077:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4074:8:115", + "referencedDeclaration": 24720, + "src": "4074:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70829, + "id": 71615, "isConstant": false, "isLValue": false, "isPure": false, @@ -9932,31 +9948,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4074:36:115", + "src": "4074:36:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70830, + "id": 71616, "nodeType": "ExpressionStatement", - "src": "4074:36:115" + "src": "4074:36:128" }, { "assignments": [ - 70833 + 71619 ], "declarations": [ { "constant": false, - "id": 70833, + "id": 71619, "mutability": "mutable", "name": "IA20", - "nameLocation": "4143:4:115", + "nameLocation": "4143:4:128", "nodeType": "VariableDeclaration", - "scope": 70936, - "src": "4120:27:115", + "scope": 71722, + "src": "4120:27:128", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9964,20 +9980,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 70832, + "id": 71618, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70831, + "id": 71617, "name": "individualState", "nameLocations": [ - "4120:15:115" + "4120:15:128" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "4120:15:115" + "src": "4120:15:128" }, "referencedDeclaration": 1238, - "src": "4120:15:115", + "src": "4120:15:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -9986,16 +10002,16 @@ "visibility": "internal" } ], - "id": 70842, + "id": 71628, "initialValue": { "arguments": [ { - "id": 70836, + "id": 71622, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4173:2:115", + "referencedDeclaration": 70591, + "src": "4173:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10004,14 +10020,14 @@ { "arguments": [ { - "id": 70839, + "id": 71625, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "4185:4:115", + "referencedDeclaration": 70573, + "src": "4185:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -10019,30 +10035,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70838, + "id": 71624, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4177:7:115", + "src": "4177:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70837, + "id": 71623, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4177:7:115", + "src": "4177:7:128", "typeDescriptions": {} } }, - "id": 70840, + "id": 71626, "isConstant": false, "isLValue": false, "isPure": false, @@ -10051,7 +10067,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4177:13:115", + "src": "4177:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10071,33 +10087,33 @@ } ], "expression": { - "id": 70834, + "id": 71620, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4150:3:115", + "referencedDeclaration": 70567, + "src": "4150:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 70835, + "id": 71621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4154:18:115", + "memberLocation": "4154:18:128", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4150:22:115", + "src": "4150:22:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 70841, + "id": 71627, "isConstant": false, "isLValue": false, "isPure": false, @@ -10106,7 +10122,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4150:41:115", + "src": "4150:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -10114,18 +10130,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4120:71:115" + "src": "4120:71:128" }, { "expression": { "arguments": [ { - "id": 70846, + "id": 71632, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4211:2:115", + "referencedDeclaration": 70591, + "src": "4211:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10140,33 +10156,33 @@ } ], "expression": { - "id": 70843, + "id": 71629, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4202:2:115", + "referencedDeclaration": 13541, + "src": "4202:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70845, + "id": 71631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4205:5:115", + "memberLocation": "4205:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4202:8:115", + "referencedDeclaration": 24720, + "src": "4202:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70847, + "id": 71633, "isConstant": false, "isLValue": false, "isPure": false, @@ -10175,16 +10191,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4202:12:115", + "src": "4202:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70848, + "id": 71634, "nodeType": "ExpressionStatement", - "src": "4202:12:115" + "src": "4202:12:128" }, { "expression": { @@ -10192,33 +10208,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70849, + "id": 71635, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4224:2:115", + "referencedDeclaration": 13541, + "src": "4224:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70851, + "id": 71637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4227:12:115", + "memberLocation": "4227:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "4224:15:115", + "referencedDeclaration": 24784, + "src": "4224:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70852, + "id": 71638, "isConstant": false, "isLValue": false, "isPure": false, @@ -10227,27 +10243,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4224:17:115", + "src": "4224:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70853, + "id": 71639, "nodeType": "ExpressionStatement", - "src": "4224:17:115" + "src": "4224:17:128" }, { "expression": { "arguments": [ { - "id": 70857, + "id": 71643, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70815, - "src": "4265:6:115", + "referencedDeclaration": 71601, + "src": "4265:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10255,14 +10271,14 @@ }, { "hexValue": "75726c75726c32", - "id": 70858, + "id": 71644, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4273:9:115", + "src": "4273:9:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9e8cbd08cb12f81e0b0cfdab32102be9252cca6977f5629d95349ea3dad2dd0", "typeString": "literal_string \"urlurl2\"" @@ -10282,33 +10298,33 @@ } ], "expression": { - "id": 70854, + "id": 71640, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "4251:6:115", + "referencedDeclaration": 71044, + "src": "4251:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70856, + "id": 71642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4258:6:115", + "memberLocation": "4258:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "4251:13:115", + "referencedDeclaration": 10529, + "src": "4251:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70859, + "id": 71645, "isConstant": false, "isLValue": false, "isPure": false, @@ -10317,30 +10333,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4251:32:115", + "src": "4251:32:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70860, + "id": 71646, "nodeType": "ExpressionStatement", - "src": "4251:32:115" + "src": "4251:32:128" }, { "expression": { "arguments": [ { "hexValue": "31303032", - "id": 70864, + "id": 71650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4302:4:115", + "src": "4302:4:128", "typeDescriptions": { "typeIdentifier": "t_rational_1002_by_1", "typeString": "int_const 1002" @@ -10356,33 +10372,33 @@ } ], "expression": { - "id": 70861, + "id": 71647, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4294:2:115", + "referencedDeclaration": 13541, + "src": "4294:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70863, + "id": 71649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4297:4:115", + "memberLocation": "4297:4:128", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "4294:7:115", + "referencedDeclaration": 24657, + "src": "4294:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 70865, + "id": 71651, "isConstant": false, "isLValue": false, "isPure": false, @@ -10391,27 +10407,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4294:13:115", + "src": "4294:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70866, + "id": 71652, "nodeType": "ExpressionStatement", - "src": "4294:13:115" + "src": "4294:13:128" }, { "expression": { "arguments": [ { - "id": 70870, + "id": 71656, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4327:2:115", + "referencedDeclaration": 70591, + "src": "4327:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10426,33 +10442,33 @@ } ], "expression": { - "id": 70867, + "id": 71653, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4318:2:115", + "referencedDeclaration": 13541, + "src": "4318:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70869, + "id": 71655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4321:5:115", + "memberLocation": "4321:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4318:8:115", + "referencedDeclaration": 24720, + "src": "4318:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70871, + "id": 71657, "isConstant": false, "isLValue": false, "isPure": false, @@ -10461,27 +10477,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4318:12:115", + "src": "4318:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70872, + "id": 71658, "nodeType": "ExpressionStatement", - "src": "4318:12:115" + "src": "4318:12:128" }, { "expression": { "arguments": [ { - "id": 70876, + "id": 71662, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70815, - "src": "4354:6:115", + "referencedDeclaration": 71601, + "src": "4354:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10489,14 +10505,14 @@ }, { "hexValue": "75726c75726c32", - "id": 70877, + "id": 71663, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4362:9:115", + "src": "4362:9:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9e8cbd08cb12f81e0b0cfdab32102be9252cca6977f5629d95349ea3dad2dd0", "typeString": "literal_string \"urlurl2\"" @@ -10516,33 +10532,33 @@ } ], "expression": { - "id": 70873, + "id": 71659, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "4340:6:115", + "referencedDeclaration": 71044, + "src": "4340:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70875, + "id": 71661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4347:6:115", + "memberLocation": "4347:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "4340:13:115", + "referencedDeclaration": 10529, + "src": "4340:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70878, + "id": 71664, "isConstant": false, "isLValue": false, "isPure": false, @@ -10551,27 +10567,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4340:32:115", + "src": "4340:32:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70879, + "id": 71665, "nodeType": "ExpressionStatement", - "src": "4340:32:115" + "src": "4340:32:128" }, { "expression": { "arguments": [ { - "id": 70883, + "id": 71669, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "4392:2:115", + "referencedDeclaration": 70587, + "src": "4392:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10586,33 +10602,33 @@ } ], "expression": { - "id": 70880, + "id": 71666, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4383:2:115", + "referencedDeclaration": 13541, + "src": "4383:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70882, + "id": 71668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4386:5:115", + "memberLocation": "4386:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4383:8:115", + "referencedDeclaration": 24720, + "src": "4383:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70884, + "id": 71670, "isConstant": false, "isLValue": false, "isPure": false, @@ -10621,39 +10637,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4383:12:115", + "src": "4383:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70885, + "id": 71671, "nodeType": "ExpressionStatement", - "src": "4383:12:115" + "src": "4383:12:128" }, { "expression": { "arguments": [ { - "id": 70889, + "id": 71675, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70815, - "src": "4424:6:115", + "referencedDeclaration": 71601, + "src": "4424:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 70890, + "id": 71676, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4432:2:115", + "referencedDeclaration": 70591, + "src": "4432:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10672,33 +10688,33 @@ } ], "expression": { - "id": 70886, + "id": 71672, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "4405:6:115", + "referencedDeclaration": 71044, + "src": "4405:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70888, + "id": 71674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4412:11:115", + "memberLocation": "4412:11:128", "memberName": "finalizeFor", "nodeType": "MemberAccess", - "referencedDeclaration": 6776, - "src": "4405:18:115", + "referencedDeclaration": 7527, + "src": "4405:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address) external" } }, - "id": 70891, + "id": 71677, "isConstant": false, "isLValue": false, "isPure": false, @@ -10707,31 +10723,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4405:30:115", + "src": "4405:30:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70892, + "id": 71678, "nodeType": "ExpressionStatement", - "src": "4405:30:115" + "src": "4405:30:128" }, { "assignments": [ - 70895 + 71681 ], "declarations": [ { "constant": false, - "id": 70895, + "id": 71681, "mutability": "mutable", "name": "IA21", - "nameLocation": "4468:4:115", + "nameLocation": "4468:4:128", "nodeType": "VariableDeclaration", - "scope": 70936, - "src": "4445:27:115", + "scope": 71722, + "src": "4445:27:128", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -10739,20 +10755,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 70894, + "id": 71680, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70893, + "id": 71679, "name": "individualState", "nameLocations": [ - "4445:15:115" + "4445:15:128" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "4445:15:115" + "src": "4445:15:128" }, "referencedDeclaration": 1238, - "src": "4445:15:115", + "src": "4445:15:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -10761,16 +10777,16 @@ "visibility": "internal" } ], - "id": 70904, + "id": 71690, "initialValue": { "arguments": [ { - "id": 70898, + "id": 71684, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4498:2:115", + "referencedDeclaration": 70591, + "src": "4498:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10779,14 +10795,14 @@ { "arguments": [ { - "id": 70901, + "id": 71687, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "4510:4:115", + "referencedDeclaration": 70573, + "src": "4510:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -10794,30 +10810,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70900, + "id": 71686, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4502:7:115", + "src": "4502:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70899, + "id": 71685, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4502:7:115", + "src": "4502:7:128", "typeDescriptions": {} } }, - "id": 70902, + "id": 71688, "isConstant": false, "isLValue": false, "isPure": false, @@ -10826,7 +10842,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4502:13:115", + "src": "4502:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10846,33 +10862,33 @@ } ], "expression": { - "id": 70896, + "id": 71682, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4475:3:115", + "referencedDeclaration": 70567, + "src": "4475:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 70897, + "id": 71683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4479:18:115", + "memberLocation": "4479:18:128", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4475:22:115", + "src": "4475:22:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 70903, + "id": 71689, "isConstant": false, "isLValue": false, "isPure": false, @@ -10881,7 +10897,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4475:41:115", + "src": "4475:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -10889,7 +10905,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4445:71:115" + "src": "4445:71:128" }, { "expression": { @@ -10899,34 +10915,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 70909, + "id": 71695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70906, + "id": 71692, "name": "IA21", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70895, - "src": "4538:4:115", + "referencedDeclaration": 71681, + "src": "4538:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 70907, + "id": 71693, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4543:2:115", + "memberLocation": "4543:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4538:7:115", + "src": "4538:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -10936,21 +10952,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 70908, + "id": 71694, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4548:1:115", + "src": "4548:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4538:11:115", + "src": "4538:11:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10958,14 +10974,14 @@ }, { "hexValue": "64656661756c74207374617465", - "id": 70910, + "id": 71696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4551:15:115", + "src": "4551:15:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_95d3aa86ad192e5573c6c371cb25aa39d0be4b2b736cfd411ba8862b3fed3345", "typeString": "literal_string \"default state\"" @@ -10984,21 +11000,21 @@ "typeString": "literal_string \"default state\"" } ], - "id": 70905, + "id": 71691, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "4527:10:115", + "referencedDeclaration": 11481, + "src": "4527:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70911, + "id": 71697, "isConstant": false, "isLValue": false, "isPure": false, @@ -11007,16 +11023,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4527:40:115", + "src": "4527:40:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70912, + "id": 71698, "nodeType": "ExpressionStatement", - "src": "4527:40:115" + "src": "4527:40:128" }, { "expression": { @@ -11026,34 +11042,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 70917, + "id": 71703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70914, + "id": 71700, "name": "IA20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70833, - "src": "4588:4:115", + "referencedDeclaration": 71619, + "src": "4588:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 70915, + "id": 71701, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4593:2:115", + "memberLocation": "4593:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4588:7:115", + "src": "4588:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -11063,21 +11079,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 70916, + "id": 71702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4599:1:115", + "src": "4599:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4588:12:115", + "src": "4588:12:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11085,14 +11101,14 @@ }, { "hexValue": "68617320756e657870656374656420636f6e74726962", - "id": 70918, + "id": 71704, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4602:24:115", + "src": "4602:24:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ef69e184c28f0d3e0e8b1fddf5ff2fc9333ac28313543c8df848e0815d2fdf53", "typeString": "literal_string \"has unexpected contrib\"" @@ -11111,21 +11127,21 @@ "typeString": "literal_string \"has unexpected contrib\"" } ], - "id": 70913, + "id": 71699, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "4577:10:115", + "referencedDeclaration": 11481, + "src": "4577:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70919, + "id": 71705, "isConstant": false, "isLValue": false, "isPure": false, @@ -11134,16 +11150,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4577:50:115", + "src": "4577:50:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70920, + "id": 71706, "nodeType": "ExpressionStatement", - "src": "4577:50:115" + "src": "4577:50:128" }, { "expression": { @@ -11153,7 +11169,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70932, + "id": 71718, "isConstant": false, "isLValue": false, "isPure": false, @@ -11165,34 +11181,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 70928, + "id": 71714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 70922, + "id": 71708, "name": "IA20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70833, - "src": "4649:4:115", + "referencedDeclaration": 71619, + "src": "4649:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 70923, + "id": 71709, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4654:2:115", + "memberLocation": "4654:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4649:7:115", + "src": "4649:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -11203,12 +11219,12 @@ "rightExpression": { "arguments": [ { - "id": 70926, + "id": 71712, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70815, - "src": "4685:6:115", + "referencedDeclaration": 71601, + "src": "4685:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11223,33 +11239,33 @@ } ], "expression": { - "id": 70924, + "id": 71710, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "4659:6:115", + "referencedDeclaration": 71044, + "src": "4659:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70925, + "id": 71711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4666:18:115", + "memberLocation": "4666:18:128", "memberName": "getRepPointsOfTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6873, - "src": "4659:25:115", + "referencedDeclaration": 7624, + "src": "4659:25:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 70927, + "id": 71713, "isConstant": false, "isLValue": false, "isPure": false, @@ -11258,28 +11274,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4659:33:115", + "src": "4659:33:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4649:43:115", + "src": "4649:43:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 70929, + "id": 71715, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4648:45:115", + "src": "4648:45:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11289,33 +11305,33 @@ "operator": "==", "rightExpression": { "expression": { - "id": 70930, + "id": 71716, "name": "IA21", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70895, - "src": "4697:4:115", + "referencedDeclaration": 71681, + "src": "4697:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 70931, + "id": 71717, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4702:2:115", + "memberLocation": "4702:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4697:7:115", + "src": "4697:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "4648:56:115", + "src": "4648:56:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11323,14 +11339,14 @@ }, { "hexValue": "636f6e74726962206e6f742072656769737465726564", - "id": 70933, + "id": 71719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4706:24:115", + "src": "4706:24:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c9ef25905d60f256c9fb053afa88a38ff8dcdbfa64a772df201914a2e8330ad7", "typeString": "literal_string \"contrib not registered\"" @@ -11349,21 +11365,21 @@ "typeString": "literal_string \"contrib not registered\"" } ], - "id": 70921, + "id": 71707, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "4637:10:115", + "referencedDeclaration": 11481, + "src": "4637:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 70934, + "id": 71720, "isConstant": false, "isLValue": false, "isPure": false, @@ -11372,16 +11388,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4637:94:115", + "src": "4637:94:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70935, + "id": 71721, "nodeType": "ExpressionStatement", - "src": "4637:94:115" + "src": "4637:94:128" } ] }, @@ -11390,50 +11406,50 @@ "kind": "function", "modifiers": [], "name": "testWorksAsRepProvider", - "nameLocation": "3962:22:115", + "nameLocation": "3962:22:128", "parameters": { - "id": 70812, + "id": 71598, "nodeType": "ParameterList", "parameters": [], - "src": "3984:2:115" + "src": "3984:2:128" }, "returnParameters": { - "id": 70813, + "id": 71599, "nodeType": "ParameterList", "parameters": [], - "src": "3994:0:115" + "src": "3994:0:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71063, + "id": 71849, "nodeType": "FunctionDefinition", - "src": "4744:772:115", + "src": "4744:772:128", "nodes": [], "body": { - "id": 71062, + "id": 71848, "nodeType": "Block", - "src": "4772:744:115", + "src": "4772:744:128", "nodes": [], "statements": [ { "assignments": [ - 70941, - 70943 + 71727, + 71729 ], "declarations": [ { "constant": false, - "id": 70941, + "id": 71727, "mutability": "mutable", "name": "taskid", - "nameLocation": "4791:6:115", + "nameLocation": "4791:6:128", "nodeType": "VariableDeclaration", - "scope": 71062, - "src": "4783:14:115", + "scope": 71848, + "src": "4783:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11441,10 +11457,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70940, + "id": 71726, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4783:7:115", + "src": "4783:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11454,13 +11470,13 @@ }, { "constant": false, - "id": 70943, + "id": 71729, "mutability": "mutable", "name": "snap", - "nameLocation": "4807:4:115", + "nameLocation": "4807:4:128", "nodeType": "VariableDeclaration", - "scope": 71062, - "src": "4799:12:115", + "scope": 71848, + "src": "4799:12:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11468,10 +11484,10 @@ "typeString": "uint256" }, "typeName": { - "id": 70942, + "id": 71728, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4799:7:115", + "src": "4799:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11480,19 +11496,19 @@ "visibility": "internal" } ], - "id": 70947, + "id": 71733, "initialValue": { "arguments": [ { "hexValue": "333036", - "id": 70945, + "id": 71731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4837:3:115", + "src": "4837:3:128", "typeDescriptions": { "typeIdentifier": "t_rational_306_by_1", "typeString": "int_const 306" @@ -11507,18 +11523,18 @@ "typeString": "int_const 306" } ], - "id": 70944, + "id": 71730, "name": "testSetsWeightForTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70811, - "src": "4815:21:115", + "referencedDeclaration": 71597, + "src": "4815:21:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (uint16) returns (uint256,uint256)" } }, - "id": 70946, + "id": 71732, "isConstant": false, "isLValue": false, "isPure": false, @@ -11527,7 +11543,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4815:26:115", + "src": "4815:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -11535,7 +11551,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:59:115" + "src": "4782:59:128" }, { "expression": { @@ -11544,14 +11560,14 @@ "arguments": [ { "hexValue": "3433353637333432353638373938353634", - "id": 70953, + "id": 71739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4869:17:115", + "src": "4869:17:128", "typeDescriptions": { "typeIdentifier": "t_rational_43567342568798564_by_1", "typeString": "int_const 43567342568798564" @@ -11566,26 +11582,26 @@ "typeString": "int_const 43567342568798564" } ], - "id": 70952, + "id": 71738, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4861:7:115", + "src": "4861:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70951, + "id": 71737, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4861:7:115", + "src": "4861:7:128", "typeDescriptions": {} } }, - "id": 70954, + "id": 71740, "isConstant": false, "isLValue": false, "isPure": true, @@ -11594,7 +11610,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4861:26:115", + "src": "4861:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -11610,33 +11626,33 @@ } ], "expression": { - "id": 70948, + "id": 71734, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4852:2:115", + "referencedDeclaration": 13541, + "src": "4852:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70950, + "id": 71736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4855:5:115", + "memberLocation": "4855:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4852:8:115", + "referencedDeclaration": 24720, + "src": "4852:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70955, + "id": 71741, "isConstant": false, "isLValue": false, "isPure": false, @@ -11645,31 +11661,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4852:36:115", + "src": "4852:36:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70956, + "id": 71742, "nodeType": "ExpressionStatement", - "src": "4852:36:115" + "src": "4852:36:128" }, { "assignments": [ - 70959 + 71745 ], "declarations": [ { "constant": false, - "id": 70959, + "id": 71745, "mutability": "mutable", "name": "IA20", - "nameLocation": "4921:4:115", + "nameLocation": "4921:4:128", "nodeType": "VariableDeclaration", - "scope": 71062, - "src": "4898:27:115", + "scope": 71848, + "src": "4898:27:128", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -11677,20 +11693,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 70958, + "id": 71744, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 70957, + "id": 71743, "name": "individualState", "nameLocations": [ - "4898:15:115" + "4898:15:128" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "4898:15:115" + "src": "4898:15:128" }, "referencedDeclaration": 1238, - "src": "4898:15:115", + "src": "4898:15:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -11699,16 +11715,16 @@ "visibility": "internal" } ], - "id": 70968, + "id": 71754, "initialValue": { "arguments": [ { - "id": 70962, + "id": 71748, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4951:2:115", + "referencedDeclaration": 70591, + "src": "4951:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11717,14 +11733,14 @@ { "arguments": [ { - "id": 70965, + "id": 71751, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "4963:4:115", + "referencedDeclaration": 70573, + "src": "4963:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -11732,30 +11748,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 70964, + "id": 71750, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4955:7:115", + "src": "4955:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 70963, + "id": 71749, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4955:7:115", + "src": "4955:7:128", "typeDescriptions": {} } }, - "id": 70966, + "id": 71752, "isConstant": false, "isLValue": false, "isPure": false, @@ -11764,7 +11780,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4955:13:115", + "src": "4955:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -11784,33 +11800,33 @@ } ], "expression": { - "id": 70960, + "id": 71746, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4928:3:115", + "referencedDeclaration": 70567, + "src": "4928:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 70961, + "id": 71747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4932:18:115", + "memberLocation": "4932:18:128", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4928:22:115", + "src": "4928:22:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 70967, + "id": 71753, "isConstant": false, "isLValue": false, "isPure": false, @@ -11819,7 +11835,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4928:41:115", + "src": "4928:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -11827,18 +11843,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4898:71:115" + "src": "4898:71:128" }, { "expression": { "arguments": [ { - "id": 70972, + "id": 71758, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4989:2:115", + "referencedDeclaration": 70591, + "src": "4989:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11853,33 +11869,33 @@ } ], "expression": { - "id": 70969, + "id": 71755, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4980:2:115", + "referencedDeclaration": 13541, + "src": "4980:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70971, + "id": 71757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4983:5:115", + "memberLocation": "4983:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4980:8:115", + "referencedDeclaration": 24720, + "src": "4980:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70973, + "id": 71759, "isConstant": false, "isLValue": false, "isPure": false, @@ -11888,16 +11904,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4980:12:115", + "src": "4980:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70974, + "id": 71760, "nodeType": "ExpressionStatement", - "src": "4980:12:115" + "src": "4980:12:128" }, { "expression": { @@ -11905,33 +11921,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 70975, + "id": 71761, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5002:2:115", + "referencedDeclaration": 13541, + "src": "5002:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70977, + "id": 71763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5005:12:115", + "memberLocation": "5005:12:128", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "5002:15:115", + "referencedDeclaration": 24784, + "src": "5002:15:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 70978, + "id": 71764, "isConstant": false, "isLValue": false, "isPure": false, @@ -11940,27 +11956,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5002:17:115", + "src": "5002:17:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70979, + "id": 71765, "nodeType": "ExpressionStatement", - "src": "5002:17:115" + "src": "5002:17:128" }, { "expression": { "arguments": [ { - "id": 70983, + "id": 71769, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70941, - "src": "5043:6:115", + "referencedDeclaration": 71727, + "src": "5043:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11968,14 +11984,14 @@ }, { "hexValue": "75726c75726c32", - "id": 70984, + "id": 71770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5051:9:115", + "src": "5051:9:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9e8cbd08cb12f81e0b0cfdab32102be9252cca6977f5629d95349ea3dad2dd0", "typeString": "literal_string \"urlurl2\"" @@ -11995,33 +12011,33 @@ } ], "expression": { - "id": 70980, + "id": 71766, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "5029:6:115", + "referencedDeclaration": 71044, + "src": "5029:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 70982, + "id": 71768, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5036:6:115", + "memberLocation": "5036:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "5029:13:115", + "referencedDeclaration": 10529, + "src": "5029:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 70985, + "id": 71771, "isConstant": false, "isLValue": false, "isPure": false, @@ -12030,30 +12046,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5029:32:115", + "src": "5029:32:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70986, + "id": 71772, "nodeType": "ExpressionStatement", - "src": "5029:32:115" + "src": "5029:32:128" }, { "expression": { "arguments": [ { "hexValue": "31303032", - "id": 70990, + "id": 71776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5080:4:115", + "src": "5080:4:128", "typeDescriptions": { "typeIdentifier": "t_rational_1002_by_1", "typeString": "int_const 1002" @@ -12069,33 +12085,33 @@ } ], "expression": { - "id": 70987, + "id": 71773, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5072:2:115", + "referencedDeclaration": 13541, + "src": "5072:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70989, + "id": 71775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5075:4:115", + "memberLocation": "5075:4:128", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "5072:7:115", + "referencedDeclaration": 24657, + "src": "5072:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 70991, + "id": 71777, "isConstant": false, "isLValue": false, "isPure": false, @@ -12104,27 +12120,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5072:13:115", + "src": "5072:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70992, + "id": 71778, "nodeType": "ExpressionStatement", - "src": "5072:13:115" + "src": "5072:13:128" }, { "expression": { "arguments": [ { - "id": 70996, + "id": 71782, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "5105:2:115", + "referencedDeclaration": 70591, + "src": "5105:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12139,33 +12155,33 @@ } ], "expression": { - "id": 70993, + "id": 71779, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5096:2:115", + "referencedDeclaration": 13541, + "src": "5096:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 70995, + "id": 71781, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5099:5:115", + "memberLocation": "5099:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "5096:8:115", + "referencedDeclaration": 24720, + "src": "5096:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 70997, + "id": 71783, "isConstant": false, "isLValue": false, "isPure": false, @@ -12174,27 +12190,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5096:12:115", + "src": "5096:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 70998, + "id": 71784, "nodeType": "ExpressionStatement", - "src": "5096:12:115" + "src": "5096:12:128" }, { "expression": { "arguments": [ { - "id": 71002, + "id": 71788, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70941, - "src": "5132:6:115", + "referencedDeclaration": 71727, + "src": "5132:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12202,14 +12218,14 @@ }, { "hexValue": "75726c75726c32", - "id": 71003, + "id": 71789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5140:9:115", + "src": "5140:9:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9e8cbd08cb12f81e0b0cfdab32102be9252cca6977f5629d95349ea3dad2dd0", "typeString": "literal_string \"urlurl2\"" @@ -12229,33 +12245,33 @@ } ], "expression": { - "id": 70999, + "id": 71785, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "5118:6:115", + "referencedDeclaration": 71044, + "src": "5118:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 71001, + "id": 71787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5125:6:115", + "memberLocation": "5125:6:128", "memberName": "submit", "nodeType": "MemberAccess", - "referencedDeclaration": 9778, - "src": "5118:13:115", + "referencedDeclaration": 10529, + "src": "5118:13:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory) external" } }, - "id": 71004, + "id": 71790, "isConstant": false, "isLValue": false, "isPure": false, @@ -12264,27 +12280,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5118:32:115", + "src": "5118:32:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71005, + "id": 71791, "nodeType": "ExpressionStatement", - "src": "5118:32:115" + "src": "5118:32:128" }, { "expression": { "arguments": [ { - "id": 71009, + "id": 71795, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "5170:2:115", + "referencedDeclaration": 70587, + "src": "5170:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12299,33 +12315,33 @@ } ], "expression": { - "id": 71006, + "id": 71792, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5161:2:115", + "referencedDeclaration": 13541, + "src": "5161:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71008, + "id": 71794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5164:5:115", + "memberLocation": "5164:5:128", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "5161:8:115", + "referencedDeclaration": 24720, + "src": "5161:8:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71010, + "id": 71796, "isConstant": false, "isLValue": false, "isPure": false, @@ -12334,39 +12350,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5161:12:115", + "src": "5161:12:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71011, + "id": 71797, "nodeType": "ExpressionStatement", - "src": "5161:12:115" + "src": "5161:12:128" }, { "expression": { "arguments": [ { - "id": 71015, + "id": 71801, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70941, - "src": "5202:6:115", + "referencedDeclaration": 71727, + "src": "5202:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 71016, + "id": 71802, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "5210:2:115", + "referencedDeclaration": 70591, + "src": "5210:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12385,33 +12401,33 @@ } ], "expression": { - "id": 71012, + "id": 71798, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "5183:6:115", + "referencedDeclaration": 71044, + "src": "5183:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 71014, + "id": 71800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5190:11:115", + "memberLocation": "5190:11:128", "memberName": "finalizeFor", "nodeType": "MemberAccess", - "referencedDeclaration": 6776, - "src": "5183:18:115", + "referencedDeclaration": 7527, + "src": "5183:18:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address) external" } }, - "id": 71017, + "id": 71803, "isConstant": false, "isLValue": false, "isPure": false, @@ -12420,31 +12436,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5183:30:115", + "src": "5183:30:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71018, + "id": 71804, "nodeType": "ExpressionStatement", - "src": "5183:30:115" + "src": "5183:30:128" }, { "assignments": [ - 71021 + 71807 ], "declarations": [ { "constant": false, - "id": 71021, + "id": 71807, "mutability": "mutable", "name": "IA21", - "nameLocation": "5246:4:115", + "nameLocation": "5246:4:128", "nodeType": "VariableDeclaration", - "scope": 71062, - "src": "5223:27:115", + "scope": 71848, + "src": "5223:27:128", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12452,20 +12468,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 71020, + "id": 71806, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71019, + "id": 71805, "name": "individualState", "nameLocations": [ - "5223:15:115" + "5223:15:128" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "5223:15:115" + "src": "5223:15:128" }, "referencedDeclaration": 1238, - "src": "5223:15:115", + "src": "5223:15:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -12474,16 +12490,16 @@ "visibility": "internal" } ], - "id": 71030, + "id": 71816, "initialValue": { "arguments": [ { - "id": 71024, + "id": 71810, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "5276:2:115", + "referencedDeclaration": 70591, + "src": "5276:2:128", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12492,14 +12508,14 @@ { "arguments": [ { - "id": 71027, + "id": 71813, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5288:4:115", + "referencedDeclaration": 70573, + "src": "5288:4:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -12507,30 +12523,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71026, + "id": 71812, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5280:7:115", + "src": "5280:7:128", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71025, + "id": 71811, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5280:7:115", + "src": "5280:7:128", "typeDescriptions": {} } }, - "id": 71028, + "id": 71814, "isConstant": false, "isLValue": false, "isPure": false, @@ -12539,7 +12555,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5280:13:115", + "src": "5280:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12559,33 +12575,33 @@ } ], "expression": { - "id": 71022, + "id": 71808, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5253:3:115", + "referencedDeclaration": 70567, + "src": "5253:3:128", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71023, + "id": 71809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5257:18:115", + "memberLocation": "5257:18:128", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "5253:22:115", + "src": "5253:22:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 71029, + "id": 71815, "isConstant": false, "isLValue": false, "isPure": false, @@ -12594,7 +12610,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5253:41:115", + "src": "5253:41:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -12602,7 +12618,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5223:71:115" + "src": "5223:71:128" }, { "expression": { @@ -12612,34 +12628,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71035, + "id": 71821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71032, + "id": 71818, "name": "IA21", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71021, - "src": "5316:4:115", + "referencedDeclaration": 71807, + "src": "5316:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71033, + "id": 71819, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5321:2:115", + "memberLocation": "5321:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "5316:7:115", + "src": "5316:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -12649,21 +12665,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 71034, + "id": 71820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5326:1:115", + "src": "5326:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5316:11:115", + "src": "5316:11:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12671,14 +12687,14 @@ }, { "hexValue": "64656661756c74207374617465", - "id": 71036, + "id": 71822, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5329:15:115", + "src": "5329:15:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_95d3aa86ad192e5573c6c371cb25aa39d0be4b2b736cfd411ba8862b3fed3345", "typeString": "literal_string \"default state\"" @@ -12697,21 +12713,21 @@ "typeString": "literal_string \"default state\"" } ], - "id": 71031, + "id": 71817, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5305:10:115", + "referencedDeclaration": 11481, + "src": "5305:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71037, + "id": 71823, "isConstant": false, "isLValue": false, "isPure": false, @@ -12720,16 +12736,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5305:40:115", + "src": "5305:40:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71038, + "id": 71824, "nodeType": "ExpressionStatement", - "src": "5305:40:115" + "src": "5305:40:128" }, { "expression": { @@ -12739,34 +12755,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71043, + "id": 71829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71040, + "id": 71826, "name": "IA20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70959, - "src": "5366:4:115", + "referencedDeclaration": 71745, + "src": "5366:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71041, + "id": 71827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5371:2:115", + "memberLocation": "5371:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "5366:7:115", + "src": "5366:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -12776,21 +12792,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 71042, + "id": 71828, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5377:1:115", + "src": "5377:1:128", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5366:12:115", + "src": "5366:12:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12798,14 +12814,14 @@ }, { "hexValue": "68617320756e657870656374656420636f6e74726962", - "id": 71044, + "id": 71830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5380:24:115", + "src": "5380:24:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ef69e184c28f0d3e0e8b1fddf5ff2fc9333ac28313543c8df848e0815d2fdf53", "typeString": "literal_string \"has unexpected contrib\"" @@ -12824,21 +12840,21 @@ "typeString": "literal_string \"has unexpected contrib\"" } ], - "id": 71039, + "id": 71825, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5355:10:115", + "referencedDeclaration": 11481, + "src": "5355:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71045, + "id": 71831, "isConstant": false, "isLValue": false, "isPure": false, @@ -12847,16 +12863,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5355:50:115", + "src": "5355:50:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71046, + "id": 71832, "nodeType": "ExpressionStatement", - "src": "5355:50:115" + "src": "5355:50:128" }, { "expression": { @@ -12866,7 +12882,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71058, + "id": 71844, "isConstant": false, "isLValue": false, "isPure": false, @@ -12878,34 +12894,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71054, + "id": 71840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71048, + "id": 71834, "name": "IA20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70959, - "src": "5427:4:115", + "referencedDeclaration": 71745, + "src": "5427:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71049, + "id": 71835, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5432:2:115", + "memberLocation": "5432:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "5427:7:115", + "src": "5427:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -12916,12 +12932,12 @@ "rightExpression": { "arguments": [ { - "id": 71052, + "id": 71838, "name": "taskid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70941, - "src": "5463:6:115", + "referencedDeclaration": 71727, + "src": "5463:6:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12936,33 +12952,33 @@ } ], "expression": { - "id": 71050, + "id": 71836, "name": "offTWR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70258, - "src": "5437:6:115", + "referencedDeclaration": 71044, + "src": "5437:6:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainTaskWithRep_$6874", + "typeIdentifier": "t_contract$_OffchainTaskWithRep_$7625", "typeString": "contract OffchainTaskWithRep" } }, - "id": 71051, + "id": 71837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5444:18:115", + "memberLocation": "5444:18:128", "memberName": "getRepPointsOfTask", "nodeType": "MemberAccess", - "referencedDeclaration": 6873, - "src": "5437:25:115", + "referencedDeclaration": 7624, + "src": "5437:25:128", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, - "id": 71053, + "id": 71839, "isConstant": false, "isLValue": false, "isPure": false, @@ -12971,28 +12987,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5437:33:115", + "src": "5437:33:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5427:43:115", + "src": "5427:43:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 71055, + "id": 71841, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5426:45:115", + "src": "5426:45:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13002,33 +13018,33 @@ "operator": "==", "rightExpression": { "expression": { - "id": 71056, + "id": 71842, "name": "IA21", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71021, - "src": "5475:4:115", + "referencedDeclaration": 71807, + "src": "5475:4:128", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71057, + "id": 71843, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5480:2:115", + "memberLocation": "5480:2:128", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "5475:7:115", + "src": "5475:7:128", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "5426:56:115", + "src": "5426:56:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13036,14 +13052,14 @@ }, { "hexValue": "636f6e74726962206e6f742072656769737465726564", - "id": 71059, + "id": 71845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5484:24:115", + "src": "5484:24:128", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c9ef25905d60f256c9fb053afa88a38ff8dcdbfa64a772df201914a2e8330ad7", "typeString": "literal_string \"contrib not registered\"" @@ -13062,21 +13078,21 @@ "typeString": "literal_string \"contrib not registered\"" } ], - "id": 71047, + "id": 71833, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5415:10:115", + "referencedDeclaration": 11481, + "src": "5415:10:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71060, + "id": 71846, "isConstant": false, "isLValue": false, "isPure": false, @@ -13085,16 +13101,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5415:94:115", + "src": "5415:94:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71061, + "id": 71847, "nodeType": "ExpressionStatement", - "src": "5415:94:115" + "src": "5415:94:128" } ] }, @@ -13103,50 +13119,50 @@ "kind": "function", "modifiers": [], "name": "testMulti", - "nameLocation": "4753:9:115", + "nameLocation": "4753:9:128", "parameters": { - "id": 70938, + "id": 71724, "nodeType": "ParameterList", "parameters": [], - "src": "4762:2:115" + "src": "4762:2:128" }, "returnParameters": { - "id": 70939, + "id": 71725, "nodeType": "ParameterList", "parameters": [], - "src": "4772:0:115" + "src": "4772:0:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71075, + "id": 71861, "nodeType": "FunctionDefinition", - "src": "5522:117:115", + "src": "5522:117:128", "nodes": [], "body": { - "id": 71074, + "id": 71860, "nodeType": "Block", - "src": "5563:76:115", + "src": "5563:76:128", "nodes": [], "statements": [ { "assignments": [ - 71067, - 71069 + 71853, + 71855 ], "declarations": [ { "constant": false, - "id": 71067, + "id": 71853, "mutability": "mutable", "name": "taskid", - "nameLocation": "5582:6:115", + "nameLocation": "5582:6:128", "nodeType": "VariableDeclaration", - "scope": 71074, - "src": "5574:14:115", + "scope": 71860, + "src": "5574:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13154,10 +13170,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71066, + "id": 71852, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5574:7:115", + "src": "5574:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13167,13 +13183,13 @@ }, { "constant": false, - "id": 71069, + "id": 71855, "mutability": "mutable", "name": "snap", - "nameLocation": "5598:4:115", + "nameLocation": "5598:4:128", "nodeType": "VariableDeclaration", - "scope": 71074, - "src": "5590:12:115", + "scope": 71860, + "src": "5590:12:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13181,10 +13197,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71068, + "id": 71854, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5590:7:115", + "src": "5590:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13193,19 +13209,19 @@ "visibility": "internal" } ], - "id": 71073, + "id": 71859, "initialValue": { "arguments": [ { "hexValue": "333036", - "id": 71071, + "id": 71857, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5628:3:115", + "src": "5628:3:128", "typeDescriptions": { "typeIdentifier": "t_rational_306_by_1", "typeString": "int_const 306" @@ -13220,18 +13236,18 @@ "typeString": "int_const 306" } ], - "id": 71070, + "id": 71856, "name": "testSetsWeightForTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70811, - "src": "5606:21:115", + "referencedDeclaration": 71597, + "src": "5606:21:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (uint16) returns (uint256,uint256)" } }, - "id": 71072, + "id": 71858, "isConstant": false, "isLValue": false, "isPure": false, @@ -13240,7 +13256,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5606:26:115", + "src": "5606:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -13248,7 +13264,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5573:59:115" + "src": "5573:59:128" } ] }, @@ -13257,50 +13273,50 @@ "kind": "function", "modifiers": [], "name": "testSocialTaksMultiple", - "nameLocation": "5531:22:115", + "nameLocation": "5531:22:128", "parameters": { - "id": 71064, + "id": 71850, "nodeType": "ParameterList", "parameters": [], - "src": "5553:2:115" + "src": "5553:2:128" }, "returnParameters": { - "id": 71065, + "id": 71851, "nodeType": "ParameterList", "parameters": [], - "src": "5563:0:115" + "src": "5563:0:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71093, + "id": 71879, "nodeType": "FunctionDefinition", - "src": "5645:305:115", + "src": "5645:305:128", "nodes": [], "body": { - "id": 71092, + "id": 71878, "nodeType": "Block", - "src": "5695:255:115", + "src": "5695:255:128", "nodes": [], "statements": [ { "assignments": [ - 71079, - 71081 + 71865, + 71867 ], "declarations": [ { "constant": false, - "id": 71079, + "id": 71865, "mutability": "mutable", "name": "taskid", - "nameLocation": "5714:6:115", + "nameLocation": "5714:6:128", "nodeType": "VariableDeclaration", - "scope": 71092, - "src": "5706:14:115", + "scope": 71878, + "src": "5706:14:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13308,10 +13324,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71078, + "id": 71864, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5706:7:115", + "src": "5706:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13321,13 +13337,13 @@ }, { "constant": false, - "id": 71081, + "id": 71867, "mutability": "mutable", "name": "snap", - "nameLocation": "5730:4:115", + "nameLocation": "5730:4:128", "nodeType": "VariableDeclaration", - "scope": 71092, - "src": "5722:12:115", + "scope": 71878, + "src": "5722:12:128", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13335,10 +13351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71080, + "id": 71866, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5722:7:115", + "src": "5722:7:128", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13347,19 +13363,19 @@ "visibility": "internal" } ], - "id": 71085, + "id": 71871, "initialValue": { "arguments": [ { "hexValue": "333037", - "id": 71083, + "id": 71869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5760:3:115", + "src": "5760:3:128", "typeDescriptions": { "typeIdentifier": "t_rational_307_by_1", "typeString": "int_const 307" @@ -13374,18 +13390,18 @@ "typeString": "int_const 307" } ], - "id": 71082, + "id": 71868, "name": "testSetsWeightForTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70811, - "src": "5738:21:115", + "referencedDeclaration": 71597, + "src": "5738:21:128", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (uint16) returns (uint256,uint256)" } }, - "id": 71084, + "id": 71870, "isConstant": false, "isLValue": false, "isPure": false, @@ -13394,7 +13410,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5738:26:115", + "src": "5738:26:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -13402,21 +13418,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5705:59:115" + "src": "5705:59:128" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71089, + "id": 71875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5783:4:115", + "src": "5783:4:128", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13432,33 +13448,33 @@ } ], "expression": { - "id": 71086, + "id": 71872, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5775:2:115", + "referencedDeclaration": 13541, + "src": "5775:2:128", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71088, + "id": 71874, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5778:4:115", + "memberLocation": "5778:4:128", "memberName": "skip", "nodeType": "MemberAccess", - "referencedDeclaration": 24020, - "src": "5775:7:115", + "referencedDeclaration": 24771, + "src": "5775:7:128", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 71090, + "id": 71876, "isConstant": false, "isLValue": false, "isPure": false, @@ -13467,16 +13483,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5775:13:115", + "src": "5775:13:128", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71091, + "id": 71877, "nodeType": "ExpressionStatement", - "src": "5775:13:115" + "src": "5775:13:128" } ] }, @@ -13485,20 +13501,20 @@ "kind": "function", "modifiers": [], "name": "testNonMembersCanHaveReputation", - "nameLocation": "5654:31:115", + "nameLocation": "5654:31:128", "parameters": { - "id": 71076, + "id": 71862, "nodeType": "ParameterList", "parameters": [], - "src": "5685:2:115" + "src": "5685:2:128" }, "returnParameters": { - "id": 71077, + "id": 71863, "nodeType": "ParameterList", "parameters": [], - "src": "5695:0:115" + "src": "5695:0:128" }, - "scope": 71094, + "scope": 71880, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -13508,57 +13524,57 @@ "baseContracts": [ { "baseName": { - "id": 70254, + "id": 71040, "name": "DeploysInit", "nameLocations": [ - "472:11:115" + "472:11:128" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "472:11:115" + "referencedDeclaration": 71026, + "src": "472:11:128" }, - "id": 70255, + "id": 71041, "nodeType": "InheritanceSpecifier", - "src": "472:11:115" + "src": "472:11:128" } ], "canonicalName": "MultiPluginLR", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 6874, - 7056, - 7390, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 7625, + 7807, + 8141, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 71094, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 71880, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "MultiPluginLR", - "nameLocation": "455:13:115", - "scope": 71095, + "nameLocation": "455:13:128", + "scope": 71881, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 115 + "id": 128 } \ No newline at end of file diff --git a/out/Nova.sol/Nova.json b/out/Nova.sol/Nova.json index 4bcda158..b0b9b98b 100644 --- a/out/Nova.sol/Nova.json +++ b/out/Nova.sol/Nova.json @@ -1,5 +1,15 @@ { "abi": [ + { + "inputs": [], + "name": "ArchetypeAlreadySet", + "type": "error" + }, + { + "inputs": [], + "name": "WrongParameter", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -26,6 +36,25 @@ "name": "AdminMemberRemoved", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ArchetypeWeightSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -52,6 +81,19 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "MainArchetypeSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -123,6 +165,71 @@ "name": "UrlRemoved", "type": "event" }, + { + "inputs": [], + "name": "CONVICTION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GROWTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERFORMANCE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REPUTATION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIZE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -200,6 +307,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "archetype", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "beacon", @@ -570,6 +690,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "parameter", + "type": "uint8" + } + ], + "name": "setArchetype", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -608,24 +741,67 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "parameter", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setWeightFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "weightFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" } ], "bytecode": { - "object": "0x608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c63430008130033", - "sourceMap": "564:2815:65:-:0;;;;;;;;;;;;;;;;;;;", + "object": "0x608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c63430008130033", + "sourceMap": "616:3181:43:-:0;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c63430008130033", - "sourceMap": "564:2815:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:322;;;;;;:::i;:::-;;:::i;:::-;;;635:14:167;;628:22;610:41;;598:2;583:18;2841:322:65;;;;;;;;1167:246:11;;;;;;:::i;:::-;;:::i;2433:107:65:-;;;;;;:::i;:::-;;:::i;:::-;;3630:91:9;3700:7;:14;3630:91;;;2655:25:167;;;2643:2;2628:18;3630:91:9;2509:177:167;742:23:9;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2855:32:167;;;2837:51;;2825:2;2810:18;742:23:9;2691:203:167;3218:301:9;;;;;;:::i;:::-;;:::i;2041:94:13:-;;;:::i;:::-;;;;;;;:::i;818:48:9:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;570:99:7;651:11;;570:99;;3525::9;;;:::i;:::-;;;;;;;:::i;1712:180:65:-;;;;;;:::i;:::-;;:::i;389:38:11:-;;;;;-1:-1:-1;;;;;389:38:11;;;663:96:67;;;:::i;545:112::-;;;:::i;617:24:9:-;;;;;;:::i;:::-;;:::i;2379:313:13:-;;;;;;:::i;:::-;;:::i;2326:101:65:-;;;;;;:::i;:::-;;:::i;1826:361:9:-;;;;;;:::i;:::-;;:::i;1563:104::-;;;:::i;313:30:8:-;;;;;;2635:89:65;;;;;;:::i;:::-;;:::i;747:29::-;;;;;-1:-1:-1;;;;;747:29:65;;;520:105:5;611:6;;-1:-1:-1;;;;;611:6:5;520:105;;2534:678:9;;;;;;:::i;:::-;;:::i;648:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1898:422:65;;;;;;:::i;:::-;;:::i;2730:105::-;;;;;;:::i;:::-;;:::i;325:34:10:-;;;:::i;:::-;;;;;;;:::i;2546:83:65:-;;;;;;:::i;:::-;;:::i;718:23::-;;;;;-1:-1:-1;;;;;718:23:65;;;1200:506;;;;;;:::i;:::-;;:::i;2841:322::-;2931:14;;2911:4;;-1:-1:-1;;;;;2931:14:65;2927:45;;-1:-1:-1;2968:4:65;2961:11;;2927:45;2986:14;;-1:-1:-1;;;;;2986:14:65;:28;;;;:76;;;3036:14;;;;;;;;;-1:-1:-1;;;;;3036:14:65;-1:-1:-1;;;;;3019:41:65;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3018:44;2986:76;2982:174;;;-1:-1:-1;3071:5:65;3064:12;;2982:174;3115:14;;3098:58;;-1:-1:-1;;;3098:58:65;;-1:-1:-1;;;;;7776:32:167;;;3098:58:65;;;7758:51:167;7825:18;;;7818:34;;;3115:14:65;;;;3098:44;;7731:18:167;;3098:58:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3091:65;;2982:174;2841:322;;;;:::o;1167:246:11:-;1242:4;;1258:127;1282:16;:23;1278:27;;1258:127;;;1353:8;1330:16;1347:1;1330:19;;;;;;;;:::i;:::-;;;;;;;;;:31;1326:48;;-1:-1:-1;1370:4:11;;1167:246;-1:-1:-1;;1167:246:11:o;1326:48::-;1307:3;;;;:::i;:::-;;;;1258:127;;;-1:-1:-1;1401:5:11;;1167:246;-1:-1:-1;;1167:246:11:o;2433:107:65:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;;;;;;;;;2508:25:65::1;2524:8;2508:15;:25::i;:::-;2433:107:::0;:::o;742:23:9:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;742:23:9;;-1:-1:-1;742:23:9;:::o;3218:301::-;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;3296:9:::1;3291:148;3315:6;:13:::0;3311:17;::::1;3291:148;;;3366:6;-1:-1:-1::0;;;;;3353:19:9::1;:6;3360:1;3353:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;3353:9:9::1;:19:::0;3349:80:::1;;3412:1;3392:6;3399:1;3392:9;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;;-1:-1:-1::0;;;;;3392:22:9::1;;;;;-1:-1:-1::0;;;;;3392:22:9::1;;;;;;3349:80;3330:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3291:148;;;-1:-1:-1::0;;;;;;3448:15:9;::::1;3466:5;3448:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;-1:-1:-1;;3448:23:9::1;::::0;;3486:26;;2837:51:167;;;3486:26:9::1;::::0;2810:18:167;3486:26:9::1;;;;;;;;3218:301:::0;:::o;2041:94:13:-;2090:15;2124:4;2117:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2041:94;:::o;3525:99:9:-;3576:16;3611:6;3604:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3604:13:9;;;;;;;;;;;;;;;;;;;;;;;3525:99;:::o;1712:180:65:-;474:6:5;;-1:-1:-1;;;;;474:6:5;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:5;;9196:2:167;444:52:5;;;9178:21:167;9235:2;9215:18;;;9208:30;-1:-1:-1;;;9254:18:167;;;9247:40;9304:18;;444:52:5;8994:334:167;444:52:5;1803:29:65::1;::::0;-1:-1:-1;;;1803:29:65;;-1:-1:-1;;;;;7776:32:167;;1803:29:65::1;::::0;::::1;7758:51:167::0;7825:18;;;7818:34;;;1803:4:65::1;::::0;:12:::1;::::0;7731:18:167;;1803:29:65::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1795:53;;;::::0;-1:-1:-1;;;1795:53:65;;9535:2:167;1795:53:65::1;::::0;::::1;9517:21:167::0;9574:2;9554:18;;;9547:30;-1:-1:-1;;;9593:18:167;;;9586:41;9644:18;;1795:53:65::1;9333:335:167::0;1795:53:65::1;1858:27;1869:9;1880:4;1858:10;:27::i;:::-;1712:180:::0;;:::o;663:96:67:-;704:7;384:33;730:16;:22;-1:-1:-1;;;;;730:22:67;;663:96;-1:-1:-1;663:96:67:o;545:112::-;594:7;620:24;:22;:24::i;617::9:-;;;;;;;;;;;;2379:313:13;2470:4;:11;2450:4;;2470:16;;2466:34;;-1:-1:-1;2495:5:13;;2379:313;-1:-1:-1;2379:313:13:o;2466:34::-;2529:22;;;;;;;;;;2511:15;2566;;;:6;:15;;;;;;;;:20;2562:37;;-1:-1:-1;2595:4:13;;2379:313;-1:-1:-1;;2379:313:13:o;2562:37::-;2642:7;2629:4;2634:1;2629:7;;;;;;;;:::i;:::-;;;;;;;;2613:25;;;;;;:::i;:::-;;;;;;;;:36;2609:53;;-1:-1:-1;2658:4:13;;2379:313;-1:-1:-1;;2379:313:13:o;2326:101:65:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2395:25:65::1;2411:8;2395:15;:25::i;1826:361:9:-:0;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;1915:16:9;::::1;;::::0;;;:8:::1;:16;::::0;;;;;::::1;;1914:17;1913:134:::0;::::1;;;;1990:4;-1:-1:-1::0;;;;;1969:42:9::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1953:88;::::0;-1:-1:-1;;;1953:88:9;;-1:-1:-1;;;;;2855:32:167;;;1953:88:9::1;::::0;::::1;2837:51:167::0;1953:80:9;;;::::1;::::0;::::1;::::0;2810:18:167;;1953:88:9::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93:::0;1913:134:::1;1896:184;;;2058:22;::::0;-1:-1:-1;;;2058:22:9;;11298:2:167;2058:22:9::1;::::0;::::1;11280:21:167::0;11337:2;11317:18;;;11310:30;-1:-1:-1;;;11356:18:167;;;11349:42;11408:18;;2058:22:9::1;11096:336:167::0;1896:184:9::1;-1:-1:-1::0;;;;;2090:15:9;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;2090:22:9::1;2108:4;2090:22:::0;;::::1;::::0;;;2122:6:::1;:19:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2122:19:9::1;::::0;::::1;::::0;;2156:24;;2837:51:167;;;2156:24:9::1;::::0;2810:18:167;2156:24:9::1;2691:203:167::0;1563:104:9;1618:16;1653:7;1646:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1646:14:9;;;;;;;;;;;;;;;;;;;;;;1563:104;:::o;2635:89:65:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2702:15:65::1;2713:3;2702:10;:15::i;2534:678:9:-:0;992:10;984:19;;;;:7;:19;;;;;;2616:16;;984:19;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2644:9:::1;2663:517;2675:9;:16;2671:1;:20;2663:517;;;2713:8;:22;2722:9;2732:1;2722:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2713:22:9::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2713:22:9;;::::1;;2708:178;;2762:9;2772:1;2762:12;;;;;;;;:::i;:::-;2755:19;2762:12;::::0;;::::1;::::0;;;;;2755:19;2824:3:::1;;2663:517;;2708:178;2904:7;:21;2912:9;2922:1;2912:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2904:21:9::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2904:21:9;;::::1;;2899:211;;2945:6;2957:9;2967:1;2957:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;2945:25;;::::1;::::0;;::::1;::::0;;-1:-1:-1;2945:25:9;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2945:25:9::1;-1:-1:-1::0;;;;;2945:25:9;;::::1;::::0;;;::::1;::::0;;3021:12;;2945:25;;3013:7:::1;::::0;3021:12;;3031:1;;3021:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;3013:21:9::1;-1:-1:-1::0;;;;;3013:21:9::1;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3065:30;3082:9;3092:1;3082:12;;;;;;;;:::i;:::-;;;;;;;3065:30;;;;;-1:-1:-1::0;;;;;2855:32:167;;;;2837:51;;2825:2;2810:18;;2691:203;3065:30:9::1;;;;;;;;2899:211;3152:3;;2663:517;;;-1:-1:-1::0;3196:9:9;;2534:678;-1:-1:-1;2534:678:9:o;1898:422:65:-;1988:16;-1:-1:-1;;;;;1980:34:65;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2020:1;1980:41;1972:76;;;;-1:-1:-1;;;1972:76:65;;11639:2:167;1972:76:65;;;11621:21:167;11678:2;11658:18;;;11651:30;-1:-1:-1;;;11697:18:167;;;11690:52;11759:18;;1972:76:65;11437:346:167;1972:76:65;2063:14;;-1:-1:-1;;;;;2063:14:65;2059:211;;2129:14;;-1:-1:-1;;;;;2129:14:65;2115:10;:28;2107:61;;;;-1:-1:-1;;;2107:61:65;;11990:2:167;2107:61:65;;;11972:21:167;12029:2;12009:18;;;12002:30;-1:-1:-1;;;12048:18:167;;;12041:50;12108:18;;2107:61:65;11788:344:167;2107:61:65;2059:211;;;2207:37;;-1:-1:-1;;;2207:37:65;;2233:10;2207:37;;;2837:51:167;2219:4:65;;2207:25;;2810:18:167;;2207:37:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2199:60;;;;-1:-1:-1;;;2199:60:65;;12339:2:167;2199:60:65;;;12321:21:167;12378:2;12358:18;;;12351:30;-1:-1:-1;;;12397:18:167;;;12390:40;12447:18;;2199:60:65;12137:334:167;2199:60:65;2280:14;:33;;-1:-1:-1;;;;;;2280:33:65;-1:-1:-1;;;;;2280:33:65;;;;;;;;;;1898:422::o;2730:105::-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2802:26:65::1;2817:10;2802:14;:26::i;325:34:10:-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2546:83:65:-;992:10:9;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:9;;;;;;;:::i;:::-;2610:12:65::1;2618:3;2610:7;:12::i;1200:506::-:0;3111:19:118;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:118;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:118;1476:19:124;:23;;;3219:66:118;;-1:-1:-1;3268:12:118;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:118;;12678:2:167;3157:201:118;;;12660:21:167;12717:2;12697:18;;;12690:30;12756:34;12736:18;;;12729:62;-1:-1:-1;;;12807:18:167;;;12800:44;12861:19;;3157:201:118;12476:410:167;3157:201:118;3368:12;:16;;-1:-1:-1;;3368:16:118;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:118;;;;;3394:65;1429:8:65::1;:20:::0;;-1:-1:-1;;;;;1429:20:65;::::1;-1:-1:-1::0;;;;;;1429:20:65;;::::1;::::0;::::1;::::0;;;:8:::1;1459:18:::0;;;:7:::1;:18;::::0;;;;:25;;-1:-1:-1;;1459:25:65::1;1429:20:::0;1459:25;;::::1;::::0;;;1494:6:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;1526:19:::1;1537:7:::0;1526:10:::1;:19::i;:::-;697:6:5::0;:29;;-1:-1:-1;;;;;;697:29:5;-1:-1:-1;;;;;697:29:5;;;;;1591:27:65::1;1606:11;1591:14;:27::i;:::-;1628:26;1644:9;1628:15;:26::i;:::-;1664:35;1683:15;1664:18;:35::i;:::-;3483:14:118::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:118;;;3553:14;;-1:-1:-1;13043:36:167;;3553:14:118;;13031:2:167;13016:18;3553:14:118;;;;;;;3479:99;3101:483;1200:506:65;;;;;;:::o;366:213:10:-;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:10;;13292:2:167;443:51:10;;;13274:21:167;13331:2;13311:18;;;13304:30;-1:-1:-1;;;13350:18:167;;;13343:41;13401:18;;443:51:10;13090:335:167;443:51:10;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;1072:244:9:-;474:6:5;;-1:-1:-1;;;;;474:6:5;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:5;;9196:2:167;444:52:5;;;9178:21:167;9235:2;9215:18;;;9208:30;-1:-1:-1;;;9254:18:167;;;9247:40;9304:18;;444:52:5;8994:334:167;444:52:5;-1:-1:-1;;;;;1172:19:9;::::1;;::::0;;;:8:::1;:19;::::0;;;;;::::1;;1171:20;1163:49;;;::::0;-1:-1:-1;;;1163:49:9;;15713:2:167;1163:49:9::1;::::0;::::1;15695:21:167::0;15752:2;15732:18;;;15725:30;-1:-1:-1;;;15771:18:167;;;15764:46;15827:18;;1163:49:9::1;15511:340:167::0;1163:49:9::1;-1:-1:-1::0;;;;;1222:19:9;::::1;;::::0;;;:8:::1;:19;::::0;;;;;:26;;-1:-1:-1;;1222:26:9::1;1244:4;1222:26:::0;;::::1;::::0;;;1258:7:::1;:23:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;1258:23:9::1;::::0;;::::1;::::0;;;1296:13;;::::1;::::0;1222:19;1296:13:::1;1072:244:::0;;:::o;1032:40:67:-;1025:47;;933:146;:::o;765:162::-;822:31;872:48;481:56;536:1;489:43;481:56;:::i;:::-;1784:4:149;1614:190;791:370:11;895:14;;879:49;;;-1:-1:-1;;;879:49:11;;;;853:23;;-1:-1:-1;;;;;895:14:11;;879:47;;:49;;;;;;;;;;;;;;895:14;879:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;965:56;;-1:-1:-1;;;965:56:11;;;;;2655:25:167;;;853:75:11;;-1:-1:-1;1044:1:11;;-1:-1:-1;;;;;965:46:11;;;;;2628:18:167;;965:56:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;965:56:11;;;;;;;;;;;;:::i;:::-;:68;959:82;:86;938:135;;;;-1:-1:-1;;;938:135:11;;17206:2:167;938:135:11;;;17188:21:167;17245:2;17225:18;;;17218:30;-1:-1:-1;;;17264:18:167;;;17257:44;17318:18;;938:135:11;17004:338:167;938:135:11;1083:16;:31;;;;;;;-1:-1:-1;1083:31:11;;;;;;;;;1129:25;;2655::167;;;1129::11;;2643:2:167;2628:18;1129:25:11;;;;;;;843:318;791:370;:::o;1307:536:13:-;1374:17;1386:4;1374:11;:17::i;:::-;1366:46;;;;-1:-1:-1;;;1366:46:13;;17549:2:167;1366:46:13;;;17531:21:167;17588:2;17568:18;;;17561:30;-1:-1:-1;;;17607:18:167;;;17600:46;17663:18;;1366:46:13;17347:340:167;1366:46:13;1441:22;;;;;;;;;;1423:15;1489;;;:6;:15;;;;;;;;1528:4;:11;:15;;1542:1;;1528:15;:::i;:::-;1519:5;:24;1515:238;;1583:4;1588:11;;1559:21;;1583:4;1588:15;;1602:1;;1588:15;:::i;:::-;1583:21;;;;;;;;:::i;:::-;;;;;;;;1559:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:19;1656:7;1640:25;;;;;;1618:47;;1702:5;1680:6;:19;1687:11;1680:19;;;;;;;;;;;:27;;;;1735:7;1721:4;1726:5;1721:11;;;;;;;;:::i;:::-;;;;;;;;:21;;;;;;:::i;:::-;;1545:208;;1515:238;1763:4;:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1790:15;;;;:6;:15;;;;;;1783:22;;;;1820:16;;;;;1831:4;;1820:16;:::i;:::-;;;;;;;;1356:487;;1307:536;:::o;355:209:7:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:7;;18026:2:167;418:64:7;;;18008:21:167;18065:2;18045:18;;;18038:30;-1:-1:-1;;;18084:18:167;;;18077:48;18142:18;;418:64:7;17824:342:167;418:64:7;493:11;:24;;;532:25;2655::167;;;532::7;;2643:2:167;2628:18;532:25:7;2509:177:167;677:442:13;751:22;;;;;;816:4;:11;733:15;;816:16;812:158;;852:15;;;;:6;:15;;;;;;:20;;;:60;;;905:7;892:4;897:1;892:7;;;;;;;;:::i;:::-;;;;;;;;876:25;;;;;;:::i;:::-;;;;;;;;:36;852:60;848:112;;;-1:-1:-1;941:4:13;848:112;988:6;987:7;979:38;;;;-1:-1:-1;;;979:38:13;;18373:2:167;979:38:13;;;18355:21:167;18412:2;18392:18;;;18385:30;-1:-1:-1;;;18431:18:167;;;18424:48;18489:18;;979:38:13;18171:342:167;979:38:13;1046:4;:11;;1028:15;;;;:6;:15;;;;;:29;;;1067:15;;;;;;;;;;;;1077:4;1067:15;;:::i;:::-;;1098:14;1107:4;1098:14;;;;;;:::i;350:176:8:-;424:1;414:7;:11;:26;;;;;439:1;429:7;:11;414:26;406:53;;;;-1:-1:-1;;;406:53:8;;18720:2:167;406:53:8;;;18702:21:167;18759:2;18739:18;;;18732:30;-1:-1:-1;;;18778:18:167;;;18771:44;18832:18;;406:53:8;18518:338:167;406:53:8;470:6;:16;;;501:18;;2655:25:167;;;501:18:8;;2643:2:167;2628:18;501::8;2509:177:167;600:185:11;-1:-1:-1;;;;;680:29:11;;672:64;;;;-1:-1:-1;;;672:64:11;;19063:2:167;672:64:11;;;19045:21:167;19102:2;19082:18;;;19075:30;-1:-1:-1;;;19121:18:167;;;19114:52;19183:18;;672:64:11;18861:346:167;672:64:11;746:14;:32;;-1:-1:-1;;;;;;746:32:11;-1:-1:-1;;;;;746:32:11;;;;;;;;;;600:185::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:167:-;-1:-1:-1;;;;;89:31:167;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:167:o;662:180::-;721:6;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;-1:-1:-1;813:23:167;;662:180;-1:-1:-1;662:180:167:o;847:127::-;908:10;903:3;899:20;896:1;889:31;939:4;936:1;929:15;963:4;960:1;953:15;979:257;1051:4;1045:11;;;1083:17;;1130:18;1115:34;;1151:22;;;1112:62;1109:88;;;1177:18;;:::i;:::-;1213:4;1206:24;979:257;:::o;1241:275::-;1312:2;1306:9;1377:2;1358:13;;-1:-1:-1;;1354:27:167;1342:40;;1412:18;1397:34;;1433:22;;;1394:62;1391:88;;;1459:18;;:::i;:::-;1495:2;1488:22;1241:275;;-1:-1:-1;1241:275:167:o;1521:187::-;1570:4;1603:18;1595:6;1592:30;1589:56;;;1625:18;;:::i;:::-;-1:-1:-1;1691:2:167;1670:15;-1:-1:-1;;1666:29:167;1697:4;1662:40;;1521:187::o;1713:464::-;1756:5;1809:3;1802:4;1794:6;1790:17;1786:27;1776:55;;1827:1;1824;1817:12;1776:55;1863:6;1850:20;1894:49;1910:32;1939:2;1910:32;:::i;:::-;1894:49;:::i;:::-;1968:2;1959:7;1952:19;2014:3;2007:4;2002:2;1994:6;1990:15;1986:26;1983:35;1980:55;;;2031:1;2028;2021:12;1980:55;2096:2;2089:4;2081:6;2077:17;2070:4;2061:7;2057:18;2044:55;2144:1;2119:16;;;2137:4;2115:27;2108:38;;;;2123:7;1713:464;-1:-1:-1;;;1713:464:167:o;2182:322::-;2251:6;2304:2;2292:9;2283:7;2279:23;2275:32;2272:52;;;2320:1;2317;2310:12;2272:52;2360:9;2347:23;2393:18;2385:6;2382:30;2379:50;;;2425:1;2422;2415:12;2379:50;2448;2490:7;2481:6;2470:9;2466:22;2448:50;:::i;:::-;2438:60;2182:322;-1:-1:-1;;;;2182:322:167:o;2899:247::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;:::-;3135:5;2899:247;-1:-1:-1;;;2899:247:167:o;3151:250::-;3236:1;3246:113;3260:6;3257:1;3254:13;3246:113;;;3336:11;;;3330:18;3317:11;;;3310:39;3282:2;3275:10;3246:113;;;-1:-1:-1;;3393:1:167;3375:16;;3368:27;3151:250::o;3406:271::-;3448:3;3486:5;3480:12;3513:6;3508:3;3501:19;3529:76;3598:6;3591:4;3586:3;3582:14;3575:4;3568:5;3564:16;3529:76;:::i;:::-;3659:2;3638:15;-1:-1:-1;;3634:29:167;3625:39;;;;3666:4;3621:50;;3406:271;-1:-1:-1;;3406:271:167:o;3682:803::-;3844:4;3873:2;3913;3902:9;3898:18;3943:2;3932:9;3925:21;3966:6;4001;3995:13;4032:6;4024;4017:22;4070:2;4059:9;4055:18;4048:25;;4132:2;4122:6;4119:1;4115:14;4104:9;4100:30;4096:39;4082:53;;4170:2;4162:6;4158:15;4191:1;4201:255;4215:6;4212:1;4209:13;4201:255;;;4308:2;4304:7;4292:9;4284:6;4280:22;4276:36;4271:3;4264:49;4336:40;4369:6;4360;4354:13;4336:40;:::i;:::-;4326:50;-1:-1:-1;4434:12:167;;;;4399:15;;;;4237:1;4230:9;4201:255;;;-1:-1:-1;4473:6:167;;3682:803;-1:-1:-1;;;;;;;3682:803:167:o;4490:658::-;4661:2;4713:21;;;4783:13;;4686:18;;;4805:22;;;4632:4;;4661:2;4884:15;;;;4858:2;4843:18;;;4632:4;4927:195;4941:6;4938:1;4935:13;4927:195;;;5006:13;;-1:-1:-1;;;;;5002:39:167;4990:52;;5097:15;;;;5062:12;;;;5038:1;4956:9;4927:195;;;-1:-1:-1;5139:3:167;;4490:658;-1:-1:-1;;;;;;4490:658:167:o;5153:1021::-;5237:6;5268:2;5311;5299:9;5290:7;5286:23;5282:32;5279:52;;;5327:1;5324;5317:12;5279:52;5367:9;5354:23;5396:18;5437:2;5429:6;5426:14;5423:34;;;5453:1;5450;5443:12;5423:34;5491:6;5480:9;5476:22;5466:32;;5536:7;5529:4;5525:2;5521:13;5517:27;5507:55;;5558:1;5555;5548:12;5507:55;5594:2;5581:16;5616:2;5612;5609:10;5606:36;;;5622:18;;:::i;:::-;5668:2;5665:1;5661:10;5651:20;;5691:28;5715:2;5711;5707:11;5691:28;:::i;:::-;5753:15;;;5823:11;;;5819:20;;;5784:12;;;;5851:19;;;5848:39;;;5883:1;5880;5873:12;5848:39;5907:11;;;;5927:217;5943:6;5938:3;5935:15;5927:217;;;6023:3;6010:17;5997:30;;6040:31;6065:5;6040:31;:::i;:::-;6084:18;;;5960:12;;;;6122;;;;5927:217;;;6163:5;5153:1021;-1:-1:-1;;;;;;;;5153:1021:167:o;6179:220::-;6328:2;6317:9;6310:21;6291:4;6348:45;6389:2;6378:9;6374:18;6366:6;6348:45;:::i;6404:893::-;6533:6;6541;6549;6557;6565;6573;6626:3;6614:9;6605:7;6601:23;6597:33;6594:53;;;6643:1;6640;6633:12;6594:53;6682:9;6669:23;6701:31;6726:5;6701:31;:::i;:::-;6751:5;-1:-1:-1;6808:2:167;6793:18;;6780:32;6821:33;6780:32;6821:33;:::i;:::-;6873:7;-1:-1:-1;6927:2:167;6912:18;;6899:32;;-1:-1:-1;6982:2:167;6967:18;;6954:32;7009:18;6998:30;;6995:50;;;7041:1;7038;7031:12;6995:50;7064;7106:7;7097:6;7086:9;7082:22;7064:50;:::i;:::-;7054:60;;;7161:3;7150:9;7146:19;7133:33;7123:43;;7218:3;7207:9;7203:19;7190:33;7232;7257:7;7232:33;:::i;:::-;7284:7;7274:17;;;6404:893;;;;;;;;:::o;7302:277::-;7369:6;7422:2;7410:9;7401:7;7397:23;7393:32;7390:52;;;7438:1;7435;7428:12;7390:52;7470:9;7464:16;7523:5;7516:13;7509:21;7502:5;7499:32;7489:60;;7545:1;7542;7535:12;7863:127;7924:10;7919:3;7915:20;7912:1;7905:31;7955:4;7952:1;7945:15;7979:4;7976:1;7969:15;7995:127;8056:10;8051:3;8047:20;8044:1;8037:31;8087:4;8084:1;8077:15;8111:4;8108:1;8101:15;8127:135;8166:3;8187:17;;;8184:43;;8207:18;;:::i;:::-;-1:-1:-1;8254:1:167;8243:13;;8127:135::o;8267:337::-;8469:2;8451:21;;;8508:2;8488:18;;;8481:30;-1:-1:-1;;;8542:2:167;8527:18;;8520:43;8595:2;8580:18;;8267:337::o;8609:380::-;8688:1;8684:12;;;;8731;;;8752:61;;8806:4;8798:6;8794:17;8784:27;;8752:61;8859:2;8851:6;8848:14;8828:18;8825:38;8822:161;;8905:10;8900:3;8896:20;8893:1;8886:31;8940:4;8937:1;8930:15;8968:4;8965:1;8958:15;8822:161;;8609:380;;;:::o;9802:844::-;9932:3;9961:1;9994:6;9988:13;10024:36;10050:9;10024:36;:::i;:::-;10079:1;10096:18;;;10123:133;;;;10270:1;10265:356;;;;10089:532;;10123:133;-1:-1:-1;;10156:24:167;;10144:37;;10229:14;;10222:22;10210:35;;10201:45;;;-1:-1:-1;10123:133:167;;10265:356;10296:6;10293:1;10286:17;10326:4;10371:2;10368:1;10358:16;10396:1;10410:165;10424:6;10421:1;10418:13;10410:165;;;10502:14;;10489:11;;;10482:35;10545:16;;;;10439:10;;10410:165;;;10414:3;;;10604:6;10599:3;10595:16;10588:23;;10089:532;-1:-1:-1;10637:3:167;;9802:844;-1:-1:-1;;;;;;9802:844:167:o;10651:251::-;10721:6;10774:2;10762:9;10753:7;10749:23;10745:32;10742:52;;;10790:1;10787;10780:12;10742:52;10822:9;10816:16;10841:31;10866:5;10841:31;:::i;10907:184::-;10977:6;11030:2;11018:9;11009:7;11005:23;11001:32;10998:52;;;11046:1;11043;11036:12;10998:52;-1:-1:-1;11069:16:167;;10907:184;-1:-1:-1;10907:184:167:o;13430:545::-;13532:2;13527:3;13524:11;13521:448;;;13568:1;13593:5;13589:2;13582:17;13638:4;13634:2;13624:19;13708:2;13696:10;13692:19;13689:1;13685:27;13679:4;13675:38;13744:4;13732:10;13729:20;13726:47;;;-1:-1:-1;13767:4:167;13726:47;13822:2;13817:3;13813:12;13810:1;13806:20;13800:4;13796:31;13786:41;;13877:82;13895:2;13888:5;13885:13;13877:82;;;13940:17;;;13921:1;13910:13;13877:82;;;13881:3;;;13521:448;13430:545;;;:::o;14151:1355::-;14277:3;14271:10;14304:18;14296:6;14293:30;14290:56;;;14326:18;;:::i;:::-;14355:97;14445:6;14405:38;14437:4;14431:11;14405:38;:::i;:::-;14399:4;14355:97;:::i;:::-;14507:4;;14571:2;14560:14;;14588:1;14583:666;;;;15293:1;15310:6;15307:89;;;-1:-1:-1;15362:19:167;;;15356:26;15307:89;-1:-1:-1;;14108:1:167;14104:11;;;14100:24;14096:29;14086:40;14132:1;14128:11;;;14083:57;15409:81;;14553:947;;14583:666;9749:1;9742:14;;;9786:4;9773:18;;-1:-1:-1;;14619:20:167;;;14740:236;14754:7;14751:1;14748:14;14740:236;;;14843:19;;;14837:26;14822:42;;14935:27;;;;14903:1;14891:14;;;;14770:19;;14740:236;;;14744:3;15004:6;14995:7;14992:19;14989:201;;;15065:19;;;15059:26;-1:-1:-1;;15148:1:167;15144:14;;;15160:3;15140:24;15136:37;15132:42;15117:58;15102:74;;14989:201;-1:-1:-1;;;;;15236:1:167;15220:14;;;15216:22;15203:36;;-1:-1:-1;14151:1355:167:o;15856:128::-;15923:9;;;15944:11;;;15941:37;;;15958:18;;:::i;15989:1010::-;16093:6;16124:2;16167;16155:9;16146:7;16142:23;16138:32;16135:52;;;16183:1;16180;16173:12;16135:52;16216:9;16210:16;16245:18;16286:2;16278:6;16275:14;16272:34;;;16302:1;16299;16292:12;16272:34;16325:22;;;;16381:4;16363:16;;;16359:27;16356:47;;;16399:1;16396;16389:12;16356:47;16425:22;;:::i;:::-;16478:2;16472:9;16506:2;16496:8;16493:16;16490:36;;;16522:1;16519;16512:12;16490:36;16545:17;;;-1:-1:-1;16593:4:167;16585:13;;16581:27;-1:-1:-1;16571:55:167;;16622:1;16619;16612:12;16571:55;16651:2;16645:9;16676:49;16692:32;16721:2;16692:32;:::i;16676:49::-;16748:2;16741:5;16734:17;16788:7;16783:2;16778;16774;16770:11;16766:20;16763:33;16760:53;;;16809:1;16806;16799:12;16760:53;16822:67;16886:2;16881;16874:5;16870:14;16865:2;16861;16857:11;16822:67;:::i;:::-;16898:20;;-1:-1:-1;16956:11:167;;;16950:18;16934:14;;;16927:42;;;;16905:5;15989:1010;-1:-1:-1;;;;15989:1010:167:o;17692:127::-;17753:10;17748:3;17744:20;17741:1;17734:31;17784:4;17781:1;17774:15;17808:4;17805:1;17798:15", + "object": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c63430008130033", + "sourceMap": "616:3181:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:322;;;;;;:::i;:::-;;:::i;:::-;;;635:14:134;;628:22;610:41;;598:2;583:18;2908:322:43;;;;;;;;371:22:5;;;;;;;;;;;;834:4:134;822:17;;;804:36;;792:2;777:18;371:22:5;662:184:134;1167:246:10;;;;;;:::i;:::-;;:::i;2500:107:43:-;;;;;;:::i;:::-;;:::i;:::-;;3630:91:8;3700:7;:14;3630:91;;;2844:25:134;;;2832:2;2817:18;3630:91:8;2698:177:134;742:23:8;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3044:32:134;;;3026:51;;3014:2;2999:18;742:23:8;2880:203:134;3218:301:8;;;;;;:::i;:::-;;:::i;2041:94:11:-;;;:::i;:::-;;;;;;;:::i;818:48:8:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;570:99:6;651:11;;570:99;;3525::8;;;:::i;:::-;;;;;;;:::i;1779:180:43:-;;;;;;:::i;:::-;;:::i;389:38:10:-;;;;;-1:-1:-1;;;;;389:38:10;;;663:96:45;;;:::i;545:112::-;;;:::i;617:24:8:-;;;;;;:::i;:::-;;:::i;205:36:5:-;;240:1;205:36;;2379:313:11;;;;;;:::i;:::-;;:::i;2393:101:43:-;;;;;;:::i;:::-;;:::i;1826:361:8:-;;;;;;:::i;:::-;;:::i;3470:111:43:-;;;;;;:::i;:::-;;:::i;1563:104:8:-;;;:::i;3303:89:43:-;;;;;;:::i;:::-;;:::i;313:30:7:-;;;;;;2702:89:43;;;;;;:::i;:::-;;:::i;814:29::-;;;;;-1:-1:-1;;;;;814:29:43;;;332:32:5;;363:1;332:32;;520:105:4;611:6;;-1:-1:-1;;;;;611:6:4;520:105;;247:36:5;;282:1;247:36;;2534:678:8;;;;;;:::i;:::-;;:::i;648:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;289:37:5;;325:1;289:37;;1965:422:43;;;;;;:::i;:::-;;:::i;169:30:5:-;;198:1;169:30;;2797:105:43;;;;;;:::i;:::-;;:::i;325:34:9:-;;;:::i;:::-;;;;;;;:::i;2613:83:43:-;;;;;;:::i;:::-;;:::i;785:23::-;;;;;-1:-1:-1;;;;;785:23:43;;;1267:506;;;;;;:::i;:::-;;:::i;399:42:5:-;;;;;;:::i;:::-;;;;;;;;;;;;;;2908:322:43;2998:14;;2978:4;;-1:-1:-1;;;;;2998:14:43;2994:45;;-1:-1:-1;3035:4:43;3028:11;;2994:45;3053:14;;-1:-1:-1;;;;;3053:14:43;:28;;;;:76;;;3103:14;;;;;;;;;-1:-1:-1;;;;;3103:14:43;-1:-1:-1;;;;;3086:41:43;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3085:44;3053:76;3049:174;;;-1:-1:-1;3138:5:43;3131:12;;3049:174;3182:14;;3165:58;;-1:-1:-1;;;3165:58:43;;-1:-1:-1;;;;;8568:32:134;;;3165:58:43;;;8550:51:134;8617:18;;;8610:34;;;3182:14:43;;;;3165:44;;8523:18:134;;3165:58:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3158:65;;3049:174;2908:322;;;;:::o;1167:246:10:-;1242:4;;1258:127;1282:16;:23;1278:27;;1258:127;;;1353:8;1330:16;1347:1;1330:19;;;;;;;;:::i;:::-;;;;;;;;;:31;1326:48;;-1:-1:-1;1370:4:10;;1167:246;-1:-1:-1;;1167:246:10:o;1326:48::-;1307:3;;;;:::i;:::-;;;;1258:127;;;-1:-1:-1;1401:5:10;;1167:246;-1:-1:-1;;1167:246:10:o;2500:107:43:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;;;;;;;;;2575:25:43::1;2591:8;2575:15;:25::i;:::-;2500:107:::0;:::o;742:23:8:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;742:23:8;;-1:-1:-1;742:23:8;:::o;3218:301::-;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;3296:9:::1;3291:148;3315:6;:13:::0;3311:17;::::1;3291:148;;;3366:6;-1:-1:-1::0;;;;;3353:19:8::1;:6;3360:1;3353:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;3353:9:8::1;:19:::0;3349:80:::1;;3412:1;3392:6;3399:1;3392:9;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;;-1:-1:-1::0;;;;;3392:22:8::1;;;;;-1:-1:-1::0;;;;;3392:22:8::1;;;;;;3349:80;3330:3:::0;::::1;::::0;::::1;:::i;:::-;;;;3291:148;;;-1:-1:-1::0;;;;;;3448:15:8;::::1;3466:5;3448:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;-1:-1:-1;;3448:23:8::1;::::0;;3486:26;;3026:51:134;;;3486:26:8::1;::::0;2999:18:134;3486:26:8::1;;;;;;;;3218:301:::0;:::o;2041:94:11:-;2090:15;2124:4;2117:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2041:94;:::o;3525:99:8:-;3576:16;3611:6;3604:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3604:13:8;;;;;;;;;;;;;;;;;;;;;;;3525:99;:::o;1779:180:43:-;474:6:4;;-1:-1:-1;;;;;474:6:4;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:4;;9988:2:134;444:52:4;;;9970:21:134;10027:2;10007:18;;;10000:30;-1:-1:-1;;;10046:18:134;;;10039:40;10096:18;;444:52:4;9786:334:134;444:52:4;1870:29:43::1;::::0;-1:-1:-1;;;1870:29:43;;-1:-1:-1;;;;;8568:32:134;;1870:29:43::1;::::0;::::1;8550:51:134::0;8617:18;;;8610:34;;;1870:4:43::1;::::0;:12:::1;::::0;8523:18:134;;1870:29:43::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1862:53;;;::::0;-1:-1:-1;;;1862:53:43;;10327:2:134;1862:53:43::1;::::0;::::1;10309:21:134::0;10366:2;10346:18;;;10339:30;-1:-1:-1;;;10385:18:134;;;10378:41;10436:18;;1862:53:43::1;10125:335:134::0;1862:53:43::1;1925:27;1936:9;1947:4;1925:10;:27::i;:::-;1779:180:::0;;:::o;663:96:45:-;704:7;384:33;730:16;:22;-1:-1:-1;;;;;730:22:45;;663:96;-1:-1:-1;663:96:45:o;545:112::-;594:7;620:24;:22;:24::i;617::8:-;;;;;;;;;;;;2379:313:11;2470:4;:11;2450:4;;2470:16;;2466:34;;-1:-1:-1;2495:5:11;;2379:313;-1:-1:-1;2379:313:11:o;2466:34::-;2529:22;;;;;;;;;;2511:15;2566;;;:6;:15;;;;;;;;:20;2562:37;;-1:-1:-1;2595:4:11;;2379:313;-1:-1:-1;;2379:313:11:o;2562:37::-;2642:7;2629:4;2634:1;2629:7;;;;;;;;:::i;:::-;;;;;;;;2613:25;;;;;;:::i;:::-;;;;;;;;:36;2609:53;;-1:-1:-1;2658:4:11;;2379:313;-1:-1:-1;;2379:313:11:o;2393:101:43:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2462:25:43::1;2478:8;2462:15;:25::i;1826:361:8:-:0;992:10;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;1915:16:8;::::1;;::::0;;;:8:::1;:16;::::0;;;;;::::1;;1914:17;1913:134:::0;::::1;;;;1990:4;-1:-1:-1::0;;;;;1969:42:8::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1953:88;::::0;-1:-1:-1;;;1953:88:8;;-1:-1:-1;;;;;3044:32:134;;;1953:88:8::1;::::0;::::1;3026:51:134::0;1953:80:8;;;::::1;::::0;::::1;::::0;2999:18:134;;1953:88:8::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93:::0;1913:134:::1;1896:184;;;2058:22;::::0;-1:-1:-1;;;2058:22:8;;12090:2:134;2058:22:8::1;::::0;::::1;12072:21:134::0;12129:2;12109:18;;;12102:30;-1:-1:-1;;;12148:18:134;;;12141:42;12200:18;;2058:22:8::1;11888:336:134::0;1896:184:8::1;-1:-1:-1::0;;;;;2090:15:8;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;2090:22:8::1;2108:4;2090:22:::0;;::::1;::::0;;;2122:6:::1;:19:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2122:19:8::1;::::0;::::1;::::0;;2156:24;;3026:51:134;;;2156:24:8::1;::::0;2999:18:134;2156:24:8::1;2880:203:134::0;3470:111:43;3543:31;3557:9;3568:5;3543:13;:31::i;1563:104:8:-;1618:16;1653:7;1646:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1646:14:8;;;;;;;;;;;;;;;;;;;;;;1563:104;:::o;3303:89:43:-;3361:24;3375:9;3361:13;:24::i;2702:89::-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2769:15:43::1;2780:3;2769:10;:15::i;2534:678:8:-:0;992:10;984:19;;;;:7;:19;;;;;;2616:16;;984:19;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2644:9:::1;2663:517;2675:9;:16;2671:1;:20;2663:517;;;2713:8;:22;2722:9;2732:1;2722:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2713:22:8::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2713:22:8;;::::1;;2708:178;;2762:9;2772:1;2762:12;;;;;;;;:::i;:::-;2755:19;2762:12;::::0;;::::1;::::0;;;;;2755:19;2824:3:::1;;2663:517;;2708:178;2904:7;:21;2912:9;2922:1;2912:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;2904:21:8::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;2904:21:8;;::::1;;2899:211;;2945:6;2957:9;2967:1;2957:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;2945:25;;::::1;::::0;;::::1;::::0;;-1:-1:-1;2945:25:8;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2945:25:8::1;-1:-1:-1::0;;;;;2945:25:8;;::::1;::::0;;;::::1;::::0;;3021:12;;2945:25;;3013:7:::1;::::0;3021:12;;3031:1;;3021:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;3013:21:8::1;-1:-1:-1::0;;;;;3013:21:8::1;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3065:30;3082:9;3092:1;3082:12;;;;;;;;:::i;:::-;;;;;;;3065:30;;;;;-1:-1:-1::0;;;;;3044:32:134;;;;3026:51;;3014:2;2999:18;;2880:203;3065:30:8::1;;;;;;;;2899:211;3152:3;;2663:517;;;3196:9;3189:16;;;1031:1;2534:678:::0;;;:::o;1965:422:43:-;2055:16;-1:-1:-1;;;;;2047:34:43;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2087:1;2047:41;2039:76;;;;-1:-1:-1;;;2039:76:43;;12431:2:134;2039:76:43;;;12413:21:134;12470:2;12450:18;;;12443:30;-1:-1:-1;;;12489:18:134;;;12482:52;12551:18;;2039:76:43;12229:346:134;2039:76:43;2130:14;;-1:-1:-1;;;;;2130:14:43;2126:211;;2196:14;;-1:-1:-1;;;;;2196:14:43;2182:10;:28;2174:61;;;;-1:-1:-1;;;2174:61:43;;12782:2:134;2174:61:43;;;12764:21:134;12821:2;12801:18;;;12794:30;-1:-1:-1;;;12840:18:134;;;12833:50;12900:18;;2174:61:43;12580:344:134;2174:61:43;2126:211;;;2274:37;;-1:-1:-1;;;2274:37:43;;2300:10;2274:37;;;3026:51:134;2286:4:43;;2274:25;;2999:18:134;;2274:37:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2266:60;;;;-1:-1:-1;;;2266:60:43;;13131:2:134;2266:60:43;;;13113:21:134;13170:2;13150:18;;;13143:30;-1:-1:-1;;;13189:18:134;;;13182:40;13239:18;;2266:60:43;12929:334:134;2266:60:43;2347:14;:33;;-1:-1:-1;;;;;;2347:33:43;-1:-1:-1;;;;;2347:33:43;;;;;;;;;;1965:422::o;2797:105::-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2869:26:43::1;2884:10;2869:14;:26::i;325:34:9:-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2613:83:43:-;992:10:8;984:19;;;;:7;:19;;;;;;;;976:45;;;;-1:-1:-1;;;976:45:8;;;;;;;:::i;:::-;2677:12:43::1;2685:3;2677:7;:12::i;1267:506::-:0;3111:19:88;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:88;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:88;1476:19:94;:23;;;3219:66:88;;-1:-1:-1;3268:12:88;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:88;;13470:2:134;3157:201:88;;;13452:21:134;13509:2;13489:18;;;13482:30;13548:34;13528:18;;;13521:62;-1:-1:-1;;;13599:18:134;;;13592:44;13653:19;;3157:201:88;13268:410:134;3157:201:88;3368:12;:16;;-1:-1:-1;;3368:16:88;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:88;;;;;3394:65;1496:8:43::1;:20:::0;;-1:-1:-1;;;;;1496:20:43;::::1;-1:-1:-1::0;;;;;;1496:20:43;;::::1;::::0;::::1;::::0;;;:8:::1;1526:18:::0;;;:7:::1;:18;::::0;;;;:25;;-1:-1:-1;;1526:25:43::1;1496:20:::0;1526:25;;::::1;::::0;;;1561:6:::1;:22:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;1593:19:::1;1604:7:::0;1593:10:::1;:19::i;:::-;697:6:4::0;:29;;-1:-1:-1;;;;;;697:29:4;-1:-1:-1;;;;;697:29:4;;;;;1658:27:43::1;1673:11;1658:14;:27::i;:::-;1695:26;1711:9;1695:15;:26::i;:::-;1731:35;1750:15;1731:18;:35::i;:::-;3483:14:88::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:88;;;3553:14;;-1:-1:-1;804:36:134;;3553:14:88;;792:2:134;777:18;3553:14:88;;;;;;;3479:99;3101:483;1267:506:43;;;;;;:::o;366:213:9:-;477:1;457:9;451:23;:27;443:51;;;;-1:-1:-1;;;443:51:9;;14084:2:134;443:51:9;;;14066:21:134;14123:2;14103:18;;;14096:30;-1:-1:-1;;;14142:18:134;;;14135:41;14193:18;;443:51:9;13882:335:134;443:51:9;505:11;:23;519:9;505:11;:23;:::i;:::-;;543:29;562:9;543:29;;;;;;:::i;1072:244:8:-;474:6:4;;-1:-1:-1;;;;;474:6:4;452:10;:29;444:52;;;;-1:-1:-1;;;444:52:4;;9988:2:134;444:52:4;;;9970:21:134;10027:2;10007:18;;;10000:30;-1:-1:-1;;;10046:18:134;;;10039:40;10096:18;;444:52:4;9786:334:134;444:52:4;-1:-1:-1;;;;;1172:19:8;::::1;;::::0;;;:8:::1;:19;::::0;;;;;::::1;;1171:20;1163:49;;;::::0;-1:-1:-1;;;1163:49:8;;16505:2:134;1163:49:8::1;::::0;::::1;16487:21:134::0;16544:2;16524:18;;;16517:30;-1:-1:-1;;;16563:18:134;;;16556:46;16619:18;;1163:49:8::1;16303:340:134::0;1163:49:8::1;-1:-1:-1::0;;;;;1222:19:8;::::1;;::::0;;;:8:::1;:19;::::0;;;;;:26;;-1:-1:-1;;1222:26:8::1;1244:4;1222:26:::0;;::::1;::::0;;;1258:7:::1;:23:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;1258:23:8::1;::::0;;::::1;::::0;;;1296:13;;::::1;::::0;1222:19;1296:13:::1;1072:244:::0;;:::o;1032:40:45:-;1025:47;;933:146;:::o;765:162::-;822:31;872:48;481:56;536:1;489:43;481:56;:::i;:::-;1784:4:116;1614:190;791:370:10;895:14;;879:49;;;-1:-1:-1;;;879:49:10;;;;853:23;;-1:-1:-1;;;;;895:14:10;;879:47;;:49;;;;;;;;;;;;;;895:14;879:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;965:56;;-1:-1:-1;;;965:56:10;;;;;2844:25:134;;;853:75:10;;-1:-1:-1;1044:1:10;;-1:-1:-1;;;;;965:46:10;;;;;2817:18:134;;965:56:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;965:56:10;;;;;;;;;;;;:::i;:::-;:68;959:82;:86;938:135;;;;-1:-1:-1;;;938:135:10;;17998:2:134;938:135:10;;;17980:21:134;18037:2;18017:18;;;18010:30;-1:-1:-1;;;18056:18:134;;;18049:44;18110:18;;938:135:10;17796:338:134;938:135:10;1083:16;:31;;;;;;;-1:-1:-1;1083:31:10;;;;;;;;;1129:25;;2844::134;;;1129::10;;2832:2:134;2817:18;1129:25:10;;;;;;;843:318;791:370;:::o;662:148:5:-;736:29;755:9;736:18;:29::i;:::-;775:20;;;;;;;;:9;:20;;;;;:28;662:148::o;448:208::-;511:9;;;;:14;507:73;;548:21;;-1:-1:-1;;;548:21:5;;;;;;;;;;;507:73;589:29;608:9;589:18;:29::i;:::-;628:9;:21;;-1:-1:-1;;628:21:5;;;;;;;;;;;;448:208::o;1307:536:11:-;1374:17;1386:4;1374:11;:17::i;:::-;1366:46;;;;-1:-1:-1;;;1366:46:11;;18341:2:134;1366:46:11;;;18323:21:134;18380:2;18360:18;;;18353:30;-1:-1:-1;;;18399:18:134;;;18392:46;18455:18;;1366:46:11;18139:340:134;1366:46:11;1441:22;;;;;;;;;;1423:15;1489;;;:6;:15;;;;;;;;1528:4;:11;:15;;1542:1;;1528:15;:::i;:::-;1519:5;:24;1515:238;;1583:4;1588:11;;1559:21;;1583:4;1588:15;;1602:1;;1588:15;:::i;:::-;1583:21;;;;;;;;:::i;:::-;;;;;;;;1559:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:19;1656:7;1640:25;;;;;;1618:47;;1702:5;1680:6;:19;1687:11;1680:19;;;;;;;;;;;:27;;;;1735:7;1721:4;1726:5;1721:11;;;;;;;;:::i;:::-;;;;;;;;:21;;;;;;:::i;:::-;;1545:208;;1515:238;1763:4;:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1790:15;;;;:6;:15;;;;;;1783:22;;;;1820:16;;;;;1831:4;;1820:16;:::i;:::-;;;;;;;;1356:487;;1307:536;:::o;355:209:6:-;439:1;426:10;:14;:33;;;;;457:2;444:10;:15;426:33;418:64;;;;-1:-1:-1;;;418:64:6;;18818:2:134;418:64:6;;;18800:21:134;18857:2;18837:18;;;18830:30;-1:-1:-1;;;18876:18:134;;;18869:48;18934:18;;418:64:6;18616:342:134;418:64:6;493:11;:24;;;532:25;2844::134;;;532::6;;2832:2:134;2817:18;532:25:6;2698:177:134;677:442:11;751:22;;;;;;816:4;:11;733:15;;816:16;812:158;;852:15;;;;:6;:15;;;;;;:20;;;:60;;;905:7;892:4;897:1;892:7;;;;;;;;:::i;:::-;;;;;;;;876:25;;;;;;:::i;:::-;;;;;;;;:36;852:60;848:112;;;-1:-1:-1;941:4:11;848:112;988:6;987:7;979:38;;;;-1:-1:-1;;;979:38:11;;19165:2:134;979:38:11;;;19147:21:134;19204:2;19184:18;;;19177:30;-1:-1:-1;;;19223:18:134;;;19216:48;19281:18;;979:38:11;18963:342:134;979:38:11;1046:4;:11;;1028:15;;;;:6;:15;;;;;:29;;;1067:15;;;;;;;;;;;;1077:4;1067:15;;:::i;:::-;;1098:14;1107:4;1098:14;;;;;;:::i;350:176:7:-;424:1;414:7;:11;:26;;;;;439:1;429:7;:11;414:26;406:53;;;;-1:-1:-1;;;406:53:7;;19512:2:134;406:53:7;;;19494:21:134;19551:2;19531:18;;;19524:30;-1:-1:-1;;;19570:18:134;;;19563:44;19624:18;;406:53:7;19310:338:134;406:53:7;470:6;:16;;;501:18;;2844:25:134;;;501:18:7;;2832:2:134;2817:18;501::7;2698:177:134;600:185:10;-1:-1:-1;;;;;680:29:10;;672:64;;;;-1:-1:-1;;;672:64:10;;19855:2:134;672:64:10;;;19837:21:134;19894:2;19874:18;;;19867:30;-1:-1:-1;;;19913:18:134;;;19906:52;19975:18;;672:64:10;19653:346:134;672:64:10;746:14;:32;;-1:-1:-1;;;;;;746:32:10;-1:-1:-1;;;;;746:32:10;;;;;;;;;;600:185::o;816:160:5:-;901:1;889:9;:13;;;:31;;;-1:-1:-1;906:14:5;;;;889:31;885:85;;;943:16;;-1:-1:-1;;;943:16:5;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:134:-;-1:-1:-1;;;;;89:31:134;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:134:o;851:180::-;910:6;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;-1:-1:-1;1002:23:134;;851:180;-1:-1:-1;851:180:134:o;1036:127::-;1097:10;1092:3;1088:20;1085:1;1078:31;1128:4;1125:1;1118:15;1152:4;1149:1;1142:15;1168:257;1240:4;1234:11;;;1272:17;;1319:18;1304:34;;1340:22;;;1301:62;1298:88;;;1366:18;;:::i;:::-;1402:4;1395:24;1168:257;:::o;1430:275::-;1501:2;1495:9;1566:2;1547:13;;-1:-1:-1;;1543:27:134;1531:40;;1601:18;1586:34;;1622:22;;;1583:62;1580:88;;;1648:18;;:::i;:::-;1684:2;1677:22;1430:275;;-1:-1:-1;1430:275:134:o;1710:187::-;1759:4;1792:18;1784:6;1781:30;1778:56;;;1814:18;;:::i;:::-;-1:-1:-1;1880:2:134;1859:15;-1:-1:-1;;1855:29:134;1886:4;1851:40;;1710:187::o;1902:464::-;1945:5;1998:3;1991:4;1983:6;1979:17;1975:27;1965:55;;2016:1;2013;2006:12;1965:55;2052:6;2039:20;2083:49;2099:32;2128:2;2099:32;:::i;:::-;2083:49;:::i;:::-;2157:2;2148:7;2141:19;2203:3;2196:4;2191:2;2183:6;2179:15;2175:26;2172:35;2169:55;;;2220:1;2217;2210:12;2169:55;2285:2;2278:4;2270:6;2266:17;2259:4;2250:7;2246:18;2233:55;2333:1;2308:16;;;2326:4;2304:27;2297:38;;;;2312:7;1902:464;-1:-1:-1;;;1902:464:134:o;2371:322::-;2440:6;2493:2;2481:9;2472:7;2468:23;2464:32;2461:52;;;2509:1;2506;2499:12;2461:52;2549:9;2536:23;2582:18;2574:6;2571:30;2568:50;;;2614:1;2611;2604:12;2568:50;2637;2679:7;2670:6;2659:9;2655:22;2637:50;:::i;:::-;2627:60;2371:322;-1:-1:-1;;;;2371:322:134:o;3088:247::-;3147:6;3200:2;3188:9;3179:7;3175:23;3171:32;3168:52;;;3216:1;3213;3206:12;3168:52;3255:9;3242:23;3274:31;3299:5;3274:31;:::i;:::-;3324:5;3088:247;-1:-1:-1;;;3088:247:134:o;3340:250::-;3425:1;3435:113;3449:6;3446:1;3443:13;3435:113;;;3525:11;;;3519:18;3506:11;;;3499:39;3471:2;3464:10;3435:113;;;-1:-1:-1;;3582:1:134;3564:16;;3557:27;3340:250::o;3595:271::-;3637:3;3675:5;3669:12;3702:6;3697:3;3690:19;3718:76;3787:6;3780:4;3775:3;3771:14;3764:4;3757:5;3753:16;3718:76;:::i;:::-;3848:2;3827:15;-1:-1:-1;;3823:29:134;3814:39;;;;3855:4;3810:50;;3595:271;-1:-1:-1;;3595:271:134:o;3871:803::-;4033:4;4062:2;4102;4091:9;4087:18;4132:2;4121:9;4114:21;4155:6;4190;4184:13;4221:6;4213;4206:22;4259:2;4248:9;4244:18;4237:25;;4321:2;4311:6;4308:1;4304:14;4293:9;4289:30;4285:39;4271:53;;4359:2;4351:6;4347:15;4380:1;4390:255;4404:6;4401:1;4398:13;4390:255;;;4497:2;4493:7;4481:9;4473:6;4469:22;4465:36;4460:3;4453:49;4525:40;4558:6;4549;4543:13;4525:40;:::i;:::-;4515:50;-1:-1:-1;4623:12:134;;;;4588:15;;;;4426:1;4419:9;4390:255;;;-1:-1:-1;4662:6:134;;3871:803;-1:-1:-1;;;;;;;3871:803:134:o;4679:658::-;4850:2;4902:21;;;4972:13;;4875:18;;;4994:22;;;4821:4;;4850:2;5073:15;;;;5047:2;5032:18;;;4821:4;5116:195;5130:6;5127:1;5124:13;5116:195;;;5195:13;;-1:-1:-1;;;;;5191:39:134;5179:52;;5286:15;;;;5251:12;;;;5227:1;5145:9;5116:195;;;-1:-1:-1;5328:3:134;;4679:658;-1:-1:-1;;;;;;4679:658:134:o;5342:156::-;5408:20;;5468:4;5457:16;;5447:27;;5437:55;;5488:1;5485;5478:12;5503:250;5569:6;5577;5630:2;5618:9;5609:7;5605:23;5601:32;5598:52;;;5646:1;5643;5636:12;5598:52;5669:27;5686:9;5669:27;:::i;5758:182::-;5815:6;5868:2;5856:9;5847:7;5843:23;5839:32;5836:52;;;5884:1;5881;5874:12;5836:52;5907:27;5924:9;5907:27;:::i;5945:1021::-;6029:6;6060:2;6103;6091:9;6082:7;6078:23;6074:32;6071:52;;;6119:1;6116;6109:12;6071:52;6159:9;6146:23;6188:18;6229:2;6221:6;6218:14;6215:34;;;6245:1;6242;6235:12;6215:34;6283:6;6272:9;6268:22;6258:32;;6328:7;6321:4;6317:2;6313:13;6309:27;6299:55;;6350:1;6347;6340:12;6299:55;6386:2;6373:16;6408:2;6404;6401:10;6398:36;;;6414:18;;:::i;:::-;6460:2;6457:1;6453:10;6443:20;;6483:28;6507:2;6503;6499:11;6483:28;:::i;:::-;6545:15;;;6615:11;;;6611:20;;;6576:12;;;;6643:19;;;6640:39;;;6675:1;6672;6665:12;6640:39;6699:11;;;;6719:217;6735:6;6730:3;6727:15;6719:217;;;6815:3;6802:17;6789:30;;6832:31;6857:5;6832:31;:::i;:::-;6876:18;;;6752:12;;;;6914;;;;6719:217;;;6955:5;5945:1021;-1:-1:-1;;;;;;;;5945:1021:134:o;6971:220::-;7120:2;7109:9;7102:21;7083:4;7140:45;7181:2;7170:9;7166:18;7158:6;7140:45;:::i;7196:893::-;7325:6;7333;7341;7349;7357;7365;7418:3;7406:9;7397:7;7393:23;7389:33;7386:53;;;7435:1;7432;7425:12;7386:53;7474:9;7461:23;7493:31;7518:5;7493:31;:::i;:::-;7543:5;-1:-1:-1;7600:2:134;7585:18;;7572:32;7613:33;7572:32;7613:33;:::i;:::-;7665:7;-1:-1:-1;7719:2:134;7704:18;;7691:32;;-1:-1:-1;7774:2:134;7759:18;;7746:32;7801:18;7790:30;;7787:50;;;7833:1;7830;7823:12;7787:50;7856;7898:7;7889:6;7878:9;7874:22;7856:50;:::i;:::-;7846:60;;;7953:3;7942:9;7938:19;7925:33;7915:43;;8010:3;7999:9;7995:19;7982:33;8024;8049:7;8024:33;:::i;:::-;8076:7;8066:17;;;7196:893;;;;;;;;:::o;8094:277::-;8161:6;8214:2;8202:9;8193:7;8189:23;8185:32;8182:52;;;8230:1;8227;8220:12;8182:52;8262:9;8256:16;8315:5;8308:13;8301:21;8294:5;8291:32;8281:60;;8337:1;8334;8327:12;8655:127;8716:10;8711:3;8707:20;8704:1;8697:31;8747:4;8744:1;8737:15;8771:4;8768:1;8761:15;8787:127;8848:10;8843:3;8839:20;8836:1;8829:31;8879:4;8876:1;8869:15;8903:4;8900:1;8893:15;8919:135;8958:3;8979:17;;;8976:43;;8999:18;;:::i;:::-;-1:-1:-1;9046:1:134;9035:13;;8919:135::o;9059:337::-;9261:2;9243:21;;;9300:2;9280:18;;;9273:30;-1:-1:-1;;;9334:2:134;9319:18;;9312:43;9387:2;9372:18;;9059:337::o;9401:380::-;9480:1;9476:12;;;;9523;;;9544:61;;9598:4;9590:6;9586:17;9576:27;;9544:61;9651:2;9643:6;9640:14;9620:18;9617:38;9614:161;;9697:10;9692:3;9688:20;9685:1;9678:31;9732:4;9729:1;9722:15;9760:4;9757:1;9750:15;9614:161;;9401:380;;;:::o;10594:844::-;10724:3;10753:1;10786:6;10780:13;10816:36;10842:9;10816:36;:::i;:::-;10871:1;10888:18;;;10915:133;;;;11062:1;11057:356;;;;10881:532;;10915:133;-1:-1:-1;;10948:24:134;;10936:37;;11021:14;;11014:22;11002:35;;10993:45;;;-1:-1:-1;10915:133:134;;11057:356;11088:6;11085:1;11078:17;11118:4;11163:2;11160:1;11150:16;11188:1;11202:165;11216:6;11213:1;11210:13;11202:165;;;11294:14;;11281:11;;;11274:35;11337:16;;;;11231:10;;11202:165;;;11206:3;;;11396:6;11391:3;11387:16;11380:23;;10881:532;-1:-1:-1;11429:3:134;;10594:844;-1:-1:-1;;;;;;10594:844:134:o;11443:251::-;11513:6;11566:2;11554:9;11545:7;11541:23;11537:32;11534:52;;;11582:1;11579;11572:12;11534:52;11614:9;11608:16;11633:31;11658:5;11633:31;:::i;11699:184::-;11769:6;11822:2;11810:9;11801:7;11797:23;11793:32;11790:52;;;11838:1;11835;11828:12;11790:52;-1:-1:-1;11861:16:134;;11699:184;-1:-1:-1;11699:184:134:o;14222:545::-;14324:2;14319:3;14316:11;14313:448;;;14360:1;14385:5;14381:2;14374:17;14430:4;14426:2;14416:19;14500:2;14488:10;14484:19;14481:1;14477:27;14471:4;14467:38;14536:4;14524:10;14521:20;14518:47;;;-1:-1:-1;14559:4:134;14518:47;14614:2;14609:3;14605:12;14602:1;14598:20;14592:4;14588:31;14578:41;;14669:82;14687:2;14680:5;14677:13;14669:82;;;14732:17;;;14713:1;14702:13;14669:82;;;14673:3;;;14313:448;14222:545;;;:::o;14943:1355::-;15069:3;15063:10;15096:18;15088:6;15085:30;15082:56;;;15118:18;;:::i;:::-;15147:97;15237:6;15197:38;15229:4;15223:11;15197:38;:::i;:::-;15191:4;15147:97;:::i;:::-;15299:4;;15363:2;15352:14;;15380:1;15375:666;;;;16085:1;16102:6;16099:89;;;-1:-1:-1;16154:19:134;;;16148:26;16099:89;-1:-1:-1;;14900:1:134;14896:11;;;14892:24;14888:29;14878:40;14924:1;14920:11;;;14875:57;16201:81;;15345:947;;15375:666;10541:1;10534:14;;;10578:4;10565:18;;-1:-1:-1;;15411:20:134;;;15532:236;15546:7;15543:1;15540:14;15532:236;;;15635:19;;;15629:26;15614:42;;15727:27;;;;15695:1;15683:14;;;;15562:19;;15532:236;;;15536:3;15796:6;15787:7;15784:19;15781:201;;;15857:19;;;15851:26;-1:-1:-1;;15940:1:134;15936:14;;;15952:3;15932:24;15928:37;15924:42;15909:58;15894:74;;15781:201;-1:-1:-1;;;;;16028:1:134;16012:14;;;16008:22;15995:36;;-1:-1:-1;14943:1355:134:o;16648:128::-;16715:9;;;16736:11;;;16733:37;;;16750:18;;:::i;16781:1010::-;16885:6;16916:2;16959;16947:9;16938:7;16934:23;16930:32;16927:52;;;16975:1;16972;16965:12;16927:52;17008:9;17002:16;17037:18;17078:2;17070:6;17067:14;17064:34;;;17094:1;17091;17084:12;17064:34;17117:22;;;;17173:4;17155:16;;;17151:27;17148:47;;;17191:1;17188;17181:12;17148:47;17217:22;;:::i;:::-;17270:2;17264:9;17298:2;17288:8;17285:16;17282:36;;;17314:1;17311;17304:12;17282:36;17337:17;;;-1:-1:-1;17385:4:134;17377:13;;17373:27;-1:-1:-1;17363:55:134;;17414:1;17411;17404:12;17363:55;17443:2;17437:9;17468:49;17484:32;17513:2;17484:32;:::i;17468:49::-;17540:2;17533:5;17526:17;17580:7;17575:2;17570;17566;17562:11;17558:20;17555:33;17552:53;;;17601:1;17598;17591:12;17552:53;17614:67;17678:2;17673;17666:5;17662:14;17657:2;17653;17649:11;17614:67;:::i;:::-;17690:20;;-1:-1:-1;17748:11:134;;;17742:18;17726:14;;;17719:42;;;;17697:5;16781:1010;-1:-1:-1;;;;16781:1010:134:o;18484:127::-;18545:10;18540:3;18536:20;18533:1;18526:31;18576:4;18573:1;18566:15;18600:4;18597:1;18590:15", "linkReferences": {} }, "methodIdentifiers": { + "CONVICTION()": "9023ef95", + "GROWTH()": "84e4dbb9", + "PERFORMANCE()": "a2bb6f48", + "REPUTATION()": "67d48f66", + "SIZE()": "bdffd282", "activateModule(uint256)": "69130c8d", "addAdmin(address)": "70480275", "addAdmins(address[])": "9c54df64", "addURL(string)": "d103449c", "admins(uint256)": "14bfd6d0", + "archetype()": "0e4b2285", "beacon()": "59659e90", "canJoin(address,uint256)": "03ffe330", "deployer()": "d5f39488", @@ -649,11 +825,14 @@ "pluginRegistry()": "41dcea91", "removeAdmin(address)": "1785f53c", "removeURL(string)": "810e8c04", + "setArchetype(uint8)": "7fbaa03b", "setCommitment(uint256)": "be9cd052", "setMetadataUri(string)": "1130630c", - "setOnboardingStrategy(address)": "b5a8a3a1" + "setOnboardingStrategy(address)": "b5a8a3a1", + "setWeightFor(uint8,uint256)": "72d4d23d", + "weightFor(uint8)": "f619e183" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"AdminMemberAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"AdminMemberRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"CommitmentSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"MarketSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MemberAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"MetadataUriUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"ModuleActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"UrlAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"UrlRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"activateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"adminAddr\",\"type\":\"address[]\"}],\"name\":\"addAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"addURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"admins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAutIDAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommitment\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getURLs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"contract IAutID\",\"name\":\"_autAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_market\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_metadata\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_commitment\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_pluginRegistry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"isModuleActivated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_url\",\"type\":\"string\"}],\"name\":\"isURLListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMember\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"market\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"members\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onboardingAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"removeURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commitment\",\"type\":\"uint256\"}],\"name\":\"setCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"setMetadataUri\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onboardingPlugin\",\"type\":\"address\"}],\"name\":\"setOnboardingStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"addAdmin(address)\":{\"params\":{\"member\":\"address to add as member.\"}},\"getAllMembers()\":{\"details\":\"checks if the member is a part of a DAO\",\"returns\":{\"_0\":\"true if they're a member, false otherwise\"}},\"getURLs()\":{\"details\":\"returns an array with all the listed urls\",\"returns\":{\"_0\":\"returns all the urls listed for the DAO\"}},\"initialize(address,address,uint256,string,uint256,address)\":{\"details\":\"all parameters are required.\",\"params\":{\"_autAddr\":\"the address of the DAOTypes.sol contract\",\"_commitment\":\"minimum commitment that the DAO requires\",\"_deployer\":\"the address of the DAOTypes.sol contract\",\"_market\":\"one of the 3 markets\",\"_metadata\":\"url with metadata of the DAO - name, description, logo\"}},\"isURLListed(string)\":{\"details\":\"a checker if a url has been listed for this DAO\",\"params\":{\"_url\":\"the url that will be listed\"},\"returns\":{\"_0\":\"true if listed, false otherwise\"}},\"join(address,uint256)\":{\"details\":\"role not used\"}},\"title\":\"Nova\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addAdmin(address)\":{\"notice\":\"Adminsadds admins provided a member address. Plugins do not have to be members.\"},\"admins(uint256)\":{\"notice\":\"all the admin members\"},\"getAllMembers()\":{\"notice\":\"Checks if the passed member is a part of the original DAO contract depending on it's implementation of membership\"},\"getURLs()\":{\"notice\":\"The listed URLs are the only ones that can be used for the DAuth\"},\"initialize(address,address,uint256,string,uint256,address)\":{\"notice\":\"Sets the initial details of the DAO\"},\"isAdmin(address)\":{\"notice\":\"mapping with the admin members\"},\"isURLListed(string)\":{\"notice\":\"The listed URLs are the only ones that can be used for the DAuth\"}},\"notice\":\"@dev\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/nova/Nova.sol\":\"Nova\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArchetypeAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongParameter\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"AdminMemberAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"AdminMemberRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ArchetypeWeightSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"CommitmentSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"MainArchetypeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"MarketSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MemberAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"MetadataUriUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"ModuleActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"UrlAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"UrlRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONVICTION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GROWTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERFORMANCE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REPUTATION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIZE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"activateModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"adminAddr\",\"type\":\"address[]\"}],\"name\":\"addAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"addURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"admins\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"archetype\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdmins\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAutIDAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommitment\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getURLs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"contract IAutID\",\"name\":\"_autAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_market\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_metadata\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_commitment\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_pluginRegistry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"moduleId\",\"type\":\"uint256\"}],\"name\":\"isModuleActivated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_url\",\"type\":\"string\"}],\"name\":\"isURLListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMember\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"role\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"market\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"members\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onboardingAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"removeURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"parameter\",\"type\":\"uint8\"}],\"name\":\"setArchetype\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commitment\",\"type\":\"uint256\"}],\"name\":\"setCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"}],\"name\":\"setMetadataUri\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onboardingPlugin\",\"type\":\"address\"}],\"name\":\"setOnboardingStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"parameter\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setWeightFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"weightFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"addAdmin(address)\":{\"params\":{\"member\":\"address to add as member.\"}},\"getAllMembers()\":{\"details\":\"checks if the member is a part of a DAO\",\"returns\":{\"_0\":\"true if they're a member, false otherwise\"}},\"getURLs()\":{\"details\":\"returns an array with all the listed urls\",\"returns\":{\"_0\":\"returns all the urls listed for the DAO\"}},\"initialize(address,address,uint256,string,uint256,address)\":{\"details\":\"all parameters are required.\",\"params\":{\"_autAddr\":\"the address of the DAOTypes.sol contract\",\"_commitment\":\"minimum commitment that the DAO requires\",\"_deployer\":\"the address of the DAOTypes.sol contract\",\"_market\":\"one of the 3 markets\",\"_metadata\":\"url with metadata of the DAO - name, description, logo\"}},\"isURLListed(string)\":{\"details\":\"a checker if a url has been listed for this DAO\",\"params\":{\"_url\":\"the url that will be listed\"},\"returns\":{\"_0\":\"true if listed, false otherwise\"}},\"join(address,uint256)\":{\"details\":\"role not used\"},\"setArchetype(uint8)\":{\"details\":\"set an archetype (for example, Growth or Performance)\"},\"setWeightFor(uint8,uint256)\":{\"details\":\"set weight for the parameter (for example, Growth or Size)\"}},\"title\":\"Nova\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addAdmin(address)\":{\"notice\":\"Adminsadds admins provided a member address. Plugins do not have to be members.\"},\"admins(uint256)\":{\"notice\":\"all the admin members\"},\"getAllMembers()\":{\"notice\":\"Checks if the passed member is a part of the original DAO contract depending on it's implementation of membership\"},\"getURLs()\":{\"notice\":\"The listed URLs are the only ones that can be used for the DAuth\"},\"initialize(address,address,uint256,string,uint256,address)\":{\"notice\":\"Sets the initial details of the DAO\"},\"isAdmin(address)\":{\"notice\":\"mapping with the admin members\"},\"isURLListed(string)\":{\"notice\":\"The listed URLs are the only ones that can be used for the DAuth\"}},\"notice\":\"@dev\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/nova/Nova.sol\":\"Nova\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -661,6 +840,16 @@ "language": "Solidity", "output": { "abi": [ + { + "inputs": [], + "type": "error", + "name": "ArchetypeAlreadySet" + }, + { + "inputs": [], + "type": "error", + "name": "WrongParameter" + }, { "inputs": [ { @@ -687,6 +876,25 @@ "name": "AdminMemberRemoved", "anonymous": false }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8", + "indexed": false + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "ArchetypeWeightSet", + "anonymous": false + }, { "inputs": [ { @@ -713,6 +921,19 @@ "name": "Initialized", "anonymous": false }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8", + "indexed": false + } + ], + "type": "event", + "name": "MainArchetypeSet", + "anonymous": false + }, { "inputs": [ { @@ -784,6 +1005,71 @@ "name": "UrlRemoved", "anonymous": false }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "CONVICTION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "GROWTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "PERFORMANCE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "REPUTATION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SIZE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, { "inputs": [ { @@ -858,6 +1144,19 @@ } ] }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "archetype", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, { "inputs": [], "stateMutability": "view", @@ -1224,6 +1523,18 @@ "type": "function", "name": "removeURL" }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "parameter", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setArchetype" + }, { "inputs": [ { @@ -1259,6 +1570,42 @@ "stateMutability": "nonpayable", "type": "function", "name": "setOnboardingStrategy" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "parameter", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setWeightFor" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function", + "name": "weightFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] } ], "devdoc": { @@ -1302,6 +1649,12 @@ }, "join(address,uint256)": { "details": "role not used" + }, + "setArchetype(uint8)": { + "details": "set an archetype (for example, Growth or Performance)" + }, + "setWeightFor(uint8,uint256)": { + "details": "set weight for the parameter (for example, Growth or Size)" } }, "version": 1 @@ -1372,6 +1725,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1436,6 +1797,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1525,10 +1894,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1601,106 +1970,112 @@ }, "ast": { "absolutePath": "contracts/nova/Nova.sol", - "id": 7376, + "id": 5692, "exportedSymbols": { "AddressUpgradeable": [ - 58940 + 56931 ], "AutIDAddress": [ - 3009 + 2973 ], "IAutID": [ 1194 ], "IAutIDAddress": [ - 4476 + 3889 ], "IERC165Upgradeable": [ - 59264 + 57255 ], "IERC721Upgradeable": [ - 58525 + 56516 ], "IModule": [ - 6466 + 4754 ], "IModuleRegistry": [ - 6730 + 5018 ], "INova": [ - 8108 + 6424 ], "INovaAdmin": [ - 4493 + 3906 ], "INovaAdminSet": [ - 4659 + 4072 + ], + "INovaArchetype": [ + 3935 ], "INovaCommitment": [ - 4531 + 3944 ], "INovaMarket": [ - 4540 + 3953 ], "INovaMembership": [ - 4566 + 3979 ], "INovaMembershipSet": [ - 4705 + 4094 ], "INovaMetadata": [ - 4575 + 3988 ], "INovaModules": [ - 4600 + 4013 ], "INovaUrls": [ - 4619 + 4032 ], "IPluginRegistry": [ - 11258 + 9574 ], "Initializable": [ - 57499 + 55490 ], "Nova": [ - 7375 + 5691 + ], + "NovaArchetype": [ + 3064 ], "NovaCommitment": [ - 3153 + 3117 ], "NovaMarket": [ - 3198 + 3162 ], "NovaMembers": [ - 3500 + 3464 ], "NovaMetadata": [ - 3545 + 3509 ], "NovaModules": [ - 3674 + 3638 ], "NovaUpgradeable": [ - 7886 + 6202 ], "NovaUrls": [ - 4467 + 3880 ], "OnboardingModule": [ - 6497 + 4785 ], "StorageSlot": [ - 62244 + 59546 ] }, "nodeType": "SourceUnit", - "src": "31:3349:65", + "src": "31:3767:43", "nodes": [ { - "id": 7100, + "id": 5388, "nodeType": "PragmaDirective", - "src": "31:23:65", + "src": "31:23:43", "nodes": [], "literals": [ "solidity", @@ -1709,150 +2084,163 @@ ] }, { - "id": 7101, + "id": 5389, "nodeType": "ImportDirective", - "src": "56:46:65", + "src": "56:46:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaUrls.sol", "file": "../components/abstracts/NovaUrls.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 4468, + "scope": 5692, + "sourceUnit": 3881, "symbolAliases": [], "unitAlias": "" }, { - "id": 7102, + "id": 5390, "nodeType": "ImportDirective", - "src": "103:48:65", + "src": "103:48:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMarket.sol", "file": "../components/abstracts/NovaMarket.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3199, + "scope": 5692, + "sourceUnit": 3163, "symbolAliases": [], "unitAlias": "" }, { - "id": 7103, + "id": 5391, "nodeType": "ImportDirective", - "src": "152:49:65", + "src": "152:49:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMembers.sol", "file": "../components/abstracts/NovaMembers.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3501, + "scope": 5692, + "sourceUnit": 3465, "symbolAliases": [], "unitAlias": "" }, { - "id": 7104, + "id": 5392, "nodeType": "ImportDirective", - "src": "202:49:65", + "src": "202:49:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaModules.sol", "file": "../components/abstracts/NovaModules.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3675, + "scope": 5692, + "sourceUnit": 3639, "symbolAliases": [], "unitAlias": "" }, { - "id": 7105, + "id": 5393, "nodeType": "ImportDirective", - "src": "252:50:65", + "src": "252:50:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaMetadata.sol", "file": "../components/abstracts/NovaMetadata.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3546, + "scope": 5692, + "sourceUnit": 3510, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 5394, + "nodeType": "ImportDirective", + "src": "303:51:43", + "nodes": [], + "absolutePath": "contracts/components/abstracts/NovaArchetype.sol", + "file": "../components/abstracts/NovaArchetype.sol", + "nameLocation": "-1:-1:-1", + "scope": 5692, + "sourceUnit": 3065, "symbolAliases": [], "unitAlias": "" }, { - "id": 7106, + "id": 5395, "nodeType": "ImportDirective", - "src": "303:50:65", + "src": "355:50:43", "nodes": [], "absolutePath": "contracts/components/abstracts/AutIDAddress.sol", "file": "../components/abstracts/AutIDAddress.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3010, + "scope": 5692, + "sourceUnit": 2974, "symbolAliases": [], "unitAlias": "" }, { - "id": 7107, + "id": 5396, "nodeType": "ImportDirective", - "src": "354:52:65", + "src": "406:52:43", "nodes": [], "absolutePath": "contracts/components/abstracts/NovaCommitment.sol", "file": "../components/abstracts/NovaCommitment.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 3154, + "scope": 5692, + "sourceUnit": 3118, "symbolAliases": [], "unitAlias": "" }, { - "id": 7108, + "id": 5397, "nodeType": "ImportDirective", - "src": "407:31:65", + "src": "459:31:43", "nodes": [], "absolutePath": "contracts/nova/NovaUpgradeable.sol", "file": "./NovaUpgradeable.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 7887, + "scope": 5692, + "sourceUnit": 6203, "symbolAliases": [], "unitAlias": "" }, { - "id": 7109, + "id": 5398, "nodeType": "ImportDirective", - "src": "440:52:65", + "src": "492:52:43", "nodes": [], "absolutePath": "contracts/modules/onboarding/OnboardingModule.sol", "file": "../modules/onboarding/OnboardingModule.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 6498, + "scope": 5692, + "sourceUnit": 4786, "symbolAliases": [], "unitAlias": "" }, { - "id": 7110, + "id": 5399, "nodeType": "ImportDirective", - "src": "493:32:65", + "src": "545:32:43", "nodes": [], "absolutePath": "contracts/nova/interfaces/INova.sol", "file": "./interfaces/INova.sol", "nameLocation": "-1:-1:-1", - "scope": 7376, - "sourceUnit": 8109, + "scope": 5692, + "sourceUnit": 6425, "symbolAliases": [], "unitAlias": "" }, { - "id": 7375, + "id": 5691, "nodeType": "ContractDefinition", - "src": "564:2815:65", + "src": "616:3181:43", "nodes": [ { - "id": 7129, + "id": 5420, "nodeType": "VariableDeclaration", - "src": "681:30:65", + "src": "748:30:43", "nodes": [], "constant": false, "mutability": "mutable", "name": "__basesGap", - "nameLocation": "701:10:65", - "scope": 7375, + "nameLocation": "768:10:43", + "scope": 5691, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1861,26 +2249,26 @@ }, "typeName": { "baseType": { - "id": 7126, + "id": 5417, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "681:7:65", + "src": "748:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 7128, + "id": 5419, "length": { "hexValue": "3530", - "id": 7127, + "id": 5418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "689:2:65", + "src": "756:2:43", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" @@ -1888,7 +2276,7 @@ "value": "50" }, "nodeType": "ArrayTypeName", - "src": "681:11:65", + "src": "748:11:43", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]" @@ -1897,16 +2285,16 @@ "visibility": "private" }, { - "id": 7131, + "id": 5422, "nodeType": "VariableDeclaration", - "src": "718:23:65", + "src": "785:23:43", "nodes": [], "constant": false, "functionSelector": "d5f39488", "mutability": "mutable", "name": "deployer", - "nameLocation": "733:8:65", - "scope": 7375, + "nameLocation": "800:8:43", + "scope": 5691, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1914,10 +2302,10 @@ "typeString": "address" }, "typeName": { - "id": 7130, + "id": 5421, "name": "address", "nodeType": "ElementaryTypeName", - "src": "718:7:65", + "src": "785:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1927,16 +2315,16 @@ "visibility": "public" }, { - "id": 7133, + "id": 5424, "nodeType": "VariableDeclaration", - "src": "747:29:65", + "src": "814:29:43", "nodes": [], "constant": false, "functionSelector": "8307bd24", "mutability": "mutable", "name": "onboardingAddr", - "nameLocation": "762:14:65", - "scope": 7375, + "nameLocation": "829:14:43", + "scope": 5691, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1944,10 +2332,10 @@ "typeString": "address" }, "typeName": { - "id": 7132, + "id": 5423, "name": "address", "nodeType": "ElementaryTypeName", - "src": "747:7:65", + "src": "814:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1957,30 +2345,30 @@ "visibility": "public" }, { - "id": 7189, + "id": 5480, "nodeType": "FunctionDefinition", - "src": "1200:506:65", + "src": "1267:506:43", "nodes": [], "body": { - "id": 7188, + "id": 5479, "nodeType": "Block", - "src": "1419:287:65", + "src": "1486:287:43", "nodes": [], "statements": [ { "expression": { - "id": 7154, + "id": 5445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7152, + "id": 5443, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, - "src": "1429:8:65", + "referencedDeclaration": 5422, + "src": "1496:8:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1989,55 +2377,55 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 7153, + "id": 5444, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7136, - "src": "1440:9:65", + "referencedDeclaration": 5427, + "src": "1507:9:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1429:20:65", + "src": "1496:20:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7155, + "id": 5446, "nodeType": "ExpressionStatement", - "src": "1429:20:65" + "src": "1496:20:43" }, { "expression": { - "id": 7160, + "id": 5451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 7156, + "id": 5447, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "1459:7:65", + "referencedDeclaration": 3200, + "src": "1526:7:43", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 7158, + "id": 5449, "indexExpression": { - "id": 7157, + "id": 5448, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7136, - "src": "1467:9:65", + "referencedDeclaration": 5427, + "src": "1534:9:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2048,7 +2436,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1459:18:65", + "src": "1526:18:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2058,40 +2446,40 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 7159, + "id": 5450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1480:4:65", + "src": "1547:4:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "1459:25:65", + "src": "1526:25:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7161, + "id": 5452, "nodeType": "ExpressionStatement", - "src": "1459:25:65" + "src": "1526:25:43" }, { "expression": { "arguments": [ { - "id": 7165, + "id": 5456, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7136, - "src": "1506:9:65", + "referencedDeclaration": 5427, + "src": "1573:9:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2106,32 +2494,32 @@ } ], "expression": { - "id": 7162, + "id": 5453, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "1494:6:65", + "referencedDeclaration": 3194, + "src": "1561:6:43", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 7164, + "id": 5455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1501:4:65", + "memberLocation": "1568:4:43", "memberName": "push", "nodeType": "MemberAccess", - "src": "1494:11:65", + "src": "1561:11:43", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 7166, + "id": 5457, "isConstant": false, "isLValue": false, "isPure": false, @@ -2140,27 +2528,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1494:22:65", + "src": "1561:22:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7167, + "id": 5458, "nodeType": "ExpressionStatement", - "src": "1494:22:65" + "src": "1561:22:43" }, { "expression": { "arguments": [ { - "id": 7169, + "id": 5460, "name": "_market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7141, - "src": "1537:7:65", + "referencedDeclaration": 5432, + "src": "1604:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2174,18 +2562,18 @@ "typeString": "uint256" } ], - "id": 7168, + "id": 5459, "name": "_setMarket", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "1526:10:65", + "referencedDeclaration": 3155, + "src": "1593:10:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 7170, + "id": 5461, "isConstant": false, "isLValue": false, "isPure": false, @@ -2194,27 +2582,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1526:19:65", + "src": "1593:19:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7171, + "id": 5462, "nodeType": "ExpressionStatement", - "src": "1526:19:65" + "src": "1593:19:43" }, { "expression": { "arguments": [ { - "id": 7173, + "id": 5464, "name": "_autAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7139, - "src": "1572:8:65", + "referencedDeclaration": 5430, + "src": "1639:8:43", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -2228,18 +2616,18 @@ "typeString": "contract IAutID" } ], - "id": 7172, + "id": 5463, "name": "_setAutIDAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3002, - "src": "1555:16:65", + "referencedDeclaration": 2966, + "src": "1622:16:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IAutID_$1194_$returns$__$", "typeString": "function (contract IAutID)" } }, - "id": 7174, + "id": 5465, "isConstant": false, "isLValue": false, "isPure": false, @@ -2248,27 +2636,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1555:26:65", + "src": "1622:26:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7175, + "id": 5466, "nodeType": "ExpressionStatement", - "src": "1555:26:65" + "src": "1622:26:43" }, { "expression": { "arguments": [ { - "id": 7177, + "id": 5468, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7145, - "src": "1606:11:65", + "referencedDeclaration": 5436, + "src": "1673:11:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2282,18 +2670,18 @@ "typeString": "uint256" } ], - "id": 7176, + "id": 5467, "name": "_setCommitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3137, - "src": "1591:14:65", + "referencedDeclaration": 3101, + "src": "1658:14:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 7178, + "id": 5469, "isConstant": false, "isLValue": false, "isPure": false, @@ -2302,27 +2690,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1591:27:65", + "src": "1658:27:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7179, + "id": 5470, "nodeType": "ExpressionStatement", - "src": "1591:27:65" + "src": "1658:27:43" }, { "expression": { "arguments": [ { - "id": 7181, + "id": 5472, "name": "_metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7143, - "src": "1644:9:65", + "referencedDeclaration": 5434, + "src": "1711:9:43", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2336,18 +2724,18 @@ "typeString": "string memory" } ], - "id": 7180, + "id": 5471, "name": "_setMetadataUri", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3538, - "src": "1628:15:65", + "referencedDeclaration": 3502, + "src": "1695:15:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 7182, + "id": 5473, "isConstant": false, "isLValue": false, "isPure": false, @@ -2356,27 +2744,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1628:26:65", + "src": "1695:26:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7183, + "id": 5474, "nodeType": "ExpressionStatement", - "src": "1628:26:65" + "src": "1695:26:43" }, { "expression": { "arguments": [ { - "id": 7185, + "id": 5476, "name": "_pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7147, - "src": "1683:15:65", + "referencedDeclaration": 5438, + "src": "1750:15:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2390,18 +2778,18 @@ "typeString": "address" } ], - "id": 7184, + "id": 5475, "name": "_setPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3594, - "src": "1664:18:65", + "referencedDeclaration": 3558, + "src": "1731:18:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 7186, + "id": 5477, "isConstant": false, "isLValue": false, "isPure": false, @@ -2410,23 +2798,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1664:35:65", + "src": "1731:35:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7187, + "id": 5478, "nodeType": "ExpressionStatement", - "src": "1664:35:65" + "src": "1731:35:43" } ] }, "documentation": { - "id": 7134, + "id": 5425, "nodeType": "StructuredDocumentation", - "src": "783:412:65", + "src": "850:412:43", "text": "@notice Sets the initial details of the DAO\n @dev all parameters are required.\n @param _deployer the address of the DAOTypes.sol contract\n @param _autAddr the address of the DAOTypes.sol contract\n @param _market one of the 3 markets\n @param _metadata url with metadata of the DAO - name, description, logo\n @param _commitment minimum commitment that the DAO requires" }, "functionSelector": "dbba0d5c", @@ -2434,37 +2822,37 @@ "kind": "function", "modifiers": [ { - "id": 7150, + "id": 5441, "kind": "modifierInvocation", "modifierName": { - "id": 7149, + "id": 5440, "name": "initializer", "nameLocations": [ - "1407:11:65" + "1474:11:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 57419, - "src": "1407:11:65" + "referencedDeclaration": 55410, + "src": "1474:11:43" }, "nodeType": "ModifierInvocation", - "src": "1407:11:65" + "src": "1474:11:43" } ], "name": "initialize", - "nameLocation": "1209:10:65", + "nameLocation": "1276:10:43", "parameters": { - "id": 7148, + "id": 5439, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7136, + "id": 5427, "mutability": "mutable", "name": "_deployer", - "nameLocation": "1237:9:65", + "nameLocation": "1304:9:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1229:17:65", + "scope": 5480, + "src": "1296:17:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2472,10 +2860,10 @@ "typeString": "address" }, "typeName": { - "id": 7135, + "id": 5426, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1229:7:65", + "src": "1296:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2486,13 +2874,13 @@ }, { "constant": false, - "id": 7139, + "id": 5430, "mutability": "mutable", "name": "_autAddr", - "nameLocation": "1263:8:65", + "nameLocation": "1330:8:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1256:15:65", + "scope": 5480, + "src": "1323:15:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2500,20 +2888,20 @@ "typeString": "contract IAutID" }, "typeName": { - "id": 7138, + "id": 5429, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 7137, + "id": 5428, "name": "IAutID", "nameLocations": [ - "1256:6:65" + "1323:6:43" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1194, - "src": "1256:6:65" + "src": "1323:6:43" }, "referencedDeclaration": 1194, - "src": "1256:6:65", + "src": "1323:6:43", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" @@ -2523,13 +2911,13 @@ }, { "constant": false, - "id": 7141, + "id": 5432, "mutability": "mutable", "name": "_market", - "nameLocation": "1289:7:65", + "nameLocation": "1356:7:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1281:15:65", + "scope": 5480, + "src": "1348:15:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2537,10 +2925,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7140, + "id": 5431, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1281:7:65", + "src": "1348:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2550,13 +2938,13 @@ }, { "constant": false, - "id": 7143, + "id": 5434, "mutability": "mutable", "name": "_metadata", - "nameLocation": "1320:9:65", + "nameLocation": "1387:9:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1306:23:65", + "scope": 5480, + "src": "1373:23:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2564,10 +2952,10 @@ "typeString": "string" }, "typeName": { - "id": 7142, + "id": 5433, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1306:6:65", + "src": "1373:6:43", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2577,13 +2965,13 @@ }, { "constant": false, - "id": 7145, + "id": 5436, "mutability": "mutable", "name": "_commitment", - "nameLocation": "1347:11:65", + "nameLocation": "1414:11:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1339:19:65", + "scope": 5480, + "src": "1406:19:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2591,10 +2979,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7144, + "id": 5435, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1339:7:65", + "src": "1406:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2604,13 +2992,13 @@ }, { "constant": false, - "id": 7147, + "id": 5438, "mutability": "mutable", "name": "_pluginRegistry", - "nameLocation": "1376:15:65", + "nameLocation": "1443:15:43", "nodeType": "VariableDeclaration", - "scope": 7189, - "src": "1368:23:65", + "scope": 5480, + "src": "1435:23:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2618,10 +3006,10 @@ "typeString": "address" }, "typeName": { - "id": 7146, + "id": 5437, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1368:7:65", + "src": "1435:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2631,28 +3019,28 @@ "visibility": "internal" } ], - "src": "1219:178:65" + "src": "1286:178:43" }, "returnParameters": { - "id": 7151, + "id": 5442, "nodeType": "ParameterList", "parameters": [], - "src": "1419:0:65" + "src": "1486:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7216, + "id": 5507, "nodeType": "FunctionDefinition", - "src": "1712:180:65", + "src": "1779:180:43", "nodes": [], "body": { - "id": 7215, + "id": 5506, "nodeType": "Block", - "src": "1785:107:65", + "src": "1852:107:43", "nodes": [], "statements": [ { @@ -2661,24 +3049,24 @@ { "arguments": [ { - "id": 7202, + "id": 5493, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7191, - "src": "1816:9:65", + "referencedDeclaration": 5482, + "src": "1883:9:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 7203, + "id": 5494, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "1827:4:65", + "referencedDeclaration": 5484, + "src": "1894:4:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2697,33 +3085,33 @@ } ], "expression": { - "id": 7200, + "id": 5491, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "1803:4:65", + "src": "1870:4:43", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$7375", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } }, - "id": 7201, + "id": 5492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1808:7:65", + "memberLocation": "1875:7:43", "memberName": "canJoin", "nodeType": "MemberAccess", - "referencedDeclaration": 7368, - "src": "1803:12:65", + "referencedDeclaration": 5659, + "src": "1870:12:43", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view external returns (bool)" } }, - "id": 7204, + "id": 5495, "isConstant": false, "isLValue": false, "isPure": false, @@ -2732,7 +3120,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1803:29:65", + "src": "1870:29:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2741,14 +3129,14 @@ }, { "hexValue": "6e6f7420616c6c6f776564", - "id": 7205, + "id": 5496, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1834:13:65", + "src": "1901:13:43", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5c0608e7a428ea07a0c4c9bb0791749812cfeb8bc4b0e031d134a099a0e13dcb", "typeString": "literal_string \"not allowed\"" @@ -2767,7 +3155,7 @@ "typeString": "literal_string \"not allowed\"" } ], - "id": 7199, + "id": 5490, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2775,13 +3163,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1795:7:65", + "src": "1862:7:43", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7206, + "id": 5497, "isConstant": false, "isLValue": false, "isPure": false, @@ -2790,39 +3178,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1795:53:65", + "src": "1862:53:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7207, + "id": 5498, "nodeType": "ExpressionStatement", - "src": "1795:53:65" + "src": "1862:53:43" }, { "expression": { "arguments": [ { - "id": 7211, + "id": 5502, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7191, - "src": "1869:9:65", + "referencedDeclaration": 5482, + "src": "1936:9:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 7212, + "id": 5503, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "1880:4:65", + "referencedDeclaration": 5484, + "src": "1947:4:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2841,33 +3229,33 @@ } ], "expression": { - "id": 7208, + "id": 5499, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1858:5:65", + "src": "1925:5:43", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_Nova_$7375_$", + "typeIdentifier": "t_type$_t_super$_Nova_$5691_$", "typeString": "type(contract super Nova)" } }, - "id": 7210, + "id": 5501, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1864:4:65", + "memberLocation": "1931:4:43", "memberName": "join", "nodeType": "MemberAccess", - "referencedDeclaration": 3284, - "src": "1858:10:65", + "referencedDeclaration": 3248, + "src": "1925:10:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 7213, + "id": 5504, "isConstant": false, "isLValue": false, "isPure": false, @@ -2876,64 +3264,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1858:27:65", + "src": "1925:27:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7214, + "id": 5505, "nodeType": "ExpressionStatement", - "src": "1858:27:65" + "src": "1925:27:43" } ] }, "baseFunctions": [ - 3284 + 3248 ], "functionSelector": "3b4da69f", "implemented": true, "kind": "function", "modifiers": [ { - "id": 7197, + "id": 5488, "kind": "modifierInvocation", "modifierName": { - "id": 7196, + "id": 5487, "name": "onlyAutID", "nameLocations": [ - "1775:9:65" + "1842:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 2977, - "src": "1775:9:65" + "referencedDeclaration": 2941, + "src": "1842:9:43" }, "nodeType": "ModifierInvocation", - "src": "1775:9:65" + "src": "1842:9:43" } ], "name": "join", - "nameLocation": "1721:4:65", + "nameLocation": "1788:4:43", "overrides": { - "id": 7195, + "id": 5486, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1766:8:65" + "src": "1833:8:43" }, "parameters": { - "id": 7194, + "id": 5485, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7191, + "id": 5482, "mutability": "mutable", "name": "newMember", - "nameLocation": "1734:9:65", + "nameLocation": "1801:9:43", "nodeType": "VariableDeclaration", - "scope": 7216, - "src": "1726:17:65", + "scope": 5507, + "src": "1793:17:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2941,10 +3329,10 @@ "typeString": "address" }, "typeName": { - "id": 7190, + "id": 5481, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1726:7:65", + "src": "1793:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2955,13 +3343,13 @@ }, { "constant": false, - "id": 7193, + "id": 5484, "mutability": "mutable", "name": "role", - "nameLocation": "1753:4:65", + "nameLocation": "1820:4:43", "nodeType": "VariableDeclaration", - "scope": 7216, - "src": "1745:12:65", + "scope": 5507, + "src": "1812:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2969,10 +3357,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7192, + "id": 5483, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1745:7:65", + "src": "1812:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2981,28 +3369,28 @@ "visibility": "internal" } ], - "src": "1725:33:65" + "src": "1792:33:43" }, "returnParameters": { - "id": 7198, + "id": 5489, "nodeType": "ParameterList", "parameters": [], - "src": "1785:0:65" + "src": "1852:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 7265, + "id": 5556, "nodeType": "FunctionDefinition", - "src": "1898:422:65", + "src": "1965:422:43", "nodes": [], "body": { - "id": 7264, + "id": 5555, "nodeType": "Block", - "src": "1962:358:65", + "src": "2029:358:43", "nodes": [], "statements": [ { @@ -3013,7 +3401,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7228, + "id": 5519, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,12 +3413,12 @@ "expression": { "arguments": [ { - "id": 7223, + "id": 5514, "name": "onboardingPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7218, - "src": "1988:16:65", + "referencedDeclaration": 5509, + "src": "2055:16:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,18 +3432,18 @@ "typeString": "address" } ], - "id": 7222, + "id": 5513, "name": "IModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6466, - "src": "1980:7:65", + "referencedDeclaration": 4754, + "src": "2047:7:43", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModule_$6466_$", + "typeIdentifier": "t_type$_t_contract$_IModule_$4754_$", "typeString": "type(contract IModule)" } }, - "id": 7224, + "id": 5515, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,29 +3452,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1980:25:65", + "src": "2047:25:43", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IModule_$6466", + "typeIdentifier": "t_contract$_IModule_$4754", "typeString": "contract IModule" } }, - "id": 7225, + "id": 5516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2006:8:65", + "memberLocation": "2073:8:43", "memberName": "moduleId", "nodeType": "MemberAccess", - "referencedDeclaration": 6454, - "src": "1980:34:65", + "referencedDeclaration": 4742, + "src": "2047:34:43", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 7226, + "id": 5517, "isConstant": false, "isLValue": false, "isPure": false, @@ -3095,7 +3483,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1980:36:65", + "src": "2047:36:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3106,21 +3494,21 @@ "operator": "==", "rightExpression": { "hexValue": "31", - "id": 7227, + "id": 5518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2020:1:65", + "src": "2087:1:43", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "1980:41:65", + "src": "2047:41:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3128,14 +3516,14 @@ }, { "hexValue": "4f6e6c79204f6e626f617264696e6720506c7567696e", - "id": 7229, + "id": 5520, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2023:24:65", + "src": "2090:24:43", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8ed92d6fdb3d1d1b35d6ba7d14a288cfa31fa52e6e35095c3c7bf557f72fc61f", "typeString": "literal_string \"Only Onboarding Plugin\"" @@ -3154,7 +3542,7 @@ "typeString": "literal_string \"Only Onboarding Plugin\"" } ], - "id": 7221, + "id": 5512, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3162,13 +3550,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1972:7:65", + "src": "2039:7:43", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7230, + "id": 5521, "isConstant": false, "isLValue": false, "isPure": false, @@ -3177,16 +3565,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1972:76:65", + "src": "2039:76:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7231, + "id": 5522, "nodeType": "ExpressionStatement", - "src": "1972:76:65" + "src": "2039:76:43" }, { "condition": { @@ -3194,18 +3582,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7237, + "id": 5528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7232, + "id": 5523, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "2063:14:65", + "referencedDeclaration": 5424, + "src": "2130:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3217,14 +3605,14 @@ "arguments": [ { "hexValue": "30", - "id": 7235, + "id": 5526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:65", + "src": "2156:1:43", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3239,26 +3627,26 @@ "typeString": "int_const 0" } ], - "id": 7234, + "id": 5525, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2081:7:65", + "src": "2148:7:43", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7233, + "id": 5524, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2081:7:65", + "src": "2148:7:43", "typeDescriptions": {} } }, - "id": 7236, + "id": 5527, "isConstant": false, "isLValue": false, "isPure": true, @@ -3267,23 +3655,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2081:10:65", + "src": "2148:10:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2063:28:65", + "src": "2130:28:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 7258, + "id": 5549, "nodeType": "Block", - "src": "2185:85:65", + "src": "2252:85:43", "statements": [ { "expression": { @@ -3292,26 +3680,26 @@ "arguments": [ { "expression": { - "id": 7252, + "id": 5543, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "2233:3:65", + "src": "2300:3:43", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7253, + "id": 5544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2237:6:65", + "memberLocation": "2304:6:43", "memberName": "sender", "nodeType": "MemberAccess", - "src": "2233:10:65", + "src": "2300:10:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3328,14 +3716,14 @@ "expression": { "arguments": [ { - "id": 7249, + "id": 5540, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "2219:4:65", + "src": "2286:4:43", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$7375", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } @@ -3343,22 +3731,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Nova_$7375", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } ], - "id": 7248, + "id": 5539, "name": "NovaMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3500, - "src": "2207:11:65", + "referencedDeclaration": 3464, + "src": "2274:11:43", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_NovaMembers_$3500_$", + "typeIdentifier": "t_type$_t_contract$_NovaMembers_$3464_$", "typeString": "type(contract NovaMembers)" } }, - "id": 7250, + "id": 5541, "isConstant": false, "isLValue": false, "isPure": false, @@ -3367,29 +3755,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2207:17:65", + "src": "2274:17:43", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaMembers_$3500", + "typeIdentifier": "t_contract$_NovaMembers_$3464", "typeString": "contract NovaMembers" } }, - "id": 7251, + "id": 5542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2225:7:65", + "memberLocation": "2292:7:43", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 3236, - "src": "2207:25:65", + "referencedDeclaration": 3200, + "src": "2274:25:43", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 7254, + "id": 5545, "isConstant": false, "isLValue": false, "isPure": false, @@ -3398,7 +3786,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2207:37:65", + "src": "2274:37:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3407,14 +3795,14 @@ }, { "hexValue": "4f6e6c792041646d696e", - "id": 7255, + "id": 5546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2246:12:65", + "src": "2313:12:43", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c13c296baebb1f79b18541a06c39b3d56ce1654fd26fe72a62e2fb7efe67be9a", "typeString": "literal_string \"Only Admin\"" @@ -3433,7 +3821,7 @@ "typeString": "literal_string \"Only Admin\"" } ], - "id": 7247, + "id": 5538, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3441,13 +3829,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2199:7:65", + "src": "2266:7:43", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7256, + "id": 5547, "isConstant": false, "isLValue": false, "isPure": false, @@ -3456,26 +3844,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2199:60:65", + "src": "2266:60:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7257, + "id": 5548, "nodeType": "ExpressionStatement", - "src": "2199:60:65" + "src": "2266:60:43" } ] }, - "id": 7259, + "id": 5550, "nodeType": "IfStatement", - "src": "2059:211:65", + "src": "2126:211:43", "trueBody": { - "id": 7246, + "id": 5537, "nodeType": "Block", - "src": "2093:86:65", + "src": "2160:86:43", "statements": [ { "expression": { @@ -3485,33 +3873,33 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7242, + "id": 5533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 7239, + "id": 5530, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "2115:3:65", + "src": "2182:3:43", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7240, + "id": 5531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2119:6:65", + "memberLocation": "2186:6:43", "memberName": "sender", "nodeType": "MemberAccess", - "src": "2115:10:65", + "src": "2182:10:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3520,18 +3908,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 7241, + "id": 5532, "name": "pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3556, - "src": "2129:14:65", + "referencedDeclaration": 3520, + "src": "2196:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2115:28:65", + "src": "2182:28:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3539,14 +3927,14 @@ }, { "hexValue": "4f6e6c7920506c7567696e205265676973747279", - "id": 7243, + "id": 5534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2145:22:65", + "src": "2212:22:43", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9fe9959db5bdaf6992284d66422da666cc21aacc0a59480b10f8ffea1248c0d1", "typeString": "literal_string \"Only Plugin Registry\"" @@ -3565,7 +3953,7 @@ "typeString": "literal_string \"Only Plugin Registry\"" } ], - "id": 7238, + "id": 5529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3573,13 +3961,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2107:7:65", + "src": "2174:7:43", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7244, + "id": 5535, "isConstant": false, "isLValue": false, "isPure": false, @@ -3588,34 +3976,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2107:61:65", + "src": "2174:61:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7245, + "id": 5536, "nodeType": "ExpressionStatement", - "src": "2107:61:65" + "src": "2174:61:43" } ] } }, { "expression": { - "id": 7262, + "id": 5553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7260, + "id": 5551, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "2280:14:65", + "referencedDeclaration": 5424, + "src": "2347:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3624,26 +4012,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 7261, + "id": 5552, "name": "onboardingPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7218, - "src": "2297:16:65", + "referencedDeclaration": 5509, + "src": "2364:16:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2280:33:65", + "src": "2347:33:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7263, + "id": 5554, "nodeType": "ExpressionStatement", - "src": "2280:33:65" + "src": "2347:33:43" } ] }, @@ -3652,20 +4040,20 @@ "kind": "function", "modifiers": [], "name": "setOnboardingStrategy", - "nameLocation": "1907:21:65", + "nameLocation": "1974:21:43", "parameters": { - "id": 7219, + "id": 5510, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7218, + "id": 5509, "mutability": "mutable", "name": "onboardingPlugin", - "nameLocation": "1937:16:65", + "nameLocation": "2004:16:43", "nodeType": "VariableDeclaration", - "scope": 7265, - "src": "1929:24:65", + "scope": 5556, + "src": "1996:24:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3673,10 +4061,10 @@ "typeString": "address" }, "typeName": { - "id": 7217, + "id": 5508, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1929:7:65", + "src": "1996:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3686,40 +4074,40 @@ "visibility": "internal" } ], - "src": "1928:26:65" + "src": "1995:26:43" }, "returnParameters": { - "id": 7220, + "id": 5511, "nodeType": "ParameterList", "parameters": [], - "src": "1962:0:65" + "src": "2029:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 7277, + "id": 5568, "nodeType": "FunctionDefinition", - "src": "2326:101:65", + "src": "2393:101:43", "nodes": [], "body": { - "id": 7276, + "id": 5567, "nodeType": "Block", - "src": "2385:42:65", + "src": "2452:42:43", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7273, + "id": 5564, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7267, - "src": "2411:8:65", + "referencedDeclaration": 5558, + "src": "2478:8:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3733,18 +4121,18 @@ "typeString": "uint256" } ], - "id": 7272, + "id": 5563, "name": "_activateModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3635, - "src": "2395:15:65", + "referencedDeclaration": 3599, + "src": "2462:15:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 7274, + "id": 5565, "isConstant": false, "isLValue": false, "isPure": false, @@ -3753,58 +4141,58 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2395:25:65", + "src": "2462:25:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7275, + "id": 5566, "nodeType": "ExpressionStatement", - "src": "2395:25:65" + "src": "2462:25:43" } ] }, "baseFunctions": [ - 4592 + 4005 ], "functionSelector": "69130c8d", "implemented": true, "kind": "function", "modifiers": [ { - "id": 7270, + "id": 5561, "kind": "modifierInvocation", "modifierName": { - "id": 7269, + "id": 5560, "name": "onlyAdmin", "nameLocations": [ - "2375:9:65" + "2442:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2375:9:65" + "referencedDeclaration": 3213, + "src": "2442:9:43" }, "nodeType": "ModifierInvocation", - "src": "2375:9:65" + "src": "2442:9:43" } ], "name": "activateModule", - "nameLocation": "2335:14:65", + "nameLocation": "2402:14:43", "parameters": { - "id": 7268, + "id": 5559, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7267, + "id": 5558, "mutability": "mutable", "name": "moduleId", - "nameLocation": "2358:8:65", + "nameLocation": "2425:8:43", "nodeType": "VariableDeclaration", - "scope": 7277, - "src": "2350:16:65", + "scope": 5568, + "src": "2417:16:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3812,10 +4200,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7266, + "id": 5557, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2350:7:65", + "src": "2417:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3824,40 +4212,40 @@ "visibility": "internal" } ], - "src": "2349:18:65" + "src": "2416:18:43" }, "returnParameters": { - "id": 7271, + "id": 5562, "nodeType": "ParameterList", "parameters": [], - "src": "2385:0:65" + "src": "2452:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 7289, + "id": 5580, "nodeType": "FunctionDefinition", - "src": "2433:107:65", + "src": "2500:107:43", "nodes": [], "body": { - "id": 7288, + "id": 5579, "nodeType": "Block", - "src": "2498:42:65", + "src": "2565:42:43", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7285, + "id": 5576, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7279, - "src": "2524:8:65", + "referencedDeclaration": 5570, + "src": "2591:8:43", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -3871,18 +4259,18 @@ "typeString": "string memory" } ], - "id": 7284, + "id": 5575, "name": "_setMetadataUri", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3538, - "src": "2508:15:65", + "referencedDeclaration": 3502, + "src": "2575:15:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 7286, + "id": 5577, "isConstant": false, "isLValue": false, "isPure": false, @@ -3891,16 +4279,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2508:25:65", + "src": "2575:25:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7287, + "id": 5578, "nodeType": "ExpressionStatement", - "src": "2508:25:65" + "src": "2575:25:43" } ] }, @@ -3909,37 +4297,37 @@ "kind": "function", "modifiers": [ { - "id": 7282, + "id": 5573, "kind": "modifierInvocation", "modifierName": { - "id": 7281, + "id": 5572, "name": "onlyAdmin", "nameLocations": [ - "2488:9:65" + "2555:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2488:9:65" + "referencedDeclaration": 3213, + "src": "2555:9:43" }, "nodeType": "ModifierInvocation", - "src": "2488:9:65" + "src": "2555:9:43" } ], "name": "setMetadataUri", - "nameLocation": "2442:14:65", + "nameLocation": "2509:14:43", "parameters": { - "id": 7280, + "id": 5571, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7279, + "id": 5570, "mutability": "mutable", "name": "metadata", - "nameLocation": "2471:8:65", + "nameLocation": "2538:8:43", "nodeType": "VariableDeclaration", - "scope": 7289, - "src": "2457:22:65", + "scope": 5580, + "src": "2524:22:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3947,10 +4335,10 @@ "typeString": "string" }, "typeName": { - "id": 7278, + "id": 5569, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2457:6:65", + "src": "2524:6:43", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3959,40 +4347,40 @@ "visibility": "internal" } ], - "src": "2456:24:65" + "src": "2523:24:43" }, "returnParameters": { - "id": 7283, + "id": 5574, "nodeType": "ParameterList", "parameters": [], - "src": "2498:0:65" + "src": "2565:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 7301, + "id": 5592, "nodeType": "FunctionDefinition", - "src": "2546:83:65", + "src": "2613:83:43", "nodes": [], "body": { - "id": 7300, + "id": 5591, "nodeType": "Block", - "src": "2600:29:65", + "src": "2667:29:43", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7297, + "id": 5588, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7291, - "src": "2618:3:65", + "referencedDeclaration": 5582, + "src": "2685:3:43", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -4006,18 +4394,18 @@ "typeString": "string memory" } ], - "id": 7296, + "id": 5587, "name": "_addURL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4319, - "src": "2610:7:65", + "referencedDeclaration": 3732, + "src": "2677:7:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 7298, + "id": 5589, "isConstant": false, "isLValue": false, "isPure": false, @@ -4026,16 +4414,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2610:12:65", + "src": "2677:12:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7299, + "id": 5590, "nodeType": "ExpressionStatement", - "src": "2610:12:65" + "src": "2677:12:43" } ] }, @@ -4044,37 +4432,37 @@ "kind": "function", "modifiers": [ { - "id": 7294, + "id": 5585, "kind": "modifierInvocation", "modifierName": { - "id": 7293, + "id": 5584, "name": "onlyAdmin", "nameLocations": [ - "2590:9:65" + "2657:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2590:9:65" + "referencedDeclaration": 3213, + "src": "2657:9:43" }, "nodeType": "ModifierInvocation", - "src": "2590:9:65" + "src": "2657:9:43" } ], "name": "addURL", - "nameLocation": "2555:6:65", + "nameLocation": "2622:6:43", "parameters": { - "id": 7292, + "id": 5583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7291, + "id": 5582, "mutability": "mutable", "name": "url", - "nameLocation": "2576:3:65", + "nameLocation": "2643:3:43", "nodeType": "VariableDeclaration", - "scope": 7301, - "src": "2562:17:65", + "scope": 5592, + "src": "2629:17:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4082,10 +4470,10 @@ "typeString": "string" }, "typeName": { - "id": 7290, + "id": 5581, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2562:6:65", + "src": "2629:6:43", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4094,40 +4482,40 @@ "visibility": "internal" } ], - "src": "2561:19:65" + "src": "2628:19:43" }, "returnParameters": { - "id": 7295, + "id": 5586, "nodeType": "ParameterList", "parameters": [], - "src": "2600:0:65" + "src": "2667:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7313, + "id": 5604, "nodeType": "FunctionDefinition", - "src": "2635:89:65", + "src": "2702:89:43", "nodes": [], "body": { - "id": 7312, + "id": 5603, "nodeType": "Block", - "src": "2692:32:65", + "src": "2759:32:43", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7309, + "id": 5600, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7303, - "src": "2713:3:65", + "referencedDeclaration": 5594, + "src": "2780:3:43", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -4141,18 +4529,18 @@ "typeString": "string memory" } ], - "id": 7308, + "id": 5599, "name": "_removeURL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4400, - "src": "2702:10:65", + "referencedDeclaration": 3813, + "src": "2769:10:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, - "id": 7310, + "id": 5601, "isConstant": false, "isLValue": false, "isPure": false, @@ -4161,16 +4549,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2702:15:65", + "src": "2769:15:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7311, + "id": 5602, "nodeType": "ExpressionStatement", - "src": "2702:15:65" + "src": "2769:15:43" } ] }, @@ -4179,37 +4567,37 @@ "kind": "function", "modifiers": [ { - "id": 7306, + "id": 5597, "kind": "modifierInvocation", "modifierName": { - "id": 7305, + "id": 5596, "name": "onlyAdmin", "nameLocations": [ - "2682:9:65" + "2749:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2682:9:65" + "referencedDeclaration": 3213, + "src": "2749:9:43" }, "nodeType": "ModifierInvocation", - "src": "2682:9:65" + "src": "2749:9:43" } ], "name": "removeURL", - "nameLocation": "2644:9:65", + "nameLocation": "2711:9:43", "parameters": { - "id": 7304, + "id": 5595, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7303, + "id": 5594, "mutability": "mutable", "name": "url", - "nameLocation": "2668:3:65", + "nameLocation": "2735:3:43", "nodeType": "VariableDeclaration", - "scope": 7313, - "src": "2654:17:65", + "scope": 5604, + "src": "2721:17:43", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4217,10 +4605,10 @@ "typeString": "string" }, "typeName": { - "id": 7302, + "id": 5593, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2654:6:65", + "src": "2721:6:43", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4229,40 +4617,40 @@ "visibility": "internal" } ], - "src": "2653:19:65" + "src": "2720:19:43" }, "returnParameters": { - "id": 7307, + "id": 5598, "nodeType": "ParameterList", "parameters": [], - "src": "2692:0:65" + "src": "2759:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7325, + "id": 5616, "nodeType": "FunctionDefinition", - "src": "2730:105:65", + "src": "2797:105:43", "nodes": [], "body": { - "id": 7324, + "id": 5615, "nodeType": "Block", - "src": "2792:43:65", + "src": "2859:43:43", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7321, + "id": 5612, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7315, - "src": "2817:10:65", + "referencedDeclaration": 5606, + "src": "2884:10:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4276,18 +4664,18 @@ "typeString": "uint256" } ], - "id": 7320, + "id": 5611, "name": "_setCommitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3137, - "src": "2802:14:65", + "referencedDeclaration": 3101, + "src": "2869:14:43", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 7322, + "id": 5613, "isConstant": false, "isLValue": false, "isPure": false, @@ -4296,16 +4684,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2802:26:65", + "src": "2869:26:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7323, + "id": 5614, "nodeType": "ExpressionStatement", - "src": "2802:26:65" + "src": "2869:26:43" } ] }, @@ -4314,37 +4702,37 @@ "kind": "function", "modifiers": [ { - "id": 7318, + "id": 5609, "kind": "modifierInvocation", "modifierName": { - "id": 7317, + "id": 5608, "name": "onlyAdmin", "nameLocations": [ - "2782:9:65" + "2849:9:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2782:9:65" + "referencedDeclaration": 3213, + "src": "2849:9:43" }, "nodeType": "ModifierInvocation", - "src": "2782:9:65" + "src": "2849:9:43" } ], "name": "setCommitment", - "nameLocation": "2739:13:65", + "nameLocation": "2806:13:43", "parameters": { - "id": 7316, + "id": 5607, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7315, + "id": 5606, "mutability": "mutable", "name": "commitment", - "nameLocation": "2761:10:65", + "nameLocation": "2828:10:43", "nodeType": "VariableDeclaration", - "scope": 7325, - "src": "2753:18:65", + "scope": 5616, + "src": "2820:18:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4352,10 +4740,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7314, + "id": 5605, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2753:7:65", + "src": "2820:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4364,28 +4752,28 @@ "visibility": "internal" } ], - "src": "2752:20:65" + "src": "2819:20:43" }, "returnParameters": { - "id": 7319, + "id": 5610, "nodeType": "ParameterList", "parameters": [], - "src": "2792:0:65" + "src": "2859:0:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7368, + "id": 5659, "nodeType": "FunctionDefinition", - "src": "2841:322:65", + "src": "2908:322:43", "nodes": [], "body": { - "id": 7367, + "id": 5658, "nodeType": "Block", - "src": "2917:246:65", + "src": "2984:246:43", "nodes": [], "statements": [ { @@ -4394,18 +4782,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7339, + "id": 5630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7334, + "id": 5625, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "2931:14:65", + "referencedDeclaration": 5424, + "src": "2998:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4417,14 +4805,14 @@ "arguments": [ { "hexValue": "30", - "id": 7337, + "id": 5628, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2957:1:65", + "src": "3024:1:43", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4439,26 +4827,26 @@ "typeString": "int_const 0" } ], - "id": 7336, + "id": 5627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2949:7:65", + "src": "3016:7:43", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7335, + "id": 5626, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2949:7:65", + "src": "3016:7:43", "typeDescriptions": {} } }, - "id": 7338, + "id": 5629, "isConstant": false, "isLValue": false, "isPure": true, @@ -4467,43 +4855,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2949:10:65", + "src": "3016:10:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2931:28:65", + "src": "2998:28:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7342, + "id": 5633, "nodeType": "IfStatement", - "src": "2927:45:65", + "src": "2994:45:43", "trueBody": { "expression": { "hexValue": "74727565", - "id": 7340, + "id": 5631, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2968:4:65", + "src": "3035:4:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "functionReturnParameters": 7333, - "id": 7341, + "functionReturnParameters": 5624, + "id": 5632, "nodeType": "Return", - "src": "2961:11:65" + "src": "3028:11:43" } }, { @@ -4512,7 +4900,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7355, + "id": 5646, "isConstant": false, "isLValue": false, "isPure": false, @@ -4522,18 +4910,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7348, + "id": 5639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7343, + "id": 5634, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "2986:14:65", + "referencedDeclaration": 5424, + "src": "3053:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4545,14 +4933,14 @@ "arguments": [ { "hexValue": "30", - "id": 7346, + "id": 5637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3012:1:65", + "src": "3079:1:43", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4567,26 +4955,26 @@ "typeString": "int_const 0" } ], - "id": 7345, + "id": 5636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3004:7:65", + "src": "3071:7:43", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7344, + "id": 5635, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3004:7:65", + "src": "3071:7:43", "typeDescriptions": {} } }, - "id": 7347, + "id": 5638, "isConstant": false, "isLValue": false, "isPure": true, @@ -4595,14 +4983,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3004:10:65", + "src": "3071:10:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2986:28:65", + "src": "3053:28:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4611,7 +4999,7 @@ "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { - "id": 7354, + "id": 5645, "isConstant": false, "isLValue": false, "isPure": false, @@ -4619,7 +5007,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3018:44:65", + "src": "3085:44:43", "subExpression": { "arguments": [], "expression": { @@ -4627,12 +5015,12 @@ "expression": { "arguments": [ { - "id": 7350, + "id": 5641, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "3036:14:65", + "referencedDeclaration": 5424, + "src": "3103:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4646,18 +5034,18 @@ "typeString": "address" } ], - "id": 7349, + "id": 5640, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "3019:16:65", + "referencedDeclaration": 4785, + "src": "3086:16:43", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 7351, + "id": 5642, "isConstant": false, "isLValue": false, "isPure": false, @@ -4666,29 +5054,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3019:32:65", + "src": "3086:32:43", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 7352, + "id": 5643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3052:8:65", + "memberLocation": "3119:8:43", "memberName": "isActive", "nodeType": "MemberAccess", - "referencedDeclaration": 6459, - "src": "3019:41:65", + "referencedDeclaration": 4747, + "src": "3086:41:43", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, - "id": 7353, + "id": 5644, "isConstant": false, "isLValue": false, "isPure": false, @@ -4697,7 +5085,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3019:43:65", + "src": "3086:43:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4709,7 +5097,7 @@ "typeString": "bool" } }, - "src": "2986:76:65", + "src": "3053:76:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4719,24 +5107,24 @@ "expression": { "arguments": [ { - "id": 7362, + "id": 5653, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7327, - "src": "3143:6:65", + "referencedDeclaration": 5618, + "src": "3210:6:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 7363, + "id": 5654, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7329, - "src": "3151:4:65", + "referencedDeclaration": 5620, + "src": "3218:4:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4757,12 +5145,12 @@ "expression": { "arguments": [ { - "id": 7359, + "id": 5650, "name": "onboardingAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "3115:14:65", + "referencedDeclaration": 5424, + "src": "3182:14:43", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4776,18 +5164,18 @@ "typeString": "address" } ], - "id": 7358, + "id": 5649, "name": "OnboardingModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6497, - "src": "3098:16:65", + "referencedDeclaration": 4785, + "src": "3165:16:43", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$6497_$", + "typeIdentifier": "t_type$_t_contract$_OnboardingModule_$4785_$", "typeString": "type(contract OnboardingModule)" } }, - "id": 7360, + "id": 5651, "isConstant": false, "isLValue": false, "isPure": false, @@ -4796,29 +5184,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3098:32:65", + "src": "3165:32:43", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OnboardingModule_$6497", + "typeIdentifier": "t_contract$_OnboardingModule_$4785", "typeString": "contract OnboardingModule" } }, - "id": 7361, + "id": 5652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3131:11:65", + "memberLocation": "3198:11:43", "memberName": "isOnboarded", "nodeType": "MemberAccess", - "referencedDeclaration": 6488, - "src": "3098:44:65", + "referencedDeclaration": 4776, + "src": "3165:44:43", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view external returns (bool)" } }, - "id": 7364, + "id": 5655, "isConstant": false, "isLValue": false, "isPure": false, @@ -4827,68 +5215,68 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3098:58:65", + "src": "3165:58:43", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 7333, - "id": 7365, + "functionReturnParameters": 5624, + "id": 5656, "nodeType": "Return", - "src": "3091:65:65" + "src": "3158:65:43" }, - "id": 7366, + "id": 5657, "nodeType": "IfStatement", - "src": "2982:174:65", + "src": "3049:174:43", "trueBody": { "expression": { "hexValue": "66616c7365", - "id": 7356, + "id": 5647, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3071:5:65", + "src": "3138:5:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "functionReturnParameters": 7333, - "id": 7357, + "functionReturnParameters": 5624, + "id": 5648, "nodeType": "Return", - "src": "3064:12:65" + "src": "3131:12:43" } } ] }, "baseFunctions": [ - 4565 + 3978 ], "functionSelector": "03ffe330", "implemented": true, "kind": "function", "modifiers": [], "name": "canJoin", - "nameLocation": "2850:7:65", + "nameLocation": "2917:7:43", "parameters": { - "id": 7330, + "id": 5621, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7327, + "id": 5618, "mutability": "mutable", "name": "member", - "nameLocation": "2866:6:65", + "nameLocation": "2933:6:43", "nodeType": "VariableDeclaration", - "scope": 7368, - "src": "2858:14:65", + "scope": 5659, + "src": "2925:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4896,10 +5284,10 @@ "typeString": "address" }, "typeName": { - "id": 7326, + "id": 5617, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2858:7:65", + "src": "2925:7:43", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4910,13 +5298,13 @@ }, { "constant": false, - "id": 7329, + "id": 5620, "mutability": "mutable", "name": "role", - "nameLocation": "2882:4:65", + "nameLocation": "2949:4:43", "nodeType": "VariableDeclaration", - "scope": 7368, - "src": "2874:12:65", + "scope": 5659, + "src": "2941:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4924,10 +5312,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7328, + "id": 5619, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2874:7:65", + "src": "2941:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4936,21 +5324,21 @@ "visibility": "internal" } ], - "src": "2857:30:65" + "src": "2924:30:43" }, "returnParameters": { - "id": 7333, + "id": 5624, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7332, + "id": 5623, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7368, - "src": "2911:4:65", + "scope": 5659, + "src": "2978:4:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4958,10 +5346,10 @@ "typeString": "bool" }, "typeName": { - "id": 7331, + "id": 5622, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2911:4:65", + "src": "2978:4:43", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4970,23 +5358,314 @@ "visibility": "internal" } ], - "src": "2910:6:65" + "src": "2977:6:43" }, - "scope": 7375, + "scope": 5691, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 7374, + "id": 5670, + "nodeType": "FunctionDefinition", + "src": "3303:89:43", + "nodes": [], + "body": { + "id": 5669, + "nodeType": "Block", + "src": "3351:41:43", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5666, + "name": "parameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5662, + "src": "3375:9:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 5665, + "name": "_setArchetype", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3021, + "src": "3361:13:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3361:24:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "3361:24:43" + } + ] + }, + "documentation": { + "id": 5660, + "nodeType": "StructuredDocumentation", + "src": "3236:62:43", + "text": "@dev set an archetype (for example, Growth or Performance)" + }, + "functionSelector": "7fbaa03b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setArchetype", + "nameLocation": "3312:12:43", + "parameters": { + "id": 5663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5662, + "mutability": "mutable", + "name": "parameter", + "nameLocation": "3331:9:43", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "3325:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5661, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3325:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3324:17:43" + }, + "returnParameters": { + "id": 5664, + "nodeType": "ParameterList", + "parameters": [], + "src": "3351:0:43" + }, + "scope": 5691, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 5684, + "nodeType": "FunctionDefinition", + "src": "3470:111:43", + "nodes": [], + "body": { + "id": 5683, + "nodeType": "Block", + "src": "3533:48:43", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5679, + "name": "parameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5673, + "src": "3557:9:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 5680, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5675, + "src": "3568:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5678, + "name": "_setWeightFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3039, + "src": "3543:13:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256)" + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3543:31:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5682, + "nodeType": "ExpressionStatement", + "src": "3543:31:43" + } + ] + }, + "documentation": { + "id": 5671, + "nodeType": "StructuredDocumentation", + "src": "3398:67:43", + "text": "@dev set weight for the parameter (for example, Growth or Size)" + }, + "functionSelector": "72d4d23d", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setWeightFor", + "nameLocation": "3479:12:43", + "parameters": { + "id": 5676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5673, + "mutability": "mutable", + "name": "parameter", + "nameLocation": "3498:9:43", + "nodeType": "VariableDeclaration", + "scope": 5684, + "src": "3492:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5672, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3492:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5675, + "mutability": "mutable", + "name": "value", + "nameLocation": "3517:5:43", + "nodeType": "VariableDeclaration", + "scope": 5684, + "src": "3509:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3509:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3491:32:43" + }, + "returnParameters": { + "id": 5677, + "nodeType": "ParameterList", + "parameters": [], + "src": "3533:0:43" + }, + "scope": 5691, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 5690, "nodeType": "VariableDeclaration", - "src": "3347:29:65", + "src": "3765:29:43", "nodes": [], "constant": false, "mutability": "mutable", "name": "__gap", - "nameLocation": "3371:5:65", - "scope": 7375, + "nameLocation": "3789:5:43", + "scope": 5691, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4995,36 +5674,36 @@ }, "typeName": { "baseType": { - "id": 7369, + "id": 5685, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3347:7:65", + "src": "3765:7:43", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 7373, + "id": 5689, "length": { "commonType": { "typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48" }, - "id": 7372, + "id": 5688, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3530", - "id": 7370, + "id": 5686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3355:2:65", + "src": "3773:2:43", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" @@ -5035,28 +5714,28 @@ "operator": "-", "rightExpression": { "hexValue": "32", - "id": 7371, + "id": 5687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3360:1:65", + "src": "3778:1:43", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "3355:6:65", + "src": "3773:6:43", "typeDescriptions": { "typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48" } }, "nodeType": "ArrayTypeName", - "src": "3347:15:65", + "src": "3765:15:43", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$48_storage_ptr", "typeString": "uint256[48]" @@ -5069,149 +5748,169 @@ "baseContracts": [ { "baseName": { - "id": 7112, + "id": 5401, "name": "NovaUpgradeable", "nameLocations": [ - "581:15:65" + "633:15:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7886, - "src": "581:15:65" + "referencedDeclaration": 6202, + "src": "633:15:43" }, - "id": 7113, + "id": 5402, "nodeType": "InheritanceSpecifier", - "src": "581:15:65" + "src": "633:15:43" }, { "baseName": { - "id": 7114, + "id": 5403, "name": "NovaMembers", "nameLocations": [ - "598:11:65" + "650:11:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3500, - "src": "598:11:65" + "referencedDeclaration": 3464, + "src": "650:11:43" }, - "id": 7115, + "id": 5404, "nodeType": "InheritanceSpecifier", - "src": "598:11:65" + "src": "650:11:43" }, { "baseName": { - "id": 7116, + "id": 5405, "name": "NovaMetadata", "nameLocations": [ - "611:12:65" + "663:12:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3545, - "src": "611:12:65" + "referencedDeclaration": 3509, + "src": "663:12:43" }, - "id": 7117, + "id": 5406, "nodeType": "InheritanceSpecifier", - "src": "611:12:65" + "src": "663:12:43" }, { "baseName": { - "id": 7118, + "id": 5407, "name": "NovaUrls", "nameLocations": [ - "625:8:65" + "677:8:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4467, - "src": "625:8:65" + "referencedDeclaration": 3880, + "src": "677:8:43" }, - "id": 7119, + "id": 5408, "nodeType": "InheritanceSpecifier", - "src": "625:8:65" + "src": "677:8:43" }, { "baseName": { - "id": 7120, + "id": 5409, "name": "NovaMarket", "nameLocations": [ - "635:10:65" + "687:10:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3198, - "src": "635:10:65" + "referencedDeclaration": 3162, + "src": "687:10:43" }, - "id": 7121, + "id": 5410, "nodeType": "InheritanceSpecifier", - "src": "635:10:65" + "src": "687:10:43" }, { "baseName": { - "id": 7122, + "id": 5411, "name": "NovaModules", "nameLocations": [ - "647:11:65" + "699:11:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3674, - "src": "647:11:65" + "referencedDeclaration": 3638, + "src": "699:11:43" }, - "id": 7123, + "id": 5412, "nodeType": "InheritanceSpecifier", - "src": "647:11:65" + "src": "699:11:43" }, { "baseName": { - "id": 7124, + "id": 5413, "name": "NovaCommitment", "nameLocations": [ - "660:14:65" + "712:14:43" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3153, - "src": "660:14:65" + "referencedDeclaration": 3117, + "src": "712:14:43" }, - "id": 7125, + "id": 5414, "nodeType": "InheritanceSpecifier", - "src": "660:14:65" + "src": "712:14:43" + }, + { + "baseName": { + "id": 5415, + "name": "NovaArchetype", + "nameLocations": [ + "728:13:43" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3064, + "src": "728:13:43" + }, + "id": 5416, + "nodeType": "InheritanceSpecifier", + "src": "728:13:43" } ], "canonicalName": "Nova", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 7111, + "id": 5400, "nodeType": "StructuredDocumentation", - "src": "527:37:65", + "src": "579:37:43", "text": "@title Nova\n @notice\n @dev" }, "fullyImplemented": true, "linearizedBaseContracts": [ - 7375, - 3153, - 4531, - 3674, - 4600, - 3198, - 4540, - 4467, - 4619, - 3545, - 4575, - 3500, - 3009, - 4476, - 4659, - 4705, - 4566, - 4493, - 7886, - 57499 + 5691, + 3064, + 3935, + 3117, + 3944, + 3638, + 4013, + 3162, + 3953, + 3880, + 4032, + 3509, + 3988, + 3464, + 2973, + 3889, + 4072, + 4094, + 3979, + 3906, + 6202, + 55490 ], "name": "Nova", - "nameLocation": "573:4:65", - "scope": 7376, - "usedErrors": [] + "nameLocation": "625:4:43", + "scope": 5692, + "usedErrors": [ + 3910, + 3912 + ] } ], "license": "MIT" }, - "id": 65 + "id": 43 } \ No newline at end of file diff --git a/out/NovaMembers.sol/NovaMembers.json b/out/NovaMembers.sol/NovaMembers.json index 7034839f..13f1553a 100644 --- a/out/NovaMembers.sol/NovaMembers.json +++ b/out/NovaMembers.sol/NovaMembers.json @@ -688,52 +688,52 @@ }, "ast": { "absolutePath": "contracts/components/abstracts/NovaMembers.sol", - "id": 3501, + "id": 3465, "exportedSymbols": { "AutIDAddress": [ - 3009 + 2973 ], "IAutID": [ 1194 ], "IAutIDAddress": [ - 4476 + 3889 ], "IERC165Upgradeable": [ - 59264 + 57255 ], "IERC721Upgradeable": [ - 58525 + 56516 ], "INovaAdmin": [ - 4493 + 3906 ], "INovaAdminSet": [ - 4659 + 4072 ], "INovaMembership": [ - 4566 + 3979 ], "INovaMembershipSet": [ - 4705 + 4094 ], "INovaModules": [ - 4600 + 4013 ], "IPluginRegistry": [ - 11258 + 9574 ], "NovaMembers": [ - 3500 + 3464 ] }, "nodeType": "SourceUnit", - "src": "31:3729:9", + "src": "31:3729:8", "nodes": [ { - "id": 3200, + "id": 3164, "nodeType": "PragmaDirective", - "src": "31:23:9", + "src": "31:23:8", "nodes": [], "literals": [ "solidity", @@ -742,112 +742,112 @@ ] }, { - "id": 3201, + "id": 3165, "nodeType": "ImportDirective", - "src": "56:28:9", + "src": "56:28:8", "nodes": [], "absolutePath": "contracts/components/abstracts/AutIDAddress.sol", "file": "./AutIDAddress.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 3010, + "scope": 3465, + "sourceUnit": 2974, "symbolAliases": [], "unitAlias": "" }, { - "id": 3202, + "id": 3166, "nodeType": "ImportDirective", - "src": "85:42:9", + "src": "85:42:8", "nodes": [], "absolutePath": "contracts/components/interfaces/get/INovaAdmin.sol", "file": "../interfaces/get/INovaAdmin.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 4494, + "scope": 3465, + "sourceUnit": 3907, "symbolAliases": [], "unitAlias": "" }, { - "id": 3203, + "id": 3167, "nodeType": "ImportDirective", - "src": "128:47:9", + "src": "128:47:8", "nodes": [], "absolutePath": "contracts/components/interfaces/get/INovaMembership.sol", "file": "../interfaces/get/INovaMembership.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 4567, + "scope": 3465, + "sourceUnit": 3980, "symbolAliases": [], "unitAlias": "" }, { - "id": 3204, + "id": 3168, "nodeType": "ImportDirective", - "src": "176:44:9", + "src": "176:44:8", "nodes": [], "absolutePath": "contracts/components/interfaces/get/INovaModules.sol", "file": "../interfaces/get/INovaModules.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 4601, + "scope": 3465, + "sourceUnit": 4014, "symbolAliases": [], "unitAlias": "" }, { - "id": 3205, + "id": 3169, "nodeType": "ImportDirective", - "src": "221:52:9", + "src": "221:52:8", "nodes": [], "absolutePath": "contracts/plugins/registry/IPluginRegistry.sol", "file": "../../plugins/registry/IPluginRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 11259, + "scope": 3465, + "sourceUnit": 9575, "symbolAliases": [], "unitAlias": "" }, { - "id": 3206, + "id": 3170, "nodeType": "ImportDirective", - "src": "274:50:9", + "src": "274:50:8", "nodes": [], "absolutePath": "contracts/components/interfaces/set/INovaMembershipSet.sol", "file": "../interfaces/set/INovaMembershipSet.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 4706, + "scope": 3465, + "sourceUnit": 4095, "symbolAliases": [], "unitAlias": "" }, { - "id": 3207, + "id": 3171, "nodeType": "ImportDirective", - "src": "325:45:9", + "src": "325:45:8", "nodes": [], "absolutePath": "contracts/components/interfaces/set/INovaAdminSet.sol", "file": "../interfaces/set/INovaAdminSet.sol", "nameLocation": "-1:-1:-1", - "scope": 3501, - "sourceUnit": 4660, + "scope": 3465, + "sourceUnit": 4073, "symbolAliases": [], "unitAlias": "" }, { - "id": 3500, + "id": 3464, "nodeType": "ContractDefinition", - "src": "501:3258:9", + "src": "501:3258:8", "nodes": [ { - "id": 3221, + "id": 3185, "nodeType": "VariableDeclaration", - "src": "617:24:9", + "src": "617:24:8", "nodes": [], "constant": false, "functionSelector": "5daf08ca", "mutability": "mutable", "name": "members", - "nameLocation": "634:7:9", - "scope": 3500, + "nameLocation": "634:7:8", + "scope": 3464, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -856,19 +856,19 @@ }, "typeName": { "baseType": { - "id": 3219, + "id": 3183, "name": "address", "nodeType": "ElementaryTypeName", - "src": "617:7:9", + "src": "617:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3220, + "id": 3184, "nodeType": "ArrayTypeName", - "src": "617:9:9", + "src": "617:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -877,25 +877,25 @@ "visibility": "public" }, { - "id": 3226, + "id": 3190, "nodeType": "VariableDeclaration", - "src": "648:49:9", + "src": "648:49:8", "nodes": [], "baseFunctions": [ - 4550 + 3963 ], "constant": false, "functionSelector": "a230c524", "mutability": "mutable", "name": "isMember", - "nameLocation": "689:8:9", + "nameLocation": "689:8:8", "overrides": { - "id": 3225, + "id": 3189, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "680:8:9" + "src": "680:8:8" }, - "scope": 3500, + "scope": 3464, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -903,21 +903,21 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 3224, + "id": 3188, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { - "id": 3222, + "id": 3186, "name": "address", "nodeType": "ElementaryTypeName", - "src": "656:7:9", + "src": "656:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "648:24:9", + "src": "648:24:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -925,10 +925,10 @@ "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { - "id": 3223, + "id": 3187, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "667:4:9", + "src": "667:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -938,22 +938,22 @@ "visibility": "public" }, { - "id": 3230, + "id": 3194, "nodeType": "VariableDeclaration", - "src": "742:23:9", + "src": "742:23:8", "nodes": [], "constant": false, "documentation": { - "id": 3227, + "id": 3191, "nodeType": "StructuredDocumentation", - "src": "704:33:9", + "src": "704:33:8", "text": "@notice all the admin members" }, "functionSelector": "14bfd6d0", "mutability": "mutable", "name": "admins", - "nameLocation": "759:6:9", - "scope": 3500, + "nameLocation": "759:6:8", + "scope": 3464, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -962,19 +962,19 @@ }, "typeName": { "baseType": { - "id": 3228, + "id": 3192, "name": "address", "nodeType": "ElementaryTypeName", - "src": "742:7:9", + "src": "742:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3229, + "id": 3193, "nodeType": "ArrayTypeName", - "src": "742:9:9", + "src": "742:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -983,31 +983,31 @@ "visibility": "public" }, { - "id": 3236, + "id": 3200, "nodeType": "VariableDeclaration", - "src": "818:48:9", + "src": "818:48:8", "nodes": [], "baseFunctions": [ - 4486 + 3899 ], "constant": false, "documentation": { - "id": 3231, + "id": 3195, "nodeType": "StructuredDocumentation", - "src": "771:42:9", + "src": "771:42:8", "text": "@notice mapping with the admin members" }, "functionSelector": "24d7806c", "mutability": "mutable", "name": "isAdmin", - "nameLocation": "859:7:9", + "nameLocation": "859:7:8", "overrides": { - "id": 3235, + "id": 3199, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "850:8:9" + "src": "850:8:8" }, - "scope": 3500, + "scope": 3464, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1015,21 +1015,21 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 3234, + "id": 3198, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { - "id": 3232, + "id": 3196, "name": "address", "nodeType": "ElementaryTypeName", - "src": "826:7:9", + "src": "826:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "818:24:9", + "src": "818:24:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" @@ -1037,10 +1037,10 @@ "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { - "id": 3233, + "id": 3197, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "837:4:9", + "src": "837:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1050,14 +1050,14 @@ "visibility": "public" }, { - "id": 3249, + "id": 3213, "nodeType": "ModifierDefinition", - "src": "945:94:9", + "src": "945:94:8", "nodes": [], "body": { - "id": 3248, + "id": 3212, "nodeType": "Block", - "src": "966:73:9", + "src": "966:73:8", "nodes": [], "statements": [ { @@ -1065,40 +1065,40 @@ "arguments": [ { "baseExpression": { - "id": 3240, + "id": 3204, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "984:7:9", + "referencedDeclaration": 3200, + "src": "984:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3243, + "id": 3207, "indexExpression": { "expression": { - "id": 3241, + "id": 3205, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "992:3:9", + "src": "992:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 3242, + "id": 3206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "996:6:9", + "memberLocation": "996:6:8", "memberName": "sender", "nodeType": "MemberAccess", - "src": "992:10:9", + "src": "992:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1109,7 +1109,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "984:19:9", + "src": "984:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1117,14 +1117,14 @@ }, { "hexValue": "4e6f7420616e2061646d696e21", - "id": 3244, + "id": 3208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1005:15:9", + "src": "1005:15:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_54d282f6b755960bf9c8150e1829f2d124f3a3d668ba726f61ef80f83ac6b48a", "typeString": "literal_string \"Not an admin!\"" @@ -1143,7 +1143,7 @@ "typeString": "literal_string \"Not an admin!\"" } ], - "id": 3239, + "id": 3203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1151,13 +1151,13 @@ -18 ], "referencedDeclaration": -18, - "src": "976:7:9", + "src": "976:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3245, + "id": 3209, "isConstant": false, "isLValue": false, "isPure": false, @@ -1166,57 +1166,57 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "976:45:9", + "src": "976:45:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3246, + "id": 3210, "nodeType": "ExpressionStatement", - "src": "976:45:9" + "src": "976:45:8" }, { - "id": 3247, + "id": 3211, "nodeType": "PlaceholderStatement", - "src": "1031:1:9" + "src": "1031:1:8" } ] }, "documentation": { - "id": 3237, + "id": 3201, "nodeType": "StructuredDocumentation", - "src": "873:67:9", + "src": "873:67:8", "text": "@dev Modifier for check of access of the admin member functions" }, "name": "onlyAdmin", - "nameLocation": "954:9:9", + "nameLocation": "954:9:8", "parameters": { - "id": 3238, + "id": 3202, "nodeType": "ParameterList", "parameters": [], - "src": "963:2:9" + "src": "963:2:8" }, "virtual": false, "visibility": "internal" }, { - "id": 3284, + "id": 3248, "nodeType": "FunctionDefinition", - "src": "1072:244:9", + "src": "1072:244:8", "nodes": [], "body": { - "id": 3283, + "id": 3247, "nodeType": "Block", - "src": "1153:163:9", + "src": "1153:163:8", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 3264, + "id": 3228, "isConstant": false, "isLValue": false, "isPure": false, @@ -1224,28 +1224,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1171:20:9", + "src": "1171:20:8", "subExpression": { "baseExpression": { - "id": 3261, + "id": 3225, "name": "isMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3226, - "src": "1172:8:9", + "referencedDeclaration": 3190, + "src": "1172:8:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3263, + "id": 3227, "indexExpression": { - "id": 3262, + "id": 3226, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3252, - "src": "1181:9:9", + "referencedDeclaration": 3216, + "src": "1181:9:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1256,7 +1256,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1172:19:9", + "src": "1172:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1269,14 +1269,14 @@ }, { "hexValue": "416c72656164792061206d656d626572", - "id": 3265, + "id": 3229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1193:18:9", + "src": "1193:18:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1", "typeString": "literal_string \"Already a member\"" @@ -1295,7 +1295,7 @@ "typeString": "literal_string \"Already a member\"" } ], - "id": 3260, + "id": 3224, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1303,13 +1303,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1163:7:9", + "src": "1163:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3266, + "id": 3230, "isConstant": false, "isLValue": false, "isPure": false, @@ -1318,45 +1318,45 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1163:49:9", + "src": "1163:49:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3267, + "id": 3231, "nodeType": "ExpressionStatement", - "src": "1163:49:9" + "src": "1163:49:8" }, { "expression": { - "id": 3272, + "id": 3236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 3268, + "id": 3232, "name": "isMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3226, - "src": "1222:8:9", + "referencedDeclaration": 3190, + "src": "1222:8:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3270, + "id": 3234, "indexExpression": { - "id": 3269, + "id": 3233, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3252, - "src": "1231:9:9", + "referencedDeclaration": 3216, + "src": "1231:9:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1367,7 +1367,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1222:19:9", + "src": "1222:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1377,40 +1377,40 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 3271, + "id": 3235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1244:4:9", + "src": "1244:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "1222:26:9", + "src": "1222:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3273, + "id": 3237, "nodeType": "ExpressionStatement", - "src": "1222:26:9" + "src": "1222:26:8" }, { "expression": { "arguments": [ { - "id": 3277, + "id": 3241, "name": "newMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3252, - "src": "1271:9:9", + "referencedDeclaration": 3216, + "src": "1271:9:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1425,32 +1425,32 @@ } ], "expression": { - "id": 3274, + "id": 3238, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3221, - "src": "1258:7:9", + "referencedDeclaration": 3185, + "src": "1258:7:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3276, + "id": 3240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1266:4:9", + "memberLocation": "1266:4:8", "memberName": "push", "nodeType": "MemberAccess", - "src": "1258:12:9", + "src": "1258:12:8", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 3278, + "id": 3242, "isConstant": false, "isLValue": false, "isPure": false, @@ -1459,34 +1459,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1258:23:9", + "src": "1258:23:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3279, + "id": 3243, "nodeType": "ExpressionStatement", - "src": "1258:23:9" + "src": "1258:23:8" }, { "eventCall": { "arguments": [], "expression": { "argumentTypes": [], - "id": 3280, + "id": 3244, "name": "MemberAdded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4697, - "src": "1296:11:9", + "referencedDeclaration": 4086, + "src": "1296:11:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 3281, + "id": 3245, "isConstant": false, "isLValue": false, "isPure": false, @@ -1495,26 +1495,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1296:13:9", + "src": "1296:13:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3282, + "id": 3246, "nodeType": "EmitStatement", - "src": "1291:18:9" + "src": "1291:18:8" } ] }, "baseFunctions": [ - 4704 + 4093 ], "documentation": { - "id": 3250, + "id": 3214, "nodeType": "StructuredDocumentation", - "src": "1045:22:9", + "src": "1045:22:8", "text": "@dev role not used" }, "functionSelector": "3b4da69f", @@ -1522,43 +1522,43 @@ "kind": "function", "modifiers": [ { - "id": 3258, + "id": 3222, "kind": "modifierInvocation", "modifierName": { - "id": 3257, + "id": 3221, "name": "onlyAutID", "nameLocations": [ - "1143:9:9" + "1143:9:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 2977, - "src": "1143:9:9" + "referencedDeclaration": 2941, + "src": "1143:9:8" }, "nodeType": "ModifierInvocation", - "src": "1143:9:9" + "src": "1143:9:8" } ], "name": "join", - "nameLocation": "1081:4:9", + "nameLocation": "1081:4:8", "overrides": { - "id": 3256, + "id": 3220, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1134:8:9" + "src": "1134:8:8" }, "parameters": { - "id": 3255, + "id": 3219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3252, + "id": 3216, "mutability": "mutable", "name": "newMember", - "nameLocation": "1094:9:9", + "nameLocation": "1094:9:8", "nodeType": "VariableDeclaration", - "scope": 3284, - "src": "1086:17:9", + "scope": 3248, + "src": "1086:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1566,10 +1566,10 @@ "typeString": "address" }, "typeName": { - "id": 3251, + "id": 3215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1086:7:9", + "src": "1086:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1580,13 +1580,13 @@ }, { "constant": false, - "id": 3254, + "id": 3218, "mutability": "mutable", "name": "role", - "nameLocation": "1113:4:9", + "nameLocation": "1113:4:8", "nodeType": "VariableDeclaration", - "scope": 3284, - "src": "1105:12:9", + "scope": 3248, + "src": "1105:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1594,10 +1594,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3253, + "id": 3217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1105:7:9", + "src": "1105:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1606,57 +1606,57 @@ "visibility": "internal" } ], - "src": "1085:33:9" + "src": "1085:33:8" }, "returnParameters": { - "id": 3259, + "id": 3223, "nodeType": "ParameterList", "parameters": [], - "src": "1153:0:9" + "src": "1153:0:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { - "id": 3295, + "id": 3259, "nodeType": "FunctionDefinition", - "src": "1563:104:9", + "src": "1563:104:8", "nodes": [], "body": { - "id": 3294, + "id": 3258, "nodeType": "Block", - "src": "1636:31:9", + "src": "1636:31:8", "nodes": [], "statements": [ { "expression": { - "id": 3292, + "id": 3256, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3221, - "src": "1653:7:9", + "referencedDeclaration": 3185, + "src": "1653:7:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 3291, - "id": 3293, + "functionReturnParameters": 3255, + "id": 3257, "nodeType": "Return", - "src": "1646:14:9" + "src": "1646:14:8" } ] }, "baseFunctions": [ - 4556 + 3969 ], "documentation": { - "id": 3285, + "id": 3249, "nodeType": "StructuredDocumentation", - "src": "1322:236:9", + "src": "1322:236:8", "text": "@notice Checks if the passed member is a part of the original DAO contract depending on it's implementation of membership\n @dev checks if the member is a part of a DAO\n @return true if they're a member, false otherwise" }, "functionSelector": "7c0f6b35", @@ -1664,32 +1664,32 @@ "kind": "function", "modifiers": [], "name": "getAllMembers", - "nameLocation": "1572:13:9", + "nameLocation": "1572:13:8", "overrides": { - "id": 3287, + "id": 3251, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1600:8:9" + "src": "1600:8:8" }, "parameters": { - "id": 3286, + "id": 3250, "nodeType": "ParameterList", "parameters": [], - "src": "1585:2:9" + "src": "1585:2:8" }, "returnParameters": { - "id": 3291, + "id": 3255, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3290, + "id": 3254, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 3295, - "src": "1618:16:9", + "scope": 3259, + "src": "1618:16:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1698,19 +1698,19 @@ }, "typeName": { "baseType": { - "id": 3288, + "id": 3252, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1618:7:9", + "src": "1618:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3289, + "id": 3253, "nodeType": "ArrayTypeName", - "src": "1618:9:9", + "src": "1618:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1719,22 +1719,22 @@ "visibility": "internal" } ], - "src": "1617:18:9" + "src": "1617:18:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 3348, + "id": 3312, "nodeType": "FunctionDefinition", - "src": "1826:361:9", + "src": "1826:361:8", "nodes": [], "body": { - "id": 3347, + "id": 3311, "nodeType": "Block", - "src": "1886:301:9", + "src": "1886:301:8", "nodes": [], "statements": [ { @@ -1743,7 +1743,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 3325, + "id": 3289, "isConstant": false, "isLValue": false, "isPure": false, @@ -1751,7 +1751,7 @@ "leftExpression": { "components": [ { - "id": 3307, + "id": 3271, "isConstant": false, "isLValue": false, "isPure": false, @@ -1759,28 +1759,28 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1914:17:9", + "src": "1914:17:8", "subExpression": { "baseExpression": { - "id": 3304, + "id": 3268, "name": "isMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3226, - "src": "1915:8:9", + "referencedDeclaration": 3190, + "src": "1915:8:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3306, + "id": 3270, "indexExpression": { - "id": 3305, + "id": 3269, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3298, - "src": "1924:6:9", + "referencedDeclaration": 3262, + "src": "1924:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1791,7 +1791,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1915:16:9", + "src": "1915:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1803,14 +1803,14 @@ } } ], - "id": 3308, + "id": 3272, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1913:19:9", + "src": "1913:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1825,7 +1825,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3323, + "id": 3287, "isConstant": false, "isLValue": false, "isPure": false, @@ -1833,12 +1833,12 @@ "leftExpression": { "arguments": [ { - "id": 3320, + "id": 3284, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3298, - "src": "2034:6:9", + "referencedDeclaration": 3262, + "src": "2034:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1863,14 +1863,14 @@ { "arguments": [ { - "id": 3313, + "id": 3277, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "1990:4:9", + "src": "1990:4:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaMembers_$3500", + "typeIdentifier": "t_contract$_NovaMembers_$3464", "typeString": "contract NovaMembers" } } @@ -1878,30 +1878,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_NovaMembers_$3500", + "typeIdentifier": "t_contract$_NovaMembers_$3464", "typeString": "contract NovaMembers" } ], - "id": 3312, + "id": 3276, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1982:7:9", + "src": "1982:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 3311, + "id": 3275, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1982:7:9", + "src": "1982:7:8", "typeDescriptions": {} } }, - "id": 3314, + "id": 3278, "isConstant": false, "isLValue": false, "isPure": false, @@ -1910,7 +1910,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1982:13:9", + "src": "1982:13:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -1925,18 +1925,18 @@ "typeString": "address" } ], - "id": 3310, + "id": 3274, "name": "INovaModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4600, - "src": "1969:12:9", + "referencedDeclaration": 4013, + "src": "1969:12:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INovaModules_$4600_$", + "typeIdentifier": "t_type$_t_contract$_INovaModules_$4013_$", "typeString": "type(contract INovaModules)" } }, - "id": 3315, + "id": 3279, "isConstant": false, "isLValue": false, "isPure": false, @@ -1945,29 +1945,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1969:27:9", + "src": "1969:27:8", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INovaModules_$4600", + "typeIdentifier": "t_contract$_INovaModules_$4013", "typeString": "contract INovaModules" } }, - "id": 3316, + "id": 3280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1997:14:9", + "memberLocation": "1997:14:8", "memberName": "pluginRegistry", "nodeType": "MemberAccess", - "referencedDeclaration": 4587, - "src": "1969:42:9", + "referencedDeclaration": 4000, + "src": "1969:42:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 3317, + "id": 3281, "isConstant": false, "isLValue": false, "isPure": false, @@ -1976,7 +1976,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1969:44:9", + "src": "1969:44:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -1991,18 +1991,18 @@ "typeString": "address" } ], - "id": 3309, + "id": 3273, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11258, - "src": "1953:15:9", + "referencedDeclaration": 9574, + "src": "1953:15:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$11258_$", + "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$9574_$", "typeString": "type(contract IPluginRegistry)" } }, - "id": 3318, + "id": 3282, "isConstant": false, "isLValue": false, "isPure": false, @@ -2011,29 +2011,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1953:61:9", + "src": "1953:61:8", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$11258", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 3319, + "id": 3283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2015:18:9", + "memberLocation": "2015:18:8", "memberName": "tokenIdFromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 11224, - "src": "1953:80:9", + "referencedDeclaration": 9540, + "src": "1953:80:8", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 3321, + "id": 3285, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,7 +2042,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1953:88:9", + "src": "1953:88:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2053,62 +2053,62 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 3322, + "id": 3286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2045:1:9", + "src": "2045:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "1953:93:9", + "src": "1953:93:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 3324, + "id": 3288, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "1952:95:9", + "src": "1952:95:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1913:134:9", + "src": "1913:134:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3330, + "id": 3294, "nodeType": "IfStatement", - "src": "1896:184:9", + "src": "1896:184:8", "trueBody": { "expression": { "arguments": [ { "hexValue": "4e6f742061206d656d626572", - "id": 3327, + "id": 3291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2065:14:9", + "src": "2065:14:8", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8cfc078b32cffb255e9e243136e6cde5d6a128600e2bb8733edd3b242e99fb55", "typeString": "literal_string \"Not a member\"" @@ -2123,7 +2123,7 @@ "typeString": "literal_string \"Not a member\"" } ], - "id": 3326, + "id": 3290, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2131,13 +2131,13 @@ -19 ], "referencedDeclaration": -19, - "src": "2058:6:9", + "src": "2058:6:8", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 3328, + "id": 3292, "isConstant": false, "isLValue": false, "isPure": false, @@ -2146,46 +2146,46 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2058:22:9", + "src": "2058:22:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3329, + "id": 3293, "nodeType": "ExpressionStatement", - "src": "2058:22:9" + "src": "2058:22:8" } }, { "expression": { - "id": 3335, + "id": 3299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 3331, + "id": 3295, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "2090:7:9", + "referencedDeclaration": 3200, + "src": "2090:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3333, + "id": 3297, "indexExpression": { - "id": 3332, + "id": 3296, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3298, - "src": "2098:6:9", + "referencedDeclaration": 3262, + "src": "2098:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2196,7 +2196,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2090:15:9", + "src": "2090:15:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2206,40 +2206,40 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 3334, + "id": 3298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2108:4:9", + "src": "2108:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "2090:22:9", + "src": "2090:22:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3336, + "id": 3300, "nodeType": "ExpressionStatement", - "src": "2090:22:9" + "src": "2090:22:8" }, { "expression": { "arguments": [ { - "id": 3340, + "id": 3304, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3298, - "src": "2134:6:9", + "referencedDeclaration": 3262, + "src": "2134:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2254,32 +2254,32 @@ } ], "expression": { - "id": 3337, + "id": 3301, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "2122:6:9", + "referencedDeclaration": 3194, + "src": "2122:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3339, + "id": 3303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2129:4:9", + "memberLocation": "2129:4:8", "memberName": "push", "nodeType": "MemberAccess", - "src": "2122:11:9", + "src": "2122:11:8", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 3341, + "id": 3305, "isConstant": false, "isLValue": false, "isPure": false, @@ -2288,27 +2288,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2122:19:9", + "src": "2122:19:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3342, + "id": 3306, "nodeType": "ExpressionStatement", - "src": "2122:19:9" + "src": "2122:19:8" }, { "eventCall": { "arguments": [ { - "id": 3344, + "id": 3308, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3298, - "src": "2173:6:9", + "referencedDeclaration": 3262, + "src": "2173:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2322,18 +2322,18 @@ "typeString": "address" } ], - "id": 3343, + "id": 3307, "name": "AdminMemberAdded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4635, - "src": "2156:16:9", + "referencedDeclaration": 4048, + "src": "2156:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3345, + "id": 3309, "isConstant": false, "isLValue": false, "isPure": false, @@ -2342,26 +2342,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2156:24:9", + "src": "2156:24:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3346, + "id": 3310, "nodeType": "EmitStatement", - "src": "2151:29:9" + "src": "2151:29:8" } ] }, "baseFunctions": [ - 4644 + 4057 ], "documentation": { - "id": 3296, + "id": 3260, "nodeType": "StructuredDocumentation", - "src": "1673:148:9", + "src": "1673:148:8", "text": "Admins\n @notice adds admins provided a member address. Plugins do not have to be members.\n @param member address to add as member." }, "functionSelector": "70480275", @@ -2369,43 +2369,43 @@ "kind": "function", "modifiers": [ { - "id": 3302, + "id": 3266, "kind": "modifierInvocation", "modifierName": { - "id": 3301, + "id": 3265, "name": "onlyAdmin", "nameLocations": [ - "1876:9:9" + "1876:9:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "1876:9:9" + "referencedDeclaration": 3213, + "src": "1876:9:8" }, "nodeType": "ModifierInvocation", - "src": "1876:9:9" + "src": "1876:9:8" } ], "name": "addAdmin", - "nameLocation": "1835:8:9", + "nameLocation": "1835:8:8", "overrides": { - "id": 3300, + "id": 3264, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1867:8:9" + "src": "1867:8:8" }, "parameters": { - "id": 3299, + "id": 3263, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3298, + "id": 3262, "mutability": "mutable", "name": "member", - "nameLocation": "1852:6:9", + "nameLocation": "1852:6:8", "nodeType": "VariableDeclaration", - "scope": 3348, - "src": "1844:14:9", + "scope": 3312, + "src": "1844:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2413,10 +2413,10 @@ "typeString": "address" }, "typeName": { - "id": 3297, + "id": 3261, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1844:7:9", + "src": "1844:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2426,44 +2426,44 @@ "visibility": "internal" } ], - "src": "1843:16:9" + "src": "1843:16:8" }, "returnParameters": { - "id": 3303, + "id": 3267, "nodeType": "ParameterList", "parameters": [], - "src": "1886:0:9" + "src": "1886:0:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 3426, + "id": 3390, "nodeType": "FunctionDefinition", - "src": "2534:678:9", + "src": "2534:678:8", "nodes": [], "body": { - "id": 3425, + "id": 3389, "nodeType": "Block", - "src": "2634:578:9", + "src": "2634:578:8", "nodes": [], "statements": [ { "assignments": [ - 3361 + 3325 ], "declarations": [ { "constant": false, - "id": 3361, + "id": 3325, "mutability": "mutable", "name": "i", - "nameLocation": "2652:1:9", + "nameLocation": "2652:1:8", "nodeType": "VariableDeclaration", - "scope": 3425, - "src": "2644:9:9", + "scope": 3389, + "src": "2644:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2471,10 +2471,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3360, + "id": 3324, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2644:7:9", + "src": "2644:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2483,19 +2483,19 @@ "visibility": "internal" } ], - "id": 3362, + "id": 3326, "nodeType": "VariableDeclarationStatement", - "src": "2644:9:9" + "src": "2644:9:8" }, { "body": { - "id": 3421, + "id": 3385, "nodeType": "Block", - "src": "2694:486:9", + "src": "2694:486:8", "statements": [ { "condition": { - "id": 3374, + "id": 3338, "isConstant": false, "isLValue": false, "isPure": false, @@ -2503,42 +2503,42 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2712:23:9", + "src": "2712:23:8", "subExpression": { "baseExpression": { - "id": 3369, + "id": 3333, "name": "isMember", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3226, - "src": "2713:8:9", + "referencedDeclaration": 3190, + "src": "2713:8:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3373, + "id": 3337, "indexExpression": { "baseExpression": { - "id": 3370, + "id": 3334, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "2722:9:9", + "referencedDeclaration": 3315, + "src": "2722:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3372, + "id": 3336, "indexExpression": { - "id": 3371, + "id": 3335, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2732:1:9", + "referencedDeclaration": 3325, + "src": "2732:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2549,7 +2549,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2722:12:9", + "src": "2722:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2560,7 +2560,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2713:22:9", + "src": "2713:22:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2571,17 +2571,17 @@ "typeString": "bool" } }, - "id": 3386, + "id": 3350, "nodeType": "IfStatement", - "src": "2708:178:9", + "src": "2708:178:8", "trueBody": { - "id": 3385, + "id": 3349, "nodeType": "Block", - "src": "2737:149:9", + "src": "2737:149:8", "statements": [ { "expression": { - "id": 3378, + "id": 3342, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,28 +2589,28 @@ "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, - "src": "2755:19:9", + "src": "2755:19:8", "subExpression": { "baseExpression": { - "id": 3375, + "id": 3339, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "2762:9:9", + "referencedDeclaration": 3315, + "src": "2762:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3377, + "id": 3341, "indexExpression": { - "id": 3376, + "id": 3340, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2772:1:9", + "referencedDeclaration": 3325, + "src": "2772:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2621,7 +2621,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2762:12:9", + "src": "2762:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2632,18 +2632,18 @@ "typeString": "tuple()" } }, - "id": 3379, + "id": 3343, "nodeType": "ExpressionStatement", - "src": "2755:19:9" + "src": "2755:19:8" }, { - "id": 3383, + "id": 3347, "nodeType": "UncheckedBlock", - "src": "2792:54:9", + "src": "2792:54:8", "statements": [ { "expression": { - "id": 3381, + "id": 3345, "isConstant": false, "isLValue": false, "isPure": false, @@ -2651,14 +2651,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "2824:3:9", + "src": "2824:3:8", "subExpression": { - "id": 3380, + "id": 3344, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2826:1:9", + "referencedDeclaration": 3325, + "src": "2826:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2669,23 +2669,23 @@ "typeString": "uint256" } }, - "id": 3382, + "id": 3346, "nodeType": "ExpressionStatement", - "src": "2824:3:9" + "src": "2824:3:8" } ] }, { - "id": 3384, + "id": 3348, "nodeType": "Continue", - "src": "2863:8:9" + "src": "2863:8:8" } ] } }, { "condition": { - "id": 3392, + "id": 3356, "isConstant": false, "isLValue": false, "isPure": false, @@ -2693,42 +2693,42 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2903:22:9", + "src": "2903:22:8", "subExpression": { "baseExpression": { - "id": 3387, + "id": 3351, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "2904:7:9", + "referencedDeclaration": 3200, + "src": "2904:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3391, + "id": 3355, "indexExpression": { "baseExpression": { - "id": 3388, + "id": 3352, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "2912:9:9", + "referencedDeclaration": 3315, + "src": "2912:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3390, + "id": 3354, "indexExpression": { - "id": 3389, + "id": 3353, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2922:1:9", + "referencedDeclaration": 3325, + "src": "2922:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2739,7 +2739,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2912:12:9", + "src": "2912:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2750,7 +2750,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2904:21:9", + "src": "2904:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2761,38 +2761,38 @@ "typeString": "bool" } }, - "id": 3416, + "id": 3380, "nodeType": "IfStatement", - "src": "2899:211:9", + "src": "2899:211:8", "trueBody": { - "id": 3415, + "id": 3379, "nodeType": "Block", - "src": "2927:183:9", + "src": "2927:183:8", "statements": [ { "expression": { "arguments": [ { "baseExpression": { - "id": 3396, + "id": 3360, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "2957:9:9", + "referencedDeclaration": 3315, + "src": "2957:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3398, + "id": 3362, "indexExpression": { - "id": 3397, + "id": 3361, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2967:1:9", + "referencedDeclaration": 3325, + "src": "2967:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2803,7 +2803,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2957:12:9", + "src": "2957:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2818,32 +2818,32 @@ } ], "expression": { - "id": 3393, + "id": 3357, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "2945:6:9", + "referencedDeclaration": 3194, + "src": "2945:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3395, + "id": 3359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2952:4:9", + "memberLocation": "2952:4:8", "memberName": "push", "nodeType": "MemberAccess", - "src": "2945:11:9", + "src": "2945:11:8", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 3399, + "id": 3363, "isConstant": false, "isLValue": false, "isPure": false, @@ -2852,60 +2852,60 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2945:25:9", + "src": "2945:25:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3400, + "id": 3364, "nodeType": "ExpressionStatement", - "src": "2945:25:9" + "src": "2945:25:8" }, { "documentation": "@dev", "expression": { - "id": 3407, + "id": 3371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 3401, + "id": 3365, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "3013:7:9", + "referencedDeclaration": 3200, + "src": "3013:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3405, + "id": 3369, "indexExpression": { "baseExpression": { - "id": 3402, + "id": 3366, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "3021:9:9", + "referencedDeclaration": 3315, + "src": "3021:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3404, + "id": 3368, "indexExpression": { - "id": 3403, + "id": 3367, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "3031:1:9", + "referencedDeclaration": 3325, + "src": "3031:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2916,7 +2916,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3021:12:9", + "src": "3021:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2927,7 +2927,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3013:21:9", + "src": "3013:21:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2937,54 +2937,54 @@ "operator": "=", "rightHandSide": { "hexValue": "74727565", - "id": 3406, + "id": 3370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3037:4:9", + "src": "3037:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, - "src": "3013:28:9", + "src": "3013:28:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3408, + "id": 3372, "nodeType": "ExpressionStatement", - "src": "3013:28:9" + "src": "3013:28:8" }, { "eventCall": { "arguments": [ { "baseExpression": { - "id": 3410, + "id": 3374, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "3082:9:9", + "referencedDeclaration": 3315, + "src": "3082:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3412, + "id": 3376, "indexExpression": { - "id": 3411, + "id": 3375, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "3092:1:9", + "referencedDeclaration": 3325, + "src": "3092:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2995,7 +2995,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3082:12:9", + "src": "3082:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3009,18 +3009,18 @@ "typeString": "address" } ], - "id": 3409, + "id": 3373, "name": "AdminMemberAdded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4635, - "src": "3065:16:9", + "referencedDeclaration": 4048, + "src": "3065:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3413, + "id": 3377, "isConstant": false, "isLValue": false, "isPure": false, @@ -3029,28 +3029,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3065:30:9", + "src": "3065:30:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3414, + "id": 3378, "nodeType": "EmitStatement", - "src": "3060:35:9" + "src": "3060:35:8" } ] } }, { - "id": 3420, + "id": 3384, "nodeType": "UncheckedBlock", - "src": "3124:46:9", + "src": "3124:46:8", "statements": [ { "expression": { - "id": 3418, + "id": 3382, "isConstant": false, "isLValue": false, "isPure": false, @@ -3058,14 +3058,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "3152:3:9", + "src": "3152:3:8", "subExpression": { - "id": 3417, + "id": 3381, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "3154:1:9", + "referencedDeclaration": 3325, + "src": "3154:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3076,9 +3076,9 @@ "typeString": "uint256" } }, - "id": 3419, + "id": 3383, "nodeType": "ExpressionStatement", - "src": "3152:3:9" + "src": "3152:3:8" } ] } @@ -3089,18 +3089,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3368, + "id": 3332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 3365, + "id": 3329, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2671:1:9", + "referencedDeclaration": 3325, + "src": "2671:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3110,123 +3110,123 @@ "operator": "<", "rightExpression": { "expression": { - "id": 3366, + "id": 3330, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "2675:9:9", + "referencedDeclaration": 3315, + "src": "2675:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 3367, + "id": 3331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2685:6:9", + "memberLocation": "2685:6:8", "memberName": "length", "nodeType": "MemberAccess", - "src": "2675:16:9", + "src": "2675:16:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2671:20:9", + "src": "2671:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3422, + "id": 3386, "initializationExpression": { "expression": { - "id": 3363, + "id": 3327, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3361, - "src": "2668:1:9", + "referencedDeclaration": 3325, + "src": "2668:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3364, + "id": 3328, "nodeType": "ExpressionStatement", - "src": "2668:1:9" + "src": "2668:1:8" }, "nodeType": "ForStatement", - "src": "2663:517:9" + "src": "2663:517:8" }, { "expression": { - "id": 3423, + "id": 3387, "name": "adminAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3351, - "src": "3196:9:9", + "referencedDeclaration": 3315, + "src": "3196:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 3359, - "id": 3424, + "functionReturnParameters": 3323, + "id": 3388, "nodeType": "Return", - "src": "3189:16:9" + "src": "3189:16:8" } ] }, "baseFunctions": [ - 4653 + 4066 ], "functionSelector": "9c54df64", "implemented": true, "kind": "function", "modifiers": [ { - "id": 3355, + "id": 3319, "kind": "modifierInvocation", "modifierName": { - "id": 3354, + "id": 3318, "name": "onlyAdmin", "nameLocations": [ - "2597:9:9" + "2597:9:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "2597:9:9" + "referencedDeclaration": 3213, + "src": "2597:9:8" }, "nodeType": "ModifierInvocation", - "src": "2597:9:9" + "src": "2597:9:8" } ], "name": "addAdmins", - "nameLocation": "2543:9:9", + "nameLocation": "2543:9:8", "overrides": { - "id": 3353, + "id": 3317, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "2588:8:9" + "src": "2588:8:8" }, "parameters": { - "id": 3352, + "id": 3316, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3351, + "id": 3315, "mutability": "mutable", "name": "adminAddr", - "nameLocation": "2570:9:9", + "nameLocation": "2570:9:8", "nodeType": "VariableDeclaration", - "scope": 3426, - "src": "2553:26:9", + "scope": 3390, + "src": "2553:26:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3235,19 +3235,19 @@ }, "typeName": { "baseType": { - "id": 3349, + "id": 3313, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2553:7:9", + "src": "2553:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3350, + "id": 3314, "nodeType": "ArrayTypeName", - "src": "2553:9:9", + "src": "2553:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3256,21 +3256,21 @@ "visibility": "internal" } ], - "src": "2552:28:9" + "src": "2552:28:8" }, "returnParameters": { - "id": 3359, + "id": 3323, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3358, + "id": 3322, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 3426, - "src": "2616:16:9", + "scope": 3390, + "src": "2616:16:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3279,19 +3279,19 @@ }, "typeName": { "baseType": { - "id": 3356, + "id": 3320, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2616:7:9", + "src": "2616:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3357, + "id": 3321, "nodeType": "ArrayTypeName", - "src": "2616:9:9", + "src": "2616:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3300,29 +3300,29 @@ "visibility": "internal" } ], - "src": "2615:18:9" + "src": "2615:18:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 3474, + "id": 3438, "nodeType": "FunctionDefinition", - "src": "3218:301:9", + "src": "3218:301:8", "nodes": [], "body": { - "id": 3473, + "id": 3437, "nodeType": "Block", - "src": "3281:238:9", + "src": "3281:238:8", "nodes": [], "statements": [ { "body": { - "id": 3461, + "id": 3425, "nodeType": "Block", - "src": "3335:104:9", + "src": "3335:104:8", "statements": [ { "condition": { @@ -3330,32 +3330,32 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3449, + "id": 3413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 3445, + "id": 3409, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "3353:6:9", + "referencedDeclaration": 3194, + "src": "3353:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3447, + "id": 3411, "indexExpression": { - "id": 3446, + "id": 3410, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3435, - "src": "3360:1:9", + "referencedDeclaration": 3399, + "src": "3360:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3366,7 +3366,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3353:9:9", + "src": "3353:9:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3375,59 +3375,59 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 3448, + "id": 3412, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3428, - "src": "3366:6:9", + "referencedDeclaration": 3392, + "src": "3366:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3353:19:9", + "src": "3353:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3460, + "id": 3424, "nodeType": "IfStatement", - "src": "3349:80:9", + "src": "3349:80:8", "trueBody": { - "id": 3459, + "id": 3423, "nodeType": "Block", - "src": "3374:55:9", + "src": "3374:55:8", "statements": [ { "expression": { - "id": 3457, + "id": 3421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 3450, + "id": 3414, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "3392:6:9", + "referencedDeclaration": 3194, + "src": "3392:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3452, + "id": 3416, "indexExpression": { - "id": 3451, + "id": 3415, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3435, - "src": "3399:1:9", + "referencedDeclaration": 3399, + "src": "3399:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3438,7 +3438,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3392:9:9", + "src": "3392:9:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3450,14 +3450,14 @@ "arguments": [ { "hexValue": "30", - "id": 3455, + "id": 3419, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3412:1:9", + "src": "3412:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3472,26 +3472,26 @@ "typeString": "int_const 0" } ], - "id": 3454, + "id": 3418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3404:7:9", + "src": "3404:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 3453, + "id": 3417, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3404:7:9", + "src": "3404:7:8", "typeDescriptions": {} } }, - "id": 3456, + "id": 3420, "isConstant": false, "isLValue": false, "isPure": true, @@ -3500,22 +3500,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3404:10:9", + "src": "3404:10:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3392:22:9", + "src": "3392:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3458, + "id": 3422, "nodeType": "ExpressionStatement", - "src": "3392:22:9" + "src": "3392:22:8" } ] } @@ -3527,18 +3527,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3441, + "id": 3405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 3438, + "id": 3402, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3435, - "src": "3311:1:9", + "referencedDeclaration": 3399, + "src": "3311:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3548,52 +3548,52 @@ "operator": "<", "rightExpression": { "expression": { - "id": 3439, + "id": 3403, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "3315:6:9", + "referencedDeclaration": 3194, + "src": "3315:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3440, + "id": 3404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3322:6:9", + "memberLocation": "3322:6:8", "memberName": "length", "nodeType": "MemberAccess", - "src": "3315:13:9", + "src": "3315:13:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3311:17:9", + "src": "3311:17:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3462, + "id": 3426, "initializationExpression": { "assignments": [ - 3435 + 3399 ], "declarations": [ { "constant": false, - "id": 3435, + "id": 3399, "mutability": "mutable", "name": "i", - "nameLocation": "3304:1:9", + "nameLocation": "3304:1:8", "nodeType": "VariableDeclaration", - "scope": 3462, - "src": "3296:9:9", + "scope": 3426, + "src": "3296:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3601,10 +3601,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3434, + "id": 3398, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3296:7:9", + "src": "3296:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3613,17 +3613,17 @@ "visibility": "internal" } ], - "id": 3437, + "id": 3401, "initialValue": { "hexValue": "30", - "id": 3436, + "id": 3400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3308:1:9", + "src": "3308:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3631,11 +3631,11 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3296:13:9" + "src": "3296:13:8" }, "loopExpression": { "expression": { - "id": 3443, + "id": 3407, "isConstant": false, "isLValue": false, "isPure": false, @@ -3643,14 +3643,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3330:3:9", + "src": "3330:3:8", "subExpression": { - "id": 3442, + "id": 3406, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3435, - "src": "3330:1:9", + "referencedDeclaration": 3399, + "src": "3330:1:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3661,41 +3661,41 @@ "typeString": "uint256" } }, - "id": 3444, + "id": 3408, "nodeType": "ExpressionStatement", - "src": "3330:3:9" + "src": "3330:3:8" }, "nodeType": "ForStatement", - "src": "3291:148:9" + "src": "3291:148:8" }, { "expression": { - "id": 3467, + "id": 3431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 3463, + "id": 3427, "name": "isAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "3448:7:9", + "referencedDeclaration": 3200, + "src": "3448:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3465, + "id": 3429, "indexExpression": { - "id": 3464, + "id": 3428, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3428, - "src": "3456:6:9", + "referencedDeclaration": 3392, + "src": "3456:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3706,7 +3706,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3448:15:9", + "src": "3448:15:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3716,40 +3716,40 @@ "operator": "=", "rightHandSide": { "hexValue": "66616c7365", - "id": 3466, + "id": 3430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3466:5:9", + "src": "3466:5:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, - "src": "3448:23:9", + "src": "3448:23:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3468, + "id": 3432, "nodeType": "ExpressionStatement", - "src": "3448:23:9" + "src": "3448:23:8" }, { "eventCall": { "arguments": [ { - "id": 3470, + "id": 3434, "name": "member", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3428, - "src": "3505:6:9", + "referencedDeclaration": 3392, + "src": "3505:6:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3763,18 +3763,18 @@ "typeString": "address" } ], - "id": 3469, + "id": 3433, "name": "AdminMemberRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4639, - "src": "3486:18:9", + "referencedDeclaration": 4052, + "src": "3486:18:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3471, + "id": 3435, "isConstant": false, "isLValue": false, "isPure": false, @@ -3783,64 +3783,64 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3486:26:9", + "src": "3486:26:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3472, + "id": 3436, "nodeType": "EmitStatement", - "src": "3481:31:9" + "src": "3481:31:8" } ] }, "baseFunctions": [ - 4658 + 4071 ], "functionSelector": "1785f53c", "implemented": true, "kind": "function", "modifiers": [ { - "id": 3432, + "id": 3396, "kind": "modifierInvocation", "modifierName": { - "id": 3431, + "id": 3395, "name": "onlyAdmin", "nameLocations": [ - "3271:9:9" + "3271:9:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3249, - "src": "3271:9:9" + "referencedDeclaration": 3213, + "src": "3271:9:8" }, "nodeType": "ModifierInvocation", - "src": "3271:9:9" + "src": "3271:9:8" } ], "name": "removeAdmin", - "nameLocation": "3227:11:9", + "nameLocation": "3227:11:8", "overrides": { - "id": 3430, + "id": 3394, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3262:8:9" + "src": "3262:8:8" }, "parameters": { - "id": 3429, + "id": 3393, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3428, + "id": 3392, "mutability": "mutable", "name": "member", - "nameLocation": "3247:6:9", + "nameLocation": "3247:6:8", "nodeType": "VariableDeclaration", - "scope": 3474, - "src": "3239:14:9", + "scope": 3438, + "src": "3239:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3848,10 +3848,10 @@ "typeString": "address" }, "typeName": { - "id": 3427, + "id": 3391, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3239:7:9", + "src": "3239:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3861,84 +3861,84 @@ "visibility": "internal" } ], - "src": "3238:16:9" + "src": "3238:16:8" }, "returnParameters": { - "id": 3433, + "id": 3397, "nodeType": "ParameterList", "parameters": [], - "src": "3281:0:9" + "src": "3281:0:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 3484, + "id": 3448, "nodeType": "FunctionDefinition", - "src": "3525:99:9", + "src": "3525:99:8", "nodes": [], "body": { - "id": 3483, + "id": 3447, "nodeType": "Block", - "src": "3594:30:9", + "src": "3594:30:8", "nodes": [], "statements": [ { "expression": { - "id": 3481, + "id": 3445, "name": "admins", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3230, - "src": "3611:6:9", + "referencedDeclaration": 3194, + "src": "3611:6:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 3480, - "id": 3482, + "functionReturnParameters": 3444, + "id": 3446, "nodeType": "Return", - "src": "3604:13:9" + "src": "3604:13:8" } ] }, "baseFunctions": [ - 4492 + 3905 ], "functionSelector": "31ae450b", "implemented": true, "kind": "function", "modifiers": [], "name": "getAdmins", - "nameLocation": "3534:9:9", + "nameLocation": "3534:9:8", "overrides": { - "id": 3476, + "id": 3440, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "3558:8:9" + "src": "3558:8:8" }, "parameters": { - "id": 3475, + "id": 3439, "nodeType": "ParameterList", "parameters": [], - "src": "3543:2:9" + "src": "3543:2:8" }, "returnParameters": { - "id": 3480, + "id": 3444, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3479, + "id": 3443, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 3484, - "src": "3576:16:9", + "scope": 3448, + "src": "3576:16:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3947,19 +3947,19 @@ }, "typeName": { "baseType": { - "id": 3477, + "id": 3441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3576:7:9", + "src": "3576:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3478, + "id": 3442, "nodeType": "ArrayTypeName", - "src": "3576:9:9", + "src": "3576:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3968,56 +3968,56 @@ "visibility": "internal" } ], - "src": "3575:18:9" + "src": "3575:18:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 3493, + "id": 3457, "nodeType": "FunctionDefinition", - "src": "3630:91:9", + "src": "3630:91:8", "nodes": [], "body": { - "id": 3492, + "id": 3456, "nodeType": "Block", - "src": "3683:38:9", + "src": "3683:38:8", "nodes": [], "statements": [ { "expression": { "expression": { - "id": 3489, + "id": 3453, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3221, - "src": "3700:7:9", + "referencedDeclaration": 3185, + "src": "3700:7:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 3490, + "id": 3454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3708:6:9", + "memberLocation": "3708:6:8", "memberName": "length", "nodeType": "MemberAccess", - "src": "3700:14:9", + "src": "3700:14:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3488, - "id": 3491, + "functionReturnParameters": 3452, + "id": 3455, "nodeType": "Return", - "src": "3693:21:9" + "src": "3693:21:8" } ] }, @@ -4026,26 +4026,26 @@ "kind": "function", "modifiers": [], "name": "memberCount", - "nameLocation": "3639:11:9", + "nameLocation": "3639:11:8", "parameters": { - "id": 3485, + "id": 3449, "nodeType": "ParameterList", "parameters": [], - "src": "3650:2:9" + "src": "3650:2:8" }, "returnParameters": { - "id": 3488, + "id": 3452, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3487, + "id": 3451, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 3493, - "src": "3674:7:9", + "scope": 3457, + "src": "3674:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4053,10 +4053,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3486, + "id": 3450, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3674:7:9", + "src": "3674:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4065,23 +4065,23 @@ "visibility": "internal" } ], - "src": "3673:9:9" + "src": "3673:9:8" }, - "scope": 3500, + "scope": 3464, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 3499, + "id": 3463, "nodeType": "VariableDeclaration", - "src": "3727:29:9", + "src": "3727:29:8", "nodes": [], "constant": false, "mutability": "mutable", "name": "__gap", - "nameLocation": "3751:5:9", - "scope": 3500, + "nameLocation": "3751:5:8", + "scope": 3464, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4090,36 +4090,36 @@ }, "typeName": { "baseType": { - "id": 3494, + "id": 3458, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3727:7:9", + "src": "3727:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3498, + "id": 3462, "length": { "commonType": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, - "id": 3497, + "id": 3461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", - "id": 3495, + "id": 3459, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3735:2:9", + "src": "3735:2:8", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" @@ -4130,28 +4130,28 @@ "operator": "-", "rightExpression": { "hexValue": "34", - "id": 3496, + "id": 3460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3740:1:9", + "src": "3740:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "3735:6:9", + "src": "3735:6:8", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" } }, "nodeType": "ArrayTypeName", - "src": "3727:15:9", + "src": "3727:15:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -4164,106 +4164,106 @@ "baseContracts": [ { "baseName": { - "id": 3209, + "id": 3173, "name": "INovaAdmin", "nameLocations": [ - "534:10:9" + "534:10:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4493, - "src": "534:10:9" + "referencedDeclaration": 3906, + "src": "534:10:8" }, - "id": 3210, + "id": 3174, "nodeType": "InheritanceSpecifier", - "src": "534:10:9" + "src": "534:10:8" }, { "baseName": { - "id": 3211, + "id": 3175, "name": "INovaMembership", "nameLocations": [ - "546:15:9" + "546:15:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4566, - "src": "546:15:9" + "referencedDeclaration": 3979, + "src": "546:15:8" }, - "id": 3212, + "id": 3176, "nodeType": "InheritanceSpecifier", - "src": "546:15:9" + "src": "546:15:8" }, { "baseName": { - "id": 3213, + "id": 3177, "name": "INovaMembershipSet", "nameLocations": [ - "563:18:9" + "563:18:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4705, - "src": "563:18:9" + "referencedDeclaration": 4094, + "src": "563:18:8" }, - "id": 3214, + "id": 3178, "nodeType": "InheritanceSpecifier", - "src": "563:18:9" + "src": "563:18:8" }, { "baseName": { - "id": 3215, + "id": 3179, "name": "INovaAdminSet", "nameLocations": [ - "583:13:9" + "583:13:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4659, - "src": "583:13:9" + "referencedDeclaration": 4072, + "src": "583:13:8" }, - "id": 3216, + "id": 3180, "nodeType": "InheritanceSpecifier", - "src": "583:13:9" + "src": "583:13:8" }, { "baseName": { - "id": 3217, + "id": 3181, "name": "AutIDAddress", "nameLocations": [ - "598:12:9" + "598:12:8" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 3009, - "src": "598:12:9" + "referencedDeclaration": 2973, + "src": "598:12:8" }, - "id": 3218, + "id": 3182, "nodeType": "InheritanceSpecifier", - "src": "598:12:9" + "src": "598:12:8" } ], "canonicalName": "NovaMembers", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 3208, + "id": 3172, "nodeType": "StructuredDocumentation", - "src": "372:129:9", + "src": "372:129:8", "text": "@title Nova\n @notice The extension of each DAO that integrates Aut\n @dev The extension of each DAO that integrates Aut" }, "fullyImplemented": false, "linearizedBaseContracts": [ - 3500, - 3009, - 4476, - 4659, - 4705, - 4566, - 4493 + 3464, + 2973, + 3889, + 4072, + 4094, + 3979, + 3906 ], "name": "NovaMembers", - "nameLocation": "519:11:9", - "scope": 3501, + "nameLocation": "519:11:8", + "scope": 3465, "usedErrors": [] } ], "license": "MIT" }, - "id": 9 + "id": 8 } \ No newline at end of file diff --git a/out/NovaRegistry.sol/NovaRegistry.json b/out/NovaRegistry.sol/NovaRegistry.json index ab3ea7b8..dc874e09 100644 --- a/out/NovaRegistry.sol/NovaRegistry.json +++ b/out/NovaRegistry.sol/NovaRegistry.json @@ -306,16 +306,16 @@ } ], "bytecode": { - "object": "0x60e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c63430008130033", - "sourceMap": "720:4664:66:-:0;;;1279:832;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:129;955:12;:10;:12::i;:::-;936:18;:32::i;:::-;-1:-1:-1;;;;;1410:31:66;::::1;1402:88;;;::::0;-1:-1:-1;;;1402:88:66;;867:2:167;1402:88:66::1;::::0;::::1;849:21:167::0;906:2;886:18;;;879:30;945:34;925:18;;;918:62;-1:-1:-1;;;996:18:167;;;989:42;1048:19;;1402:88:66::1;;;;;;;;;-1:-1:-1::0;;;;;1508:24:66;::::1;1500:69;;;::::0;-1:-1:-1;;;1500:69:66;;1280:2:167;1500:69:66::1;::::0;::::1;1262:21:167::0;;;1299:18;;;1292:30;1358:34;1338:18;;;1331:62;1410:18;;1500:69:66::1;1078:356:167::0;1500:69:66::1;-1:-1:-1::0;;;;;1587:23:66;::::1;1579:73;;;::::0;-1:-1:-1;;;1579:73:66;;1641:2:167;1579:73:66::1;::::0;::::1;1623:21:167::0;1680:2;1660:18;;;1653:30;1719:34;1699:18;;;1692:62;-1:-1:-1;;;1770:18:167;;;1763:35;1815:19;;1579:73:66::1;1439:401:167::0;1579:73:66::1;-1:-1:-1::0;;;;;1670:29:66;::::1;1662:83;;;::::0;-1:-1:-1;;;1662:83:66;;2047:2:167;1662:83:66::1;::::0;::::1;2029:21:167::0;2086:2;2066:18;;;2059:30;2125:34;2105:18;;;2098:62;-1:-1:-1;;;2176:18:167;;;2169:39;2225:19;;1662:83:66::1;1845:405:167::0;1662:83:66::1;-1:-1:-1::0;;;;;1756:22:66;;::::1;;::::0;1788:32;::::1;;::::0;1830:15:::1;:28:::0;;-1:-1:-1;;;;;;1830:28:66::1;1848:10;1830:28;::::0;;1888:32:::1;::::0;1910:9;;1888:32:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;2419:32:167;;;2401:51;;2389:2;2374:18;1888:32:66::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;1868:52:66::1;;::::0;1930:39:::1;1951:17:::0;1212::114;:30;;-1:-1:-1;;;;;;1212:30:114;-1:-1:-1;;;;;1212:30:114;;;;;;;;;;1143:106;1930:39:66::1;2046:15;-1:-1:-1::0;;;;;2030:48:66::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2014:87:66::1;;:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1979:9;:125:::0;;-1:-1:-1;;;;;;1979:125:66::1;-1:-1:-1::0;;;;;1979:125:66;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;720:4664:66;;-1:-1:-1;;;720:4664:66;5087:143;5168:7;5194:29;:27;:29::i;:::-;5187:36;;5087:143;:::o;2433:187:129:-;2525:6;;;-1:-1:-1;;;;;2541:17:129;;;-1:-1:-1;;;;;;2541:17:129;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;1481:547:114:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:114;1413:17;-1:-1:-1;;;;;1413:17:114;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:114;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:114;1481:547;:::o;720:4664:66:-;;;;;;;;:::o;14:177:167:-;93:13;;-1:-1:-1;;;;;135:31:167;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:464::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;527:59;;605:49;650:2;639:9;635:18;605:49;:::i;:::-;595:59;;196:464;;;;;;;:::o;2463:208::-;2533:6;2586:2;2574:9;2565:7;2561:23;2557:32;2554:52;;;2602:1;2599;2592:12;2554:52;2625:40;2655:9;2625:40;:::i;:::-;2615:50;2463:208;-1:-1:-1;;;2463:208:167:o;:::-;720:4664:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x60e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c63430008130033", + "sourceMap": "720:4664:44:-:0;;;1279:832;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:99;955:12;:10;:12::i;:::-;936:18;:32::i;:::-;-1:-1:-1;;;;;1410:31:44;::::1;1402:88;;;::::0;-1:-1:-1;;;1402:88:44;;867:2:134;1402:88:44::1;::::0;::::1;849:21:134::0;906:2;886:18;;;879:30;945:34;925:18;;;918:62;-1:-1:-1;;;996:18:134;;;989:42;1048:19;;1402:88:44::1;;;;;;;;;-1:-1:-1::0;;;;;1508:24:44;::::1;1500:69;;;::::0;-1:-1:-1;;;1500:69:44;;1280:2:134;1500:69:44::1;::::0;::::1;1262:21:134::0;;;1299:18;;;1292:30;1358:34;1338:18;;;1331:62;1410:18;;1500:69:44::1;1078:356:134::0;1500:69:44::1;-1:-1:-1::0;;;;;1587:23:44;::::1;1579:73;;;::::0;-1:-1:-1;;;1579:73:44;;1641:2:134;1579:73:44::1;::::0;::::1;1623:21:134::0;1680:2;1660:18;;;1653:30;1719:34;1699:18;;;1692:62;-1:-1:-1;;;1770:18:134;;;1763:35;1815:19;;1579:73:44::1;1439:401:134::0;1579:73:44::1;-1:-1:-1::0;;;;;1670:29:44;::::1;1662:83;;;::::0;-1:-1:-1;;;1662:83:44;;2047:2:134;1662:83:44::1;::::0;::::1;2029:21:134::0;2086:2;2066:18;;;2059:30;2125:34;2105:18;;;2098:62;-1:-1:-1;;;2176:18:134;;;2169:39;2225:19;;1662:83:44::1;1845:405:134::0;1662:83:44::1;-1:-1:-1::0;;;;;1756:22:44;;::::1;;::::0;1788:32;::::1;;::::0;1830:15:::1;:28:::0;;-1:-1:-1;;;;;;1830:28:44::1;1848:10;1830:28;::::0;;1888:32:::1;::::0;1910:9;;1888:32:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;2419:32:134;;;2401:51;;2389:2;2374:18;1888:32:44::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;1868:52:44::1;;::::0;1930:39:::1;1951:17:::0;1212::84;:30;;-1:-1:-1;;;;;;1212:30:84;-1:-1:-1;;;;;1212:30:84;;;;;;;;;;1143:106;1930:39:44::1;2046:15;-1:-1:-1::0;;;;;2030:48:44::1;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2014:87:44::1;;:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1979:9;:125:::0;;-1:-1:-1;;;;;;1979:125:44::1;-1:-1:-1::0;;;;;1979:125:44;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;720:4664:44;;-1:-1:-1;;;720:4664:44;5087:143;5168:7;5194:29;:27;:29::i;:::-;5187:36;;5087:143;:::o;2433:187:99:-;2525:6;;;-1:-1:-1;;;;;2541:17:99;;;-1:-1:-1;;;;;;2541:17:99;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;1481:547:84:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:84;1413:17;-1:-1:-1;;;;;1413:17:84;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:84;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:84;1481:547;:::o;720:4664:44:-;;;;;;;;:::o;14:177:134:-;93:13;;-1:-1:-1;;;;;135:31:134;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:464::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;527:59;;605:49;650:2;639:9;635:18;605:49;:::i;:::-;595:59;;196:464;;;;;;;:::o;2463:208::-;2533:6;2586:2;2574:9;2565:7;2561:23;2557:32;2554:52;;;2602:1;2599;2592:12;2554:52;2625:40;2655:9;2625:40;:::i;:::-;2615:50;2463:208;-1:-1:-1;;;2463:208:134:o;:::-;720:4664:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033", - "sourceMap": "720:4664:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:183;;;;;;:::i;:::-;;:::i;:::-;;2318:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1148:27;;;;;-1:-1:-1;;;;;1148:27:66;;;;;;-1:-1:-1;;;;;1249:32:167;;;1231:51;;1219:2;1204:18;1148:27:66;1065:223:167;3770:202:66;;;;;;:::i;:::-;;:::i;1045:39::-;;;;;1293:144:114;;;;;;:::i;:::-;1377:4;1413:17;-1:-1:-1;;;;;1400:30:114;;;1413:17;;1400:30;;1293:144;;;;1666:14:167;;1659:22;1641:41;;1629:2;1614:18;1293:144:114;1501:187:167;1831:101:129;;;:::i;1201:85::-;1273:6;;-1:-1:-1;;;;;1273:6:129;1201:85;;2647:570:66;;;;;;:::i;:::-;;:::i;1018:119:114:-;1078:17;1113;-1:-1:-1;;;;;1113:17:114;1018:119;;2461:131:66;;;;;;:::i;:::-;;:::i;3506:167::-;;;;;;:::i;:::-;;:::i;1090:52::-;;;;;1005:34;;;;;976:22;;;;;;:::i;:::-;;:::i;2081:198:129:-;;;;;;:::i;:::-;;:::i;3283:183:66:-;1094:13:129;:11;:13::i;:::-;-1:-1:-1;;;;;3359:22:66;::::1;3351:61;;;::::0;-1:-1:-1;;;3351:61:66;;3510:2:167;3351:61:66::1;::::0;::::1;3492:21:167::0;3549:2;3529:18;;;3522:30;3588:28;3568:18;;;3561:56;3634:18;;3351:61:66::1;;;;;;;;;3422:37;::::0;-1:-1:-1;;;3422:37:66;;-1:-1:-1;;;;;1249:32:167;;;3422:37:66::1;::::0;::::1;1231:51:167::0;3422:17:66::1;:27;::::0;::::1;::::0;1204:18:167;;3422:37:66::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3283:183:::0;:::o;2318:88::-;2359:16;2394:5;2387:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2387:12:66;;;;;;;;;;;;;;;;;;;;;;;2318:88;:::o;3770:202::-;1094:13:129;:11;:13::i;:::-;-1:-1:-1;;;;;3857:22:66;::::1;3849:61;;;::::0;-1:-1:-1;;;3849:61:66;;3510:2:167;3849:61:66::1;::::0;::::1;3492:21:167::0;3549:2;3529:18;;;3522:30;3588:28;3568:18;;;3561:56;3634:18;;3849:61:66::1;3308:350:167::0;3849:61:66::1;3920:45;::::0;-1:-1:-1;;;3920:45:66;;-1:-1:-1;;;;;1249:32:167;;;3920:45:66::1;::::0;::::1;1231:51:167::0;3920:17:66::1;:35;::::0;::::1;::::0;1204:18:167;;3920:45:66::1;1065:223:167::0;1831:101:129;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2647:570:66:-;2745:12;2769:59;2799:6;2807:8;2817:10;2769:29;:59::i;:::-;2838:17;:15;:17::i;:::-;2866;-1:-1:-1;;;2948:12:66;:10;:12::i;:::-;2962:9;2973:6;2981:8;2991:10;3003:14;2886:141;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2886:141:66;;;;;;;-1:-1:-1;;;;;2886:141:66;;;;;;;;;;;2866:161;;3076:17;3096:4;3052:49;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3037:65;;3112:13;:27;3126:12;:10;:12::i;:::-;-1:-1:-1;;;;;3112:27:66;;;;;;;;;;;;;;;;;-1:-1:-1;3112:27:66;;;:38;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3112:38:66;;;;;;;;;;;;3160:5;:16;;;;;;;;;;;;;;;;;;;;;3192:18;;1231:51:167;;;3192:18:66;;1204::167;3192::66;;;;;;;2759:458;2647:570;;;;;:::o;2461:131::-;-1:-1:-1;;;;;2562:23:66;;;;;;:13;:23;;;;;;;;;2555:30;;;;;;;;;;;;;;;;;2527:16;;2555:30;;;2562:23;2555:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2555:30:66;;;;;;;;;;;;;;;;;;;;;;;2461:131;;;:::o;3506:167::-;1094:13:129;:11;:13::i;:::-;3630:9:66::1;:36:::0;;-1:-1:-1;;;;;;3630:36:66::1;-1:-1:-1::0;;;;;3630:36:66;;;::::1;::::0;;;::::1;::::0;;3506:167::o;976:22::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:22:66;;-1:-1:-1;976:22:66;:::o;2081:198:129:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:129;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:129;;5262:2:167;2161:73:129::1;::::0;::::1;5244:21:167::0;5301:2;5281:18;;;5274:30;5340:34;5320:18;;;5313:62;-1:-1:-1;;;5391:18:167;;;5384:36;5437:19;;2161:73:129::1;5060:402:167::0;2161:73:129::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1433:12;:10;:12::i;:::-;-1:-1:-1;;;;;1422:23:129;:7;1273:6;;-1:-1:-1;;;;;1273:6:129;;1201:85;1422:7;-1:-1:-1;;;;;1422:23:129;;1414:68;;;;-1:-1:-1;;;1414:68:129;;5669:2:167;1414:68:129;;;5651:21:167;;;5688:18;;;5681:30;5747:34;5727:18;;;5720:62;5799:18;;1414:68:129;5467:356:167;2433:187:129;2525:6;;;-1:-1:-1;;;;;2541:17:129;;;-1:-1:-1;;;;;;2541:17:129;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;4708:373:66:-;4848:1;4839:6;:10;:24;;;;;4862:1;4853:6;:10;4839:24;4831:71;;;;-1:-1:-1;;;4831:71:66;;6030:2:167;4831:71:66;;;6012:21:167;6069:2;6049:18;;;6042:30;6108:34;6088:18;;;6081:62;-1:-1:-1;;;6159:18:167;;;6152:32;6201:19;;4831:71:66;5828:398:167;4831:71:66;4926:8;4920:22;4946:1;4920:27;4912:68;;;;-1:-1:-1;;;4912:68:66;;6433:2:167;4912:68:66;;;6415:21:167;6472:2;6452:18;;;6445:30;6511;6491:18;;;6484:58;6559:18;;4912:68:66;6231:352:167;4912:68:66;5011:1;4998:10;:14;:33;;;;;5029:2;5016:10;:15;4998:33;4990:84;;;;-1:-1:-1;;;4990:84:66;;6790:2:167;4990:84:66;;;6772:21:167;6829:2;6809:18;;;6802:30;6868:34;6848:18;;;6841:62;-1:-1:-1;;;6919:18:167;;;6912:36;6965:19;;4990:84:66;6588:402:167;4990:84:66;4708:373;;;:::o;3978:586::-;4049:15;;-1:-1:-1;;;;;4049:15:66;4033:12;:10;:12::i;:::-;-1:-1:-1;;;;;4033:31:66;;:76;;;;4084:17;-1:-1:-1;;;;;4084:23:66;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4068:41:66;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4068:41:66;;4033:76;4029:89;;;3978:586::o;4029:89::-;4139:9;;-1:-1:-1;;;;;4139:9:66;4131:32;4127:431;;4184:9;;-1:-1:-1;;;;;4184:9:66;:19;4204:12;:10;:12::i;:::-;4184:33;;-1:-1:-1;;;;;;4184:33:66;;;;;;;-1:-1:-1;;;;;1249:32:167;;;4184:33:66;;;1231:51:167;1204:18;;4184:33:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4179:102;;4244:22;;-1:-1:-1;;;4244:22:66;;;;;;;;;;;4179:102;4300:13;:27;4314:12;:10;:12::i;:::-;-1:-1:-1;;;;;4300:27:66;;;;;;;;;;;;-1:-1:-1;4300:27:66;;;:34;:39;;4294:254;;4367:33;;-1:-1:-1;;;4367:33:66;;;;;;;;;;;5087:143;5168:7;5194:29;:27;:29::i;:::-;5187:36;;5087:143;:::o;1481:547:114:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:114;1413:17;-1:-1:-1;;;;;1413:17:114;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:114;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:114;1481:547;:::o;-1:-1:-1:-;;;;;;;;:::o;14:131:167:-;-1:-1:-1;;;;;89:31:167;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:167:o;402:658::-;573:2;625:21;;;695:13;;598:18;;;717:22;;;544:4;;573:2;796:15;;;;770:2;755:18;;;544:4;839:195;853:6;850:1;847:13;839:195;;;918:13;;-1:-1:-1;;;;;914:39:167;902:52;;1009:15;;;;974:12;;;;950:1;868:9;839:195;;;-1:-1:-1;1051:3:167;;402:658;-1:-1:-1;;;;;;402:658:167:o;1693:127::-;1754:10;1749:3;1745:20;1742:1;1735:31;1785:4;1782:1;1775:15;1809:4;1806:1;1799:15;1825:1058;1912:6;1920;1928;1981:2;1969:9;1960:7;1956:23;1952:32;1949:52;;;1997:1;1994;1987:12;1949:52;2033:9;2020:23;2010:33;;2094:2;2083:9;2079:18;2066:32;2117:18;2158:2;2150:6;2147:14;2144:34;;;2174:1;2171;2164:12;2144:34;2212:6;2201:9;2197:22;2187:32;;2257:7;2250:4;2246:2;2242:13;2238:27;2228:55;;2279:1;2276;2269:12;2228:55;2315:2;2302:16;2337:2;2333;2330:10;2327:36;;;2343:18;;:::i;:::-;2418:2;2412:9;2386:2;2472:13;;-1:-1:-1;;2468:22:167;;;2492:2;2464:31;2460:40;2448:53;;;2516:18;;;2536:22;;;2513:46;2510:72;;;2562:18;;:::i;:::-;2602:10;2598:2;2591:22;2637:2;2629:6;2622:18;2677:7;2672:2;2667;2663;2659:11;2655:20;2652:33;2649:53;;;2698:1;2695;2688:12;2649:53;2754:2;2749;2745;2741:11;2736:2;2728:6;2724:15;2711:46;2799:1;2794:2;2789;2781:6;2777:15;2773:24;2766:35;2820:6;2810:16;;;;;;;2873:2;2862:9;2858:18;2845:32;2835:42;;1825:1058;;;;;:::o;3123:180::-;3182:6;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;-1:-1:-1;3274:23:167;;3123:180;-1:-1:-1;3123:180:167:o;3663:423::-;3705:3;3743:5;3737:12;3770:6;3765:3;3758:19;3795:1;3805:162;3819:6;3816:1;3813:13;3805:162;;;3881:4;3937:13;;;3933:22;;3927:29;3909:11;;;3905:20;;3898:59;3834:12;3805:162;;;3809:3;4012:1;4005:4;3996:6;3991:3;3987:16;3983:27;3976:38;4075:4;4068:2;4064:7;4059:2;4051:6;4047:15;4043:29;4038:3;4034:39;4030:50;4023:57;;;3663:423;;;;:::o;4091:644::-;4343:4;4389:1;4385;4380:3;4376:11;4372:19;4430:2;4422:6;4418:15;4407:9;4400:34;4482:2;4474:6;4470:15;4465:2;4454:9;4450:18;4443:43;4522:6;4517:2;4506:9;4502:18;4495:34;4565:3;4560:2;4549:9;4545:18;4538:31;4586:46;4627:3;4616:9;4612:19;4604:6;4586:46;:::i;:::-;4663:3;4648:19;;4641:35;;;;4713:15;;;;4707:3;4692:19;;;4685:44;-1:-1:-1;4578:54:167;4091:644;-1:-1:-1;;;;4091:644:167:o;4740:315::-;-1:-1:-1;;;;;4915:32:167;;4897:51;;4984:2;4979;4964:18;;4957:30;;;-1:-1:-1;;5004:45:167;;5030:18;;5022:6;5004:45;:::i;:::-;4996:53;4740:315;-1:-1:-1;;;;4740:315:167:o;6995:251::-;7065:6;7118:2;7106:9;7097:7;7093:23;7089:32;7086:52;;;7134:1;7131;7124:12;7086:52;7166:9;7160:16;7185:31;7210:5;7185:31;:::i;7251:277::-;7318:6;7371:2;7359:9;7350:7;7346:23;7342:32;7339:52;;;7387:1;7384;7377:12;7339:52;7419:9;7413:16;7472:5;7465:13;7458:21;7451:5;7448:32;7438:60;;7494:1;7491;7484:12", + "object": "0x60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033", + "sourceMap": "720:4664:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:183;;;;;;:::i;:::-;;:::i;:::-;;2318:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1148:27;;;;;-1:-1:-1;;;;;1148:27:44;;;;;;-1:-1:-1;;;;;1249:32:134;;;1231:51;;1219:2;1204:18;1148:27:44;1065:223:134;3770:202:44;;;;;;:::i;:::-;;:::i;1045:39::-;;;;;1293:144:84;;;;;;:::i;:::-;1377:4;1413:17;-1:-1:-1;;;;;1400:30:84;;;1413:17;;1400:30;;1293:144;;;;1666:14:134;;1659:22;1641:41;;1629:2;1614:18;1293:144:84;1501:187:134;1831:101:99;;;:::i;1201:85::-;1273:6;;-1:-1:-1;;;;;1273:6:99;1201:85;;2647:570:44;;;;;;:::i;:::-;;:::i;1018:119:84:-;1078:17;1113;-1:-1:-1;;;;;1113:17:84;1018:119;;2461:131:44;;;;;;:::i;:::-;;:::i;3506:167::-;;;;;;:::i;:::-;;:::i;1090:52::-;;;;;1005:34;;;;;976:22;;;;;;:::i;:::-;;:::i;2081:198:99:-;;;;;;:::i;:::-;;:::i;3283:183:44:-;1094:13:99;:11;:13::i;:::-;-1:-1:-1;;;;;3359:22:44;::::1;3351:61;;;::::0;-1:-1:-1;;;3351:61:44;;3510:2:134;3351:61:44::1;::::0;::::1;3492:21:134::0;3549:2;3529:18;;;3522:30;3588:28;3568:18;;;3561:56;3634:18;;3351:61:44::1;;;;;;;;;3422:37;::::0;-1:-1:-1;;;3422:37:44;;-1:-1:-1;;;;;1249:32:134;;;3422:37:44::1;::::0;::::1;1231:51:134::0;3422:17:44::1;:27;::::0;::::1;::::0;1204:18:134;;3422:37:44::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3283:183:::0;:::o;2318:88::-;2359:16;2394:5;2387:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2387:12:44;;;;;;;;;;;;;;;;;;;;;;;2318:88;:::o;3770:202::-;1094:13:99;:11;:13::i;:::-;-1:-1:-1;;;;;3857:22:44;::::1;3849:61;;;::::0;-1:-1:-1;;;3849:61:44;;3510:2:134;3849:61:44::1;::::0;::::1;3492:21:134::0;3549:2;3529:18;;;3522:30;3588:28;3568:18;;;3561:56;3634:18;;3849:61:44::1;3308:350:134::0;3849:61:44::1;3920:45;::::0;-1:-1:-1;;;3920:45:44;;-1:-1:-1;;;;;1249:32:134;;;3920:45:44::1;::::0;::::1;1231:51:134::0;3920:17:44::1;:35;::::0;::::1;::::0;1204:18:134;;3920:45:44::1;1065:223:134::0;1831:101:99;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2647:570:44:-;2745:12;2769:59;2799:6;2807:8;2817:10;2769:29;:59::i;:::-;2838:17;:15;:17::i;:::-;2866;-1:-1:-1;;;2948:12:44;:10;:12::i;:::-;2962:9;2973:6;2981:8;2991:10;3003:14;2886:141;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2886:141:44;;;;;;;-1:-1:-1;;;;;2886:141:44;;;;;;;;;;;2866:161;;3076:17;3096:4;3052:49;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3037:65;;3112:13;:27;3126:12;:10;:12::i;:::-;-1:-1:-1;;;;;3112:27:44;;;;;;;;;;;;;;;;;-1:-1:-1;3112:27:44;;;:38;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3112:38:44;;;;;;;;;;;;3160:5;:16;;;;;;;;;;;;;;;;;;;;;3192:18;;1231:51:134;;;3192:18:44;;1204::134;3192::44;;;;;;;2759:458;2647:570;;;;;:::o;2461:131::-;-1:-1:-1;;;;;2562:23:44;;;;;;:13;:23;;;;;;;;;2555:30;;;;;;;;;;;;;;;;;2527:16;;2555:30;;;2562:23;2555:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2555:30:44;;;;;;;;;;;;;;;;;;;;;;;2461:131;;;:::o;3506:167::-;1094:13:99;:11;:13::i;:::-;3630:9:44::1;:36:::0;;-1:-1:-1;;;;;;3630:36:44::1;-1:-1:-1::0;;;;;3630:36:44;;;::::1;::::0;;;::::1;::::0;;3506:167::o;976:22::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:22:44;;-1:-1:-1;976:22:44;:::o;2081:198:99:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:99;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:99;;5262:2:134;2161:73:99::1;::::0;::::1;5244:21:134::0;5301:2;5281:18;;;5274:30;5340:34;5320:18;;;5313:62;-1:-1:-1;;;5391:18:134;;;5384:36;5437:19;;2161:73:99::1;5060:402:134::0;2161:73:99::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1433:12;:10;:12::i;:::-;-1:-1:-1;;;;;1422:23:99;:7;1273:6;;-1:-1:-1;;;;;1273:6:99;;1201:85;1422:7;-1:-1:-1;;;;;1422:23:99;;1414:68;;;;-1:-1:-1;;;1414:68:99;;5669:2:134;1414:68:99;;;5651:21:134;;;5688:18;;;5681:30;5747:34;5727:18;;;5720:62;5799:18;;1414:68:99;5467:356:134;2433:187:99;2525:6;;;-1:-1:-1;;;;;2541:17:99;;;-1:-1:-1;;;;;;2541:17:99;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;4708:373:44:-;4848:1;4839:6;:10;:24;;;;;4862:1;4853:6;:10;4839:24;4831:71;;;;-1:-1:-1;;;4831:71:44;;6030:2:134;4831:71:44;;;6012:21:134;6069:2;6049:18;;;6042:30;6108:34;6088:18;;;6081:62;-1:-1:-1;;;6159:18:134;;;6152:32;6201:19;;4831:71:44;5828:398:134;4831:71:44;4926:8;4920:22;4946:1;4920:27;4912:68;;;;-1:-1:-1;;;4912:68:44;;6433:2:134;4912:68:44;;;6415:21:134;6472:2;6452:18;;;6445:30;6511;6491:18;;;6484:58;6559:18;;4912:68:44;6231:352:134;4912:68:44;5011:1;4998:10;:14;:33;;;;;5029:2;5016:10;:15;4998:33;4990:84;;;;-1:-1:-1;;;4990:84:44;;6790:2:134;4990:84:44;;;6772:21:134;6829:2;6809:18;;;6802:30;6868:34;6848:18;;;6841:62;-1:-1:-1;;;6919:18:134;;;6912:36;6965:19;;4990:84:44;6588:402:134;4990:84:44;4708:373;;;:::o;3978:586::-;4049:15;;-1:-1:-1;;;;;4049:15:44;4033:12;:10;:12::i;:::-;-1:-1:-1;;;;;4033:31:44;;:76;;;;4084:17;-1:-1:-1;;;;;4084:23:44;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4068:41:44;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4068:41:44;;4033:76;4029:89;;;3978:586::o;4029:89::-;4139:9;;-1:-1:-1;;;;;4139:9:44;4131:32;4127:431;;4184:9;;-1:-1:-1;;;;;4184:9:44;:19;4204:12;:10;:12::i;:::-;4184:33;;-1:-1:-1;;;;;;4184:33:44;;;;;;;-1:-1:-1;;;;;1249:32:134;;;4184:33:44;;;1231:51:134;1204:18;;4184:33:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4179:102;;4244:22;;-1:-1:-1;;;4244:22:44;;;;;;;;;;;4179:102;4300:13;:27;4314:12;:10;:12::i;:::-;-1:-1:-1;;;;;4300:27:44;;;;;;;;;;;;-1:-1:-1;4300:27:44;;;:34;:39;;4294:254;;4367:33;;-1:-1:-1;;;4367:33:44;;;;;;;;;;;5087:143;5168:7;5194:29;:27;:29::i;:::-;5187:36;;5087:143;:::o;1481:547:84:-;1543:11;1589:2;1570:8;:21;;;;:55;;-1:-1:-1;1377:4:84;1413:17;-1:-1:-1;;;;;1413:17:84;1614:10;1400:30;1595;1566:456;;;-1:-1:-1;;;1931:14:84;1927:22;1914:36;1911:2;1907:44;1481:547;:::o;1566:456::-;-1:-1:-1;2001:10:84;1481:547;:::o;-1:-1:-1:-;;;;;;;;:::o;14:131:134:-;-1:-1:-1;;;;;89:31:134;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:134:o;402:658::-;573:2;625:21;;;695:13;;598:18;;;717:22;;;544:4;;573:2;796:15;;;;770:2;755:18;;;544:4;839:195;853:6;850:1;847:13;839:195;;;918:13;;-1:-1:-1;;;;;914:39:134;902:52;;1009:15;;;;974:12;;;;950:1;868:9;839:195;;;-1:-1:-1;1051:3:134;;402:658;-1:-1:-1;;;;;;402:658:134:o;1693:127::-;1754:10;1749:3;1745:20;1742:1;1735:31;1785:4;1782:1;1775:15;1809:4;1806:1;1799:15;1825:1058;1912:6;1920;1928;1981:2;1969:9;1960:7;1956:23;1952:32;1949:52;;;1997:1;1994;1987:12;1949:52;2033:9;2020:23;2010:33;;2094:2;2083:9;2079:18;2066:32;2117:18;2158:2;2150:6;2147:14;2144:34;;;2174:1;2171;2164:12;2144:34;2212:6;2201:9;2197:22;2187:32;;2257:7;2250:4;2246:2;2242:13;2238:27;2228:55;;2279:1;2276;2269:12;2228:55;2315:2;2302:16;2337:2;2333;2330:10;2327:36;;;2343:18;;:::i;:::-;2418:2;2412:9;2386:2;2472:13;;-1:-1:-1;;2468:22:134;;;2492:2;2464:31;2460:40;2448:53;;;2516:18;;;2536:22;;;2513:46;2510:72;;;2562:18;;:::i;:::-;2602:10;2598:2;2591:22;2637:2;2629:6;2622:18;2677:7;2672:2;2667;2663;2659:11;2655:20;2652:33;2649:53;;;2698:1;2695;2688:12;2649:53;2754:2;2749;2745;2741:11;2736:2;2728:6;2724:15;2711:46;2799:1;2794:2;2789;2781:6;2777:15;2773:24;2766:35;2820:6;2810:16;;;;;;;2873:2;2862:9;2858:18;2845:32;2835:42;;1825:1058;;;;;:::o;3123:180::-;3182:6;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;-1:-1:-1;3274:23:134;;3123:180;-1:-1:-1;3123:180:134:o;3663:423::-;3705:3;3743:5;3737:12;3770:6;3765:3;3758:19;3795:1;3805:162;3819:6;3816:1;3813:13;3805:162;;;3881:4;3937:13;;;3933:22;;3927:29;3909:11;;;3905:20;;3898:59;3834:12;3805:162;;;3809:3;4012:1;4005:4;3996:6;3991:3;3987:16;3983:27;3976:38;4075:4;4068:2;4064:7;4059:2;4051:6;4047:15;4043:29;4038:3;4034:39;4030:50;4023:57;;;3663:423;;;;:::o;4091:644::-;4343:4;4389:1;4385;4380:3;4376:11;4372:19;4430:2;4422:6;4418:15;4407:9;4400:34;4482:2;4474:6;4470:15;4465:2;4454:9;4450:18;4443:43;4522:6;4517:2;4506:9;4502:18;4495:34;4565:3;4560:2;4549:9;4545:18;4538:31;4586:46;4627:3;4616:9;4612:19;4604:6;4586:46;:::i;:::-;4663:3;4648:19;;4641:35;;;;4713:15;;;;4707:3;4692:19;;;4685:44;-1:-1:-1;4578:54:134;4091:644;-1:-1:-1;;;;4091:644:134:o;4740:315::-;-1:-1:-1;;;;;4915:32:134;;4897:51;;4984:2;4979;4964:18;;4957:30;;;-1:-1:-1;;5004:45:134;;5030:18;;5022:6;5004:45;:::i;:::-;4996:53;4740:315;-1:-1:-1;;;;4740:315:134:o;6995:251::-;7065:6;7118:2;7106:9;7097:7;7093:23;7089:32;7086:52;;;7134:1;7131;7124:12;7086:52;7166:9;7160:16;7185:31;7210:5;7185:31;:::i;7251:277::-;7318:6;7371:2;7359:9;7350:7;7346:23;7342:32;7339:52;;;7387:1;7384;7377:12;7339:52;7419:9;7413:16;7472:5;7465:13;7458:21;7451:5;7448:32;7438:60;;7494:1;7491;7484:12", "linkReferences": {}, "immutableReferences": { - "7417": [ + "5733": [ { "start": 664, "length": 32 @@ -325,7 +325,7 @@ "length": 32 } ], - "7419": [ + "5735": [ { "start": 415, "length": 32 @@ -335,7 +335,7 @@ "length": 32 } ], - "7422": [ + "5738": [ { "start": 624, "length": 32 @@ -377,7 +377,7 @@ "upgradeNova(address)": "08023018", "upgradeableBeacon()": "d2609520" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedForewarder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"autIDAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"novaLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pluginRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyDeployedANova\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unallowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NovaDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"allowlist\",\"outputs\":[{\"internalType\":\"contract IAllowlist\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"autIDAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"commitment\",\"type\":\"uint256\"}],\"name\":\"deployNova\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"nova\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"getNovaByDeployer\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNovas\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"novas\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAllowlist\",\"type\":\"address\"}],\"name\":\"setAllowlistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"tranferBeaconOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newLogic\",\"type\":\"address\"}],\"name\":\"upgradeNova\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upgradeableBeacon\",\"outputs\":[{\"internalType\":\"contract UpgradeableBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deployNova(uint256,string,uint256)\":{\"details\":\"depoloy beacon proxy for a new nova\"},\"getTrustedForwarder()\":{\"returns\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"}},\"isTrustedForwarder(address)\":{\"params\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"},\"returns\":{\"_0\":\"isTrustedForwarder `true` if the Forwarder is trusted to forward relayed transactions by this Recipient.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAllowlistAddress(address)\":{\"details\":\"sets a new allowlist\"},\"tranferBeaconOwnership(address)\":{\"details\":\"transfer beacon ownership (hopefuly to a new and better-implemented registry)\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeNova(address)\":{\"details\":\"upgrades nova beacon to the new logic contract\"}},\"title\":\"NovaRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getTrustedForwarder()\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.Method is not a required method to allow Recipients to trust multiple Forwarders. Not recommended yet.\"},\"isTrustedForwarder(address)\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/nova/NovaRegistry.sol\":\"NovaRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedForewarder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"autIDAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"novaLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pluginRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyDeployedANova\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unallowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NovaDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"allowlist\",\"outputs\":[{\"internalType\":\"contract IAllowlist\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"autIDAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"metadata\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"commitment\",\"type\":\"uint256\"}],\"name\":\"deployNova\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"nova\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"getNovaByDeployer\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNovas\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"novas\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAllowlist\",\"type\":\"address\"}],\"name\":\"setAllowlistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"tranferBeaconOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newLogic\",\"type\":\"address\"}],\"name\":\"upgradeNova\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upgradeableBeacon\",\"outputs\":[{\"internalType\":\"contract UpgradeableBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deployNova(uint256,string,uint256)\":{\"details\":\"depoloy beacon proxy for a new nova\"},\"getTrustedForwarder()\":{\"returns\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"}},\"isTrustedForwarder(address)\":{\"params\":{\"forwarder\":\"The address of the Forwarder contract that is being used.\"},\"returns\":{\"_0\":\"isTrustedForwarder `true` if the Forwarder is trusted to forward relayed transactions by this Recipient.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAllowlistAddress(address)\":{\"details\":\"sets a new allowlist\"},\"tranferBeaconOwnership(address)\":{\"details\":\"transfer beacon ownership (hopefuly to a new and better-implemented registry)\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeNova(address)\":{\"details\":\"upgrades nova beacon to the new logic contract\"}},\"title\":\"NovaRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getTrustedForwarder()\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.Method is not a required method to allow Recipients to trust multiple Forwarders. Not recommended yet.\"},\"isTrustedForwarder(address)\":{\"notice\":\":warning: **Warning** :warning: The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/nova/NovaRegistry.sol\":\"NovaRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -776,6 +776,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -840,6 +848,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -929,10 +945,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1117,49 +1133,49 @@ }, "ast": { "absolutePath": "contracts/nova/NovaRegistry.sol", - "id": 7806, + "id": 6122, "exportedSymbols": { "BeaconProxy": [ - 59826 + 57817 ], "Context": [ - 62110 + 59412 ], "ERC2771Recipient": [ - 56661 + 54652 ], "IAllowlist": [ - 13199 + 11190 ], "IModuleRegistry": [ - 6730 + 5018 ], "INovaRegistry": [ - 8146 + 6462 ], "IPluginRegistry": [ - 11258 + 9574 ], "Nova": [ - 7375 + 5691 ], "NovaRegistry": [ - 7805 + 6121 ], "Ownable": [ - 59377 + 57368 ], "UpgradeableBeacon": [ - 59911 + 57902 ] }, "nodeType": "SourceUnit", - "src": "39:5346:66", + "src": "39:5346:44", "nodes": [ { - "id": 7377, + "id": 5693, "nodeType": "PragmaDirective", - "src": "39:23:66", + "src": "39:23:44", "nodes": [], "literals": [ "solidity", @@ -1168,24 +1184,24 @@ ] }, { - "id": 7379, + "id": 5695, "nodeType": "ImportDirective", - "src": "64:81:66", + "src": "64:81:44", "nodes": [], "absolutePath": "node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 59827, + "scope": 6122, + "sourceUnit": 57818, "symbolAliases": [ { "foreign": { - "id": 7378, + "id": 5694, "name": "BeaconProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59826, - "src": "72:11:66", + "referencedDeclaration": 57817, + "src": "72:11:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1194,24 +1210,24 @@ "unitAlias": "" }, { - "id": 7381, + "id": 5697, "nodeType": "ImportDirective", - "src": "146:93:66", + "src": "146:93:44", "nodes": [], "absolutePath": "node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 59912, + "scope": 6122, + "sourceUnit": 57903, "symbolAliases": [ { "foreign": { - "id": 7380, + "id": 5696, "name": "UpgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59911, - "src": "154:17:66", + "referencedDeclaration": 57902, + "src": "154:17:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1220,36 +1236,36 @@ "unitAlias": "" }, { - "id": 7384, + "id": 5700, "nodeType": "ImportDirective", - "src": "240:76:66", + "src": "240:76:44", "nodes": [], "absolutePath": "node_modules/@openzeppelin/contracts/access/Ownable.sol", "file": "@openzeppelin/contracts/access/Ownable.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 59378, + "scope": 6122, + "sourceUnit": 57369, "symbolAliases": [ { "foreign": { - "id": 7382, + "id": 5698, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59377, - "src": "248:7:66", + "referencedDeclaration": 57368, + "src": "248:7:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 7383, + "id": 5699, "name": "Context", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62110, - "src": "257:7:66", + "referencedDeclaration": 59412, + "src": "257:7:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1258,24 +1274,24 @@ "unitAlias": "" }, { - "id": 7386, + "id": 5702, "nodeType": "ImportDirective", - "src": "317:77:66", + "src": "317:77:44", "nodes": [], "absolutePath": "node_modules/@opengsn/contracts/src/ERC2771Recipient.sol", "file": "@opengsn/contracts/src/ERC2771Recipient.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 56662, + "scope": 6122, + "sourceUnit": 54653, "symbolAliases": [ { "foreign": { - "id": 7385, + "id": 5701, "name": "ERC2771Recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56661, - "src": "325:16:66", + "referencedDeclaration": 54652, + "src": "325:16:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1284,24 +1300,24 @@ "unitAlias": "" }, { - "id": 7388, + "id": 5704, "nodeType": "ImportDirective", - "src": "396:72:66", + "src": "396:72:44", "nodes": [], "absolutePath": "contracts/modules/registry/IModuleRegistry.sol", "file": "../modules/registry/IModuleRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 6731, + "scope": 6122, + "sourceUnit": 5019, "symbolAliases": [ { "foreign": { - "id": 7387, + "id": 5703, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6730, - "src": "404:15:66", + "referencedDeclaration": 5018, + "src": "404:15:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1310,24 +1326,24 @@ "unitAlias": "" }, { - "id": 7390, + "id": 5706, "nodeType": "ImportDirective", - "src": "469:72:66", + "src": "469:72:44", "nodes": [], "absolutePath": "contracts/plugins/registry/IPluginRegistry.sol", "file": "../plugins/registry/IPluginRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 11259, + "scope": 6122, + "sourceUnit": 9575, "symbolAliases": [ { "foreign": { - "id": 7389, + "id": 5705, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11258, - "src": "477:15:66", + "referencedDeclaration": 9574, + "src": "477:15:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1336,24 +1352,24 @@ "unitAlias": "" }, { - "id": 7392, + "id": 5708, "nodeType": "ImportDirective", - "src": "542:61:66", + "src": "542:61:44", "nodes": [], "absolutePath": "contracts/nova/interfaces/INovaRegistry.sol", "file": "./interfaces/INovaRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 8147, + "scope": 6122, + "sourceUnit": 6463, "symbolAliases": [ { "foreign": { - "id": 7391, + "id": 5707, "name": "INovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8146, - "src": "550:13:66", + "referencedDeclaration": 6462, + "src": "550:13:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1362,24 +1378,24 @@ "unitAlias": "" }, { - "id": 7394, + "id": 5710, "nodeType": "ImportDirective", - "src": "604:51:66", + "src": "604:51:44", "nodes": [], "absolutePath": "contracts/utils/IAllowlist.sol", "file": "../utils/IAllowlist.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 13200, + "scope": 6122, + "sourceUnit": 11191, "symbolAliases": [ { "foreign": { - "id": 7393, + "id": 5709, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13199, - "src": "612:10:66", + "referencedDeclaration": 11190, + "src": "612:10:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1388,24 +1404,24 @@ "unitAlias": "" }, { - "id": 7396, + "id": 5712, "nodeType": "ImportDirective", - "src": "656:38:66", + "src": "656:38:44", "nodes": [], "absolutePath": "contracts/nova/Nova.sol", "file": "../nova/Nova.sol", "nameLocation": "-1:-1:-1", - "scope": 7806, - "sourceUnit": 7376, + "scope": 6122, + "sourceUnit": 5692, "symbolAliases": [ { "foreign": { - "id": 7395, + "id": 5711, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7375, - "src": "664:4:66", + "referencedDeclaration": 5691, + "src": "664:4:44", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1414,33 +1430,33 @@ "unitAlias": "" }, { - "id": 7805, + "id": 6121, "nodeType": "ContractDefinition", - "src": "720:4664:66", + "src": "720:4664:44", "nodes": [ { - "id": 7407, + "id": 5723, "nodeType": "EventDefinition", - "src": "792:28:66", + "src": "792:28:44", "nodes": [], "anonymous": false, "eventSelector": "afab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b", "name": "NovaDeployed", - "nameLocation": "798:12:66", + "nameLocation": "798:12:44", "parameters": { - "id": 7406, + "id": 5722, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7405, + "id": 5721, "indexed": false, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7407, - "src": "811:7:66", + "scope": 5723, + "src": "811:7:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1448,10 +1464,10 @@ "typeString": "address" }, "typeName": { - "id": 7404, + "id": 5720, "name": "address", "nodeType": "ElementaryTypeName", - "src": "811:7:66", + "src": "811:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1461,19 +1477,19 @@ "visibility": "internal" } ], - "src": "810:9:66" + "src": "810:9:44" } }, { - "id": 7412, + "id": 5728, "nodeType": "VariableDeclaration", - "src": "927:43:66", + "src": "927:43:44", "nodes": [], "constant": false, "mutability": "mutable", "name": "novaDeployers", - "nameLocation": "957:13:66", - "scope": 7805, + "nameLocation": "957:13:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1481,21 +1497,21 @@ "typeString": "mapping(address => address[])" }, "typeName": { - "id": 7411, + "id": 5727, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { - "id": 7408, + "id": 5724, "name": "address", "nodeType": "ElementaryTypeName", - "src": "935:7:66", + "src": "935:7:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "927:29:66", + "src": "927:29:44", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(address => address[])" @@ -1504,19 +1520,19 @@ "valueNameLocation": "-1:-1:-1", "valueType": { "baseType": { - "id": 7409, + "id": 5725, "name": "address", "nodeType": "ElementaryTypeName", - "src": "946:7:66", + "src": "946:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7410, + "id": 5726, "nodeType": "ArrayTypeName", - "src": "946:9:66", + "src": "946:9:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1526,16 +1542,16 @@ "visibility": "internal" }, { - "id": 7415, + "id": 5731, "nodeType": "VariableDeclaration", - "src": "976:22:66", + "src": "976:22:44", "nodes": [], "constant": false, "functionSelector": "e3d854a3", "mutability": "mutable", "name": "novas", - "nameLocation": "993:5:66", - "scope": 7805, + "nameLocation": "993:5:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1544,19 +1560,19 @@ }, "typeName": { "baseType": { - "id": 7413, + "id": 5729, "name": "address", "nodeType": "ElementaryTypeName", - "src": "976:7:66", + "src": "976:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7414, + "id": 5730, "nodeType": "ArrayTypeName", - "src": "976:9:66", + "src": "976:9:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1565,19 +1581,19 @@ "visibility": "public" }, { - "id": 7417, + "id": 5733, "nodeType": "VariableDeclaration", - "src": "1005:34:66", + "src": "1005:34:44", "nodes": [], "baseFunctions": [ - 8140 + 6456 ], "constant": false, "functionSelector": "de90ccca", "mutability": "immutable", "name": "autIDAddr", - "nameLocation": "1030:9:66", - "scope": 7805, + "nameLocation": "1030:9:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1585,10 +1601,10 @@ "typeString": "address" }, "typeName": { - "id": 7416, + "id": 5732, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1005:7:66", + "src": "1005:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1598,19 +1614,19 @@ "visibility": "public" }, { - "id": 7419, + "id": 5735, "nodeType": "VariableDeclaration", - "src": "1045:39:66", + "src": "1045:39:44", "nodes": [], "baseFunctions": [ - 8145 + 6461 ], "constant": false, "functionSelector": "41dcea91", "mutability": "immutable", "name": "pluginRegistry", - "nameLocation": "1070:14:66", - "scope": 7805, + "nameLocation": "1070:14:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1618,10 +1634,10 @@ "typeString": "address" }, "typeName": { - "id": 7418, + "id": 5734, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1045:7:66", + "src": "1045:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1631,93 +1647,93 @@ "visibility": "public" }, { - "id": 7422, + "id": 5738, "nodeType": "VariableDeclaration", - "src": "1090:52:66", + "src": "1090:52:44", "nodes": [], "constant": false, "functionSelector": "d2609520", "mutability": "immutable", "name": "upgradeableBeacon", - "nameLocation": "1125:17:66", - "scope": 7805, + "nameLocation": "1125:17:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" }, "typeName": { - "id": 7421, + "id": 5737, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 7420, + "id": 5736, "name": "UpgradeableBeacon", "nameLocations": [ - "1090:17:66" + "1090:17:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59911, - "src": "1090:17:66" + "referencedDeclaration": 57902, + "src": "1090:17:44" }, - "referencedDeclaration": 59911, - "src": "1090:17:66", + "referencedDeclaration": 57902, + "src": "1090:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, "visibility": "public" }, { - "id": 7425, + "id": 5741, "nodeType": "VariableDeclaration", - "src": "1148:27:66", + "src": "1148:27:44", "nodes": [], "constant": false, "functionSelector": "2b47da52", "mutability": "mutable", "name": "allowlist", - "nameLocation": "1166:9:66", - "scope": 7805, + "nameLocation": "1166:9:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" }, "typeName": { - "id": 7424, + "id": 5740, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 7423, + "id": 5739, "name": "IAllowlist", "nameLocations": [ - "1148:10:66" + "1148:10:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 13199, - "src": "1148:10:66" + "referencedDeclaration": 11190, + "src": "1148:10:44" }, - "referencedDeclaration": 13199, - "src": "1148:10:66", + "referencedDeclaration": 11190, + "src": "1148:10:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, "visibility": "public" }, { - "id": 7427, + "id": 5743, "nodeType": "VariableDeclaration", - "src": "1249:23:66", + "src": "1249:23:44", "nodes": [], "constant": false, "mutability": "mutable", "name": "deployerAddress", - "nameLocation": "1257:15:66", - "scope": 7805, + "nameLocation": "1257:15:44", + "scope": 6121, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1725,10 +1741,10 @@ "typeString": "address" }, "typeName": { - "id": 7426, + "id": 5742, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1249:7:66", + "src": "1249:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1738,14 +1754,14 @@ "visibility": "internal" }, { - "id": 7520, + "id": 5836, "nodeType": "FunctionDefinition", - "src": "1279:832:66", + "src": "1279:832:44", "nodes": [], "body": { - "id": 7519, + "id": 5835, "nodeType": "Block", - "src": "1392:719:66", + "src": "1392:719:44", "nodes": [], "statements": [ { @@ -1756,18 +1772,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7446, + "id": 5762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7441, + "id": 5757, "name": "trustedForewarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7429, - "src": "1410:17:66", + "referencedDeclaration": 5745, + "src": "1410:17:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1779,14 +1795,14 @@ "arguments": [ { "hexValue": "30", - "id": 7444, + "id": 5760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1439:1:66", + "src": "1439:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -1801,26 +1817,26 @@ "typeString": "int_const 0" } ], - "id": 7443, + "id": 5759, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1431:7:66", + "src": "1431:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7442, + "id": 5758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1431:7:66", + "src": "1431:7:44", "typeDescriptions": {} } }, - "id": 7445, + "id": 5761, "isConstant": false, "isLValue": false, "isPure": true, @@ -1829,14 +1845,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1431:10:66", + "src": "1431:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1410:31:66", + "src": "1410:31:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1844,14 +1860,14 @@ }, { "hexValue": "4e6f766152656769737472793a2074727573746564466f72657761726465722061646472657373207a65726f", - "id": 7447, + "id": 5763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1443:46:66", + "src": "1443:46:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_11b1938f490d3877e73c2b6056dcd64f28038e24dcb7950bc05b89393a450602", "typeString": "literal_string \"NovaRegistry: trustedForewarder address zero\"" @@ -1870,7 +1886,7 @@ "typeString": "literal_string \"NovaRegistry: trustedForewarder address zero\"" } ], - "id": 7440, + "id": 5756, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1878,13 +1894,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1402:7:66", + "src": "1402:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7448, + "id": 5764, "isConstant": false, "isLValue": false, "isPure": false, @@ -1893,16 +1909,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1402:88:66", + "src": "1402:88:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7449, + "id": 5765, "nodeType": "ExpressionStatement", - "src": "1402:88:66" + "src": "1402:88:44" }, { "expression": { @@ -1912,18 +1928,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7456, + "id": 5772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7451, + "id": 5767, "name": "autIDAddr_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7431, - "src": "1508:10:66", + "referencedDeclaration": 5747, + "src": "1508:10:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1935,14 +1951,14 @@ "arguments": [ { "hexValue": "30", - "id": 7454, + "id": 5770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1530:1:66", + "src": "1530:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -1957,26 +1973,26 @@ "typeString": "int_const 0" } ], - "id": 7453, + "id": 5769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1522:7:66", + "src": "1522:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7452, + "id": 5768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1522:7:66", + "src": "1522:7:44", "typeDescriptions": {} } }, - "id": 7455, + "id": 5771, "isConstant": false, "isLValue": false, "isPure": true, @@ -1985,14 +2001,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1522:10:66", + "src": "1522:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1508:24:66", + "src": "1508:24:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2000,14 +2016,14 @@ }, { "hexValue": "4e6f766152656769737472793a2041757449442061646472657373207a65726f", - "id": 7457, + "id": 5773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1534:34:66", + "src": "1534:34:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_17db55754d64fbd1aacadb50cf12e3e95a0e036df426c4ec50905090a705d068", "typeString": "literal_string \"NovaRegistry: AutID address zero\"" @@ -2026,7 +2042,7 @@ "typeString": "literal_string \"NovaRegistry: AutID address zero\"" } ], - "id": 7450, + "id": 5766, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2034,13 +2050,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1500:7:66", + "src": "1500:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7458, + "id": 5774, "isConstant": false, "isLValue": false, "isPure": false, @@ -2049,16 +2065,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1500:69:66", + "src": "1500:69:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7459, + "id": 5775, "nodeType": "ExpressionStatement", - "src": "1500:69:66" + "src": "1500:69:44" }, { "expression": { @@ -2068,18 +2084,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7466, + "id": 5782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7461, + "id": 5777, "name": "novaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7433, - "src": "1587:9:66", + "referencedDeclaration": 5749, + "src": "1587:9:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2091,14 +2107,14 @@ "arguments": [ { "hexValue": "30", - "id": 7464, + "id": 5780, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1608:1:66", + "src": "1608:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2113,26 +2129,26 @@ "typeString": "int_const 0" } ], - "id": 7463, + "id": 5779, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1600:7:66", + "src": "1600:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7462, + "id": 5778, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1600:7:66", + "src": "1600:7:44", "typeDescriptions": {} } }, - "id": 7465, + "id": 5781, "isConstant": false, "isLValue": false, "isPure": true, @@ -2141,14 +2157,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1600:10:66", + "src": "1600:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1587:23:66", + "src": "1587:23:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2156,14 +2172,14 @@ }, { "hexValue": "4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373207a65726f", - "id": 7467, + "id": 5783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1612:39:66", + "src": "1612:39:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2592e520bb7c8a61d09d95964f8f3c97736db895460629d0a0e18cdad99cdc22", "typeString": "literal_string \"NovaRegistry: Nova logic address zero\"" @@ -2182,7 +2198,7 @@ "typeString": "literal_string \"NovaRegistry: Nova logic address zero\"" } ], - "id": 7460, + "id": 5776, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2190,13 +2206,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1579:7:66", + "src": "1579:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7468, + "id": 5784, "isConstant": false, "isLValue": false, "isPure": false, @@ -2205,16 +2221,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1579:73:66", + "src": "1579:73:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7469, + "id": 5785, "nodeType": "ExpressionStatement", - "src": "1579:73:66" + "src": "1579:73:44" }, { "expression": { @@ -2224,18 +2240,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7476, + "id": 5792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7471, + "id": 5787, "name": "pluginRegistry_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7435, - "src": "1670:15:66", + "referencedDeclaration": 5751, + "src": "1670:15:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2247,14 +2263,14 @@ "arguments": [ { "hexValue": "30", - "id": 7474, + "id": 5790, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1697:1:66", + "src": "1697:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2269,26 +2285,26 @@ "typeString": "int_const 0" } ], - "id": 7473, + "id": 5789, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1689:7:66", + "src": "1689:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7472, + "id": 5788, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1689:7:66", + "src": "1689:7:44", "typeDescriptions": {} } }, - "id": 7475, + "id": 5791, "isConstant": false, "isLValue": false, "isPure": true, @@ -2297,14 +2313,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1689:10:66", + "src": "1689:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1670:29:66", + "src": "1670:29:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2312,14 +2328,14 @@ }, { "hexValue": "4e6f766152656769737472793a20506c7567696e52656769737472792061646472657373207a65726f", - "id": 7477, + "id": 5793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1701:43:66", + "src": "1701:43:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ac6bfaa1df73eb33a83b810af5cbbf2704d765ff932c4d1bda92b50d11f80b65", "typeString": "literal_string \"NovaRegistry: PluginRegistry address zero\"" @@ -2338,7 +2354,7 @@ "typeString": "literal_string \"NovaRegistry: PluginRegistry address zero\"" } ], - "id": 7470, + "id": 5786, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2346,13 +2362,13 @@ -18 ], "referencedDeclaration": -18, - "src": "1662:7:66", + "src": "1662:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7478, + "id": 5794, "isConstant": false, "isLValue": false, "isPure": false, @@ -2361,31 +2377,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1662:83:66", + "src": "1662:83:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7479, + "id": 5795, "nodeType": "ExpressionStatement", - "src": "1662:83:66" + "src": "1662:83:44" }, { "expression": { - "id": 7482, + "id": 5798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7480, + "id": 5796, "name": "autIDAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7417, - "src": "1756:9:66", + "referencedDeclaration": 5733, + "src": "1756:9:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2394,41 +2410,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 7481, + "id": 5797, "name": "autIDAddr_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7431, - "src": "1768:10:66", + "referencedDeclaration": 5747, + "src": "1768:10:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1756:22:66", + "src": "1756:22:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7483, + "id": 5799, "nodeType": "ExpressionStatement", - "src": "1756:22:66" + "src": "1756:22:44" }, { "expression": { - "id": 7486, + "id": 5802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7484, + "id": 5800, "name": "pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7419, - "src": "1788:14:66", + "referencedDeclaration": 5735, + "src": "1788:14:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2437,41 +2453,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 7485, + "id": 5801, "name": "pluginRegistry_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7435, - "src": "1805:15:66", + "referencedDeclaration": 5751, + "src": "1805:15:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1788:32:66", + "src": "1788:32:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7487, + "id": 5803, "nodeType": "ExpressionStatement", - "src": "1788:32:66" + "src": "1788:32:44" }, { "expression": { - "id": 7491, + "id": 5807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7488, + "id": 5804, "name": "deployerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7427, - "src": "1830:15:66", + "referencedDeclaration": 5743, + "src": "1830:15:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2481,57 +2497,57 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 7489, + "id": 5805, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "1848:3:66", + "src": "1848:3:44", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7490, + "id": 5806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1852:6:66", + "memberLocation": "1852:6:44", "memberName": "sender", "nodeType": "MemberAccess", - "src": "1848:10:66", + "src": "1848:10:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1830:28:66", + "src": "1830:28:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7492, + "id": 5808, "nodeType": "ExpressionStatement", - "src": "1830:28:66" + "src": "1830:28:44" }, { "expression": { - "id": 7499, + "id": 5815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7493, + "id": 5809, "name": "upgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "1868:17:66", + "referencedDeclaration": 5738, + "src": "1868:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, @@ -2540,12 +2556,12 @@ "rightHandSide": { "arguments": [ { - "id": 7497, + "id": 5813, "name": "novaLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7433, - "src": "1910:9:66", + "referencedDeclaration": 5749, + "src": "1910:9:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2559,39 +2575,39 @@ "typeString": "address" } ], - "id": 7496, + "id": 5812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1888:21:66", + "src": "1888:21:44", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_UpgradeableBeacon_$59911_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_UpgradeableBeacon_$57902_$", "typeString": "function (address) returns (contract UpgradeableBeacon)" }, "typeName": { - "id": 7495, + "id": 5811, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 7494, + "id": 5810, "name": "UpgradeableBeacon", "nameLocations": [ - "1892:17:66" + "1892:17:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59911, - "src": "1892:17:66" + "referencedDeclaration": 57902, + "src": "1892:17:44" }, - "referencedDeclaration": 59911, - "src": "1892:17:66", + "referencedDeclaration": 57902, + "src": "1892:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } } }, - "id": 7498, + "id": 5814, "isConstant": false, "isLValue": false, "isPure": false, @@ -2600,33 +2616,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1888:32:66", + "src": "1888:32:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, - "src": "1868:52:66", + "src": "1868:52:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, - "id": 7500, + "id": 5816, "nodeType": "ExpressionStatement", - "src": "1868:52:66" + "src": "1868:52:44" }, { "expression": { "arguments": [ { - "id": 7502, + "id": 5818, "name": "trustedForewarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7429, - "src": "1951:17:66", + "referencedDeclaration": 5745, + "src": "1951:17:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2640,18 +2656,18 @@ "typeString": "address" } ], - "id": 7501, + "id": 5817, "name": "_setTrustedForwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56585, - "src": "1930:20:66", + "referencedDeclaration": 54576, + "src": "1930:20:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 7503, + "id": 5819, "isConstant": false, "isLValue": false, "isPure": false, @@ -2660,33 +2676,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1930:39:66", + "src": "1930:39:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7504, + "id": 5820, "nodeType": "ExpressionStatement", - "src": "1930:39:66" + "src": "1930:39:44" }, { "expression": { - "id": 7517, + "id": 5833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7505, + "id": 5821, "name": "allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7425, - "src": "1979:9:66", + "referencedDeclaration": 5741, + "src": "1979:9:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, @@ -2707,12 +2723,12 @@ "expression": { "arguments": [ { - "id": 7509, + "id": 5825, "name": "pluginRegistry_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7435, - "src": "2046:15:66", + "referencedDeclaration": 5751, + "src": "2046:15:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2726,18 +2742,18 @@ "typeString": "address" } ], - "id": 7508, + "id": 5824, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11258, - "src": "2030:15:66", + "referencedDeclaration": 9574, + "src": "2030:15:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$11258_$", + "typeIdentifier": "t_type$_t_contract$_IPluginRegistry_$9574_$", "typeString": "type(contract IPluginRegistry)" } }, - "id": 7510, + "id": 5826, "isConstant": false, "isLValue": false, "isPure": false, @@ -2746,29 +2762,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2030:32:66", + "src": "2030:32:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$11258", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 7511, + "id": 5827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2063:15:66", + "memberLocation": "2063:15:44", "memberName": "modulesRegistry", "nodeType": "MemberAccess", - "referencedDeclaration": 11209, - "src": "2030:48:66", + "referencedDeclaration": 9525, + "src": "2030:48:44", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7512, + "id": 5828, "isConstant": false, "isLValue": false, "isPure": false, @@ -2777,7 +2793,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2030:50:66", + "src": "2030:50:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2792,18 +2808,18 @@ "typeString": "address" } ], - "id": 7507, + "id": 5823, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6730, - "src": "2014:15:66", + "referencedDeclaration": 5018, + "src": "2014:15:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModuleRegistry_$6730_$", + "typeIdentifier": "t_type$_t_contract$_IModuleRegistry_$5018_$", "typeString": "type(contract IModuleRegistry)" } }, - "id": 7513, + "id": 5829, "isConstant": false, "isLValue": false, "isPure": false, @@ -2812,29 +2828,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2014:67:66", + "src": "2014:67:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IModuleRegistry_$6730", + "typeIdentifier": "t_contract$_IModuleRegistry_$5018", "typeString": "contract IModuleRegistry" } }, - "id": 7514, + "id": 5830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2082:19:66", + "memberLocation": "2082:19:44", "memberName": "getAllowListAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6729, - "src": "2014:87:66", + "referencedDeclaration": 5017, + "src": "2014:87:44", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7515, + "id": 5831, "isConstant": false, "isLValue": false, "isPure": false, @@ -2843,7 +2859,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2014:89:66", + "src": "2014:89:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2858,18 +2874,18 @@ "typeString": "address" } ], - "id": 7506, + "id": 5822, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13199, - "src": "2003:10:66", + "referencedDeclaration": 11190, + "src": "2003:10:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$13199_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 7516, + "id": 5832, "isConstant": false, "isLValue": false, "isPure": false, @@ -2878,22 +2894,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2003:101:66", + "src": "2003:101:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "src": "1979:125:66", + "src": "1979:125:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 7518, + "id": 5834, "nodeType": "ExpressionStatement", - "src": "1979:125:66" + "src": "1979:125:44" } ] }, @@ -2902,37 +2918,37 @@ "modifiers": [ { "arguments": [], - "id": 7438, + "id": 5754, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 7437, + "id": 5753, "name": "Ownable", "nameLocations": [ - "1382:7:66" + "1382:7:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59377, - "src": "1382:7:66" + "referencedDeclaration": 57368, + "src": "1382:7:44" }, "nodeType": "ModifierInvocation", - "src": "1382:9:66" + "src": "1382:9:44" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 7436, + "id": 5752, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7429, + "id": 5745, "mutability": "mutable", "name": "trustedForewarder", - "nameLocation": "1299:17:66", + "nameLocation": "1299:17:44", "nodeType": "VariableDeclaration", - "scope": 7520, - "src": "1291:25:66", + "scope": 5836, + "src": "1291:25:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2940,10 +2956,10 @@ "typeString": "address" }, "typeName": { - "id": 7428, + "id": 5744, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1291:7:66", + "src": "1291:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2954,13 +2970,13 @@ }, { "constant": false, - "id": 7431, + "id": 5747, "mutability": "mutable", "name": "autIDAddr_", - "nameLocation": "1326:10:66", + "nameLocation": "1326:10:44", "nodeType": "VariableDeclaration", - "scope": 7520, - "src": "1318:18:66", + "scope": 5836, + "src": "1318:18:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2968,10 +2984,10 @@ "typeString": "address" }, "typeName": { - "id": 7430, + "id": 5746, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1318:7:66", + "src": "1318:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2982,13 +2998,13 @@ }, { "constant": false, - "id": 7433, + "id": 5749, "mutability": "mutable", "name": "novaLogic", - "nameLocation": "1346:9:66", + "nameLocation": "1346:9:44", "nodeType": "VariableDeclaration", - "scope": 7520, - "src": "1338:17:66", + "scope": 5836, + "src": "1338:17:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2996,10 +3012,10 @@ "typeString": "address" }, "typeName": { - "id": 7432, + "id": 5748, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1338:7:66", + "src": "1338:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3010,13 +3026,13 @@ }, { "constant": false, - "id": 7435, + "id": 5751, "mutability": "mutable", "name": "pluginRegistry_", - "nameLocation": "1365:15:66", + "nameLocation": "1365:15:44", "nodeType": "VariableDeclaration", - "scope": 7520, - "src": "1357:23:66", + "scope": 5836, + "src": "1357:23:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3024,10 +3040,10 @@ "typeString": "address" }, "typeName": { - "id": 7434, + "id": 5750, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1357:7:66", + "src": "1357:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3037,78 +3053,78 @@ "visibility": "internal" } ], - "src": "1290:91:66" + "src": "1290:91:44" }, "returnParameters": { - "id": 7439, + "id": 5755, "nodeType": "ParameterList", "parameters": [], - "src": "1392:0:66" + "src": "1392:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 7529, + "id": 5845, "nodeType": "FunctionDefinition", - "src": "2318:88:66", + "src": "2318:88:44", "nodes": [], "body": { - "id": 7528, + "id": 5844, "nodeType": "Block", - "src": "2377:29:66", + "src": "2377:29:44", "nodes": [], "statements": [ { "expression": { - "id": 7526, + "id": 5842, "name": "novas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7415, - "src": "2394:5:66", + "referencedDeclaration": 5731, + "src": "2394:5:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 7525, - "id": 7527, + "functionReturnParameters": 5841, + "id": 5843, "nodeType": "Return", - "src": "2387:12:66" + "src": "2387:12:44" } ] }, "baseFunctions": [ - 8127 + 6443 ], "functionSelector": "28e63153", "implemented": true, "kind": "function", "modifiers": [], "name": "getNovas", - "nameLocation": "2327:8:66", + "nameLocation": "2327:8:44", "parameters": { - "id": 7521, + "id": 5837, "nodeType": "ParameterList", "parameters": [], - "src": "2335:2:66" + "src": "2335:2:44" }, "returnParameters": { - "id": 7525, + "id": 5841, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7524, + "id": 5840, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7529, - "src": "2359:16:66", + "scope": 5845, + "src": "2359:16:44", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3117,19 +3133,19 @@ }, "typeName": { "baseType": { - "id": 7522, + "id": 5838, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2359:7:66", + "src": "2359:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7523, + "id": 5839, "nodeType": "ArrayTypeName", - "src": "2359:9:66", + "src": "2359:9:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3138,46 +3154,46 @@ "visibility": "internal" } ], - "src": "2358:18:66" + "src": "2358:18:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 7542, + "id": 5858, "nodeType": "FunctionDefinition", - "src": "2461:131:66", + "src": "2461:131:44", "nodes": [], "body": { - "id": 7541, + "id": 5857, "nodeType": "Block", - "src": "2545:47:66", + "src": "2545:47:44", "nodes": [], "statements": [ { "expression": { "baseExpression": { - "id": 7537, + "id": 5853, "name": "novaDeployers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7412, - "src": "2562:13:66", + "referencedDeclaration": 5728, + "src": "2562:13:44", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(address => address[] storage ref)" } }, - "id": 7539, + "id": 5855, "indexExpression": { - "id": 7538, + "id": 5854, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7531, - "src": "2576:8:66", + "referencedDeclaration": 5847, + "src": "2576:8:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3188,41 +3204,41 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2562:23:66", + "src": "2562:23:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 7536, - "id": 7540, + "functionReturnParameters": 5852, + "id": 5856, "nodeType": "Return", - "src": "2555:30:66" + "src": "2555:30:44" } ] }, "baseFunctions": [ - 8135 + 6451 ], "functionSelector": "cf349d89", "implemented": true, "kind": "function", "modifiers": [], "name": "getNovaByDeployer", - "nameLocation": "2470:17:66", + "nameLocation": "2470:17:44", "parameters": { - "id": 7532, + "id": 5848, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7531, + "id": 5847, "mutability": "mutable", "name": "deployer", - "nameLocation": "2496:8:66", + "nameLocation": "2496:8:44", "nodeType": "VariableDeclaration", - "scope": 7542, - "src": "2488:16:66", + "scope": 5858, + "src": "2488:16:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3230,10 +3246,10 @@ "typeString": "address" }, "typeName": { - "id": 7530, + "id": 5846, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2488:7:66", + "src": "2488:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3243,21 +3259,21 @@ "visibility": "internal" } ], - "src": "2487:18:66" + "src": "2487:18:44" }, "returnParameters": { - "id": 7536, + "id": 5852, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7535, + "id": 5851, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7542, - "src": "2527:16:66", + "scope": 5858, + "src": "2527:16:44", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3266,19 +3282,19 @@ }, "typeName": { "baseType": { - "id": 7533, + "id": 5849, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2527:7:66", + "src": "2527:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7534, + "id": 5850, "nodeType": "ArrayTypeName", - "src": "2527:9:66", + "src": "2527:9:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3287,58 +3303,58 @@ "visibility": "internal" } ], - "src": "2526:18:66" + "src": "2526:18:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 7613, + "id": 5929, "nodeType": "FunctionDefinition", - "src": "2647:570:66", + "src": "2647:570:44", "nodes": [], "body": { - "id": 7612, + "id": 5928, "nodeType": "Block", - "src": "2759:458:66", + "src": "2759:458:44", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 7555, + "id": 5871, "name": "market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7545, - "src": "2799:6:66", + "referencedDeclaration": 5861, + "src": "2799:6:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 7556, + "id": 5872, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7547, - "src": "2807:8:66", + "referencedDeclaration": 5863, + "src": "2807:8:44", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { - "id": 7557, + "id": 5873, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7549, - "src": "2817:10:66", + "referencedDeclaration": 5865, + "src": "2817:10:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3360,18 +3376,18 @@ "typeString": "uint256" } ], - "id": 7554, + "id": 5870, "name": "_validateNovaDeploymentParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7778, - "src": "2769:29:66", + "referencedDeclaration": 6094, + "src": "2769:29:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (uint256,string memory,uint256) pure" } }, - "id": 7558, + "id": 5874, "isConstant": false, "isLValue": false, "isPure": false, @@ -3380,34 +3396,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2769:59:66", + "src": "2769:59:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7559, + "id": 5875, "nodeType": "ExpressionStatement", - "src": "2769:59:66" + "src": "2769:59:44" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 7560, + "id": 5876, "name": "_checkAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7735, - "src": "2838:15:66", + "referencedDeclaration": 6051, + "src": "2838:15:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view" } }, - "id": 7561, + "id": 5877, "isConstant": false, "isLValue": false, "isPure": false, @@ -3416,31 +3432,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2838:17:66", + "src": "2838:17:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7562, + "id": 5878, "nodeType": "ExpressionStatement", - "src": "2838:17:66" + "src": "2838:17:44" }, { "assignments": [ - 7564 + 5880 ], "declarations": [ { "constant": false, - "id": 7564, + "id": 5880, "mutability": "mutable", "name": "data", - "nameLocation": "2879:4:66", + "nameLocation": "2879:4:44", "nodeType": "VariableDeclaration", - "scope": 7612, - "src": "2866:17:66", + "scope": 5928, + "src": "2866:17:44", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3448,10 +3464,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7563, + "id": 5879, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2866:5:66", + "src": "2866:5:44", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3460,47 +3476,47 @@ "visibility": "internal" } ], - "id": 7578, + "id": 5894, "initialValue": { "arguments": [ { "expression": { "expression": { - "id": 7567, + "id": 5883, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7375, - "src": "2922:4:66", + "referencedDeclaration": 5691, + "src": "2922:4:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Nova_$7375_$", + "typeIdentifier": "t_type$_t_contract$_Nova_$5691_$", "typeString": "type(contract Nova)" } }, - "id": 7568, + "id": 5884, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2927:10:66", + "memberLocation": "2927:10:44", "memberName": "initialize", "nodeType": "MemberAccess", - "referencedDeclaration": 7189, - "src": "2922:15:66", + "referencedDeclaration": 5480, + "src": "2922:15:44", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_contract$_IAutID_$1194_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_address_$returns$__$", "typeString": "function Nova.initialize(address,contract IAutID,uint256,string memory,uint256,address)" } }, - "id": 7569, + "id": 5885, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2938:8:66", + "memberLocation": "2938:8:44", "memberName": "selector", "nodeType": "MemberAccess", - "src": "2922:24:66", + "src": "2922:24:44", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -3510,20 +3526,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7570, + "id": 5886, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "2948:10:66", + "referencedDeclaration": 6107, + "src": "2948:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7571, + "id": 5887, "isConstant": false, "isLValue": false, "isPure": false, @@ -3532,7 +3548,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2948:12:66", + "src": "2948:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3540,60 +3556,60 @@ } }, { - "id": 7572, + "id": 5888, "name": "autIDAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7417, - "src": "2962:9:66", + "referencedDeclaration": 5733, + "src": "2962:9:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 7573, + "id": 5889, "name": "market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7545, - "src": "2973:6:66", + "referencedDeclaration": 5861, + "src": "2973:6:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 7574, + "id": 5890, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7547, - "src": "2981:8:66", + "referencedDeclaration": 5863, + "src": "2981:8:44", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { - "id": 7575, + "id": 5891, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7549, - "src": "2991:10:66", + "referencedDeclaration": 5865, + "src": "2991:10:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 7576, + "id": 5892, "name": "pluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7419, - "src": "3003:14:66", + "referencedDeclaration": 5735, + "src": "3003:14:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3632,32 +3648,32 @@ } ], "expression": { - "id": 7565, + "id": 5881, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2886:3:66", + "src": "2886:3:44", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7566, + "id": 5882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2890:18:66", + "memberLocation": "2890:18:44", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", - "src": "2886:22:66", + "src": "2886:22:44", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 7577, + "id": 5893, "isConstant": false, "isLValue": false, "isPure": false, @@ -3666,7 +3682,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2886:141:66", + "src": "2886:141:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -3674,22 +3690,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2866:161:66" + "src": "2866:161:44" }, { "expression": { - "id": 7592, + "id": 5908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7579, + "id": 5895, "name": "nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7552, - "src": "3037:4:66", + "referencedDeclaration": 5868, + "src": "3037:4:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3704,14 +3720,14 @@ { "arguments": [ { - "id": 7587, + "id": 5903, "name": "upgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "3076:17:66", + "referencedDeclaration": 5738, + "src": "3076:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } } @@ -3719,30 +3735,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } ], - "id": 7586, + "id": 5902, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3068:7:66", + "src": "3068:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7585, + "id": 5901, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3068:7:66", + "src": "3068:7:44", "typeDescriptions": {} } }, - "id": 7588, + "id": 5904, "isConstant": false, "isLValue": false, "isPure": false, @@ -3751,7 +3767,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3068:26:66", + "src": "3068:26:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3759,12 +3775,12 @@ } }, { - "id": 7589, + "id": 5905, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7564, - "src": "3096:4:66", + "referencedDeclaration": 5880, + "src": "3096:4:44", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3782,39 +3798,39 @@ "typeString": "bytes memory" } ], - "id": 7584, + "id": 5900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3052:15:66", + "src": "3052:15:44", "typeDescriptions": { - "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$59826_$", + "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$57817_$", "typeString": "function (address,bytes memory) payable returns (contract BeaconProxy)" }, "typeName": { - "id": 7583, + "id": 5899, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 7582, + "id": 5898, "name": "BeaconProxy", "nameLocations": [ - "3056:11:66" + "3056:11:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59826, - "src": "3056:11:66" + "referencedDeclaration": 57817, + "src": "3056:11:44" }, - "referencedDeclaration": 59826, - "src": "3056:11:66", + "referencedDeclaration": 57817, + "src": "3056:11:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_BeaconProxy_$59826", + "typeIdentifier": "t_contract$_BeaconProxy_$57817", "typeString": "contract BeaconProxy" } } }, - "id": 7590, + "id": 5906, "isConstant": false, "isLValue": false, "isPure": false, @@ -3823,10 +3839,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3052:49:66", + "src": "3052:49:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_BeaconProxy_$59826", + "typeIdentifier": "t_contract$_BeaconProxy_$57817", "typeString": "contract BeaconProxy" } } @@ -3834,30 +3850,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_BeaconProxy_$59826", + "typeIdentifier": "t_contract$_BeaconProxy_$57817", "typeString": "contract BeaconProxy" } ], - "id": 7581, + "id": 5897, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3044:7:66", + "src": "3044:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7580, + "id": 5896, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3044:7:66", + "src": "3044:7:44", "typeDescriptions": {} } }, - "id": 7591, + "id": 5907, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,33 +3882,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3044:58:66", + "src": "3044:58:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3037:65:66", + "src": "3037:65:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 7593, + "id": 5909, "nodeType": "ExpressionStatement", - "src": "3037:65:66" + "src": "3037:65:44" }, { "expression": { "arguments": [ { - "id": 7599, + "id": 5915, "name": "nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7552, - "src": "3145:4:66", + "referencedDeclaration": 5868, + "src": "3145:4:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3908,36 +3924,36 @@ ], "expression": { "baseExpression": { - "id": 7594, + "id": 5910, "name": "novaDeployers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7412, - "src": "3112:13:66", + "referencedDeclaration": 5728, + "src": "3112:13:44", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(address => address[] storage ref)" } }, - "id": 7597, + "id": 5913, "indexExpression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 7595, + "id": 5911, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "3126:10:66", + "referencedDeclaration": 6107, + "src": "3126:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7596, + "id": 5912, "isConstant": false, "isLValue": false, "isPure": false, @@ -3946,7 +3962,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3126:12:66", + "src": "3126:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3958,27 +3974,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3112:27:66", + "src": "3112:27:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 7598, + "id": 5914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3140:4:66", + "memberLocation": "3140:4:44", "memberName": "push", "nodeType": "MemberAccess", - "src": "3112:32:66", + "src": "3112:32:44", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 7600, + "id": 5916, "isConstant": false, "isLValue": false, "isPure": false, @@ -3987,27 +4003,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3112:38:66", + "src": "3112:38:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7601, + "id": 5917, "nodeType": "ExpressionStatement", - "src": "3112:38:66" + "src": "3112:38:44" }, { "expression": { "arguments": [ { - "id": 7605, + "id": 5921, "name": "nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7552, - "src": "3171:4:66", + "referencedDeclaration": 5868, + "src": "3171:4:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4022,32 +4038,32 @@ } ], "expression": { - "id": 7602, + "id": 5918, "name": "novas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7415, - "src": "3160:5:66", + "referencedDeclaration": 5731, + "src": "3160:5:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 7604, + "id": 5920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3166:4:66", + "memberLocation": "3166:4:44", "memberName": "push", "nodeType": "MemberAccess", - "src": "3160:10:66", + "src": "3160:10:44", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)" } }, - "id": 7606, + "id": 5922, "isConstant": false, "isLValue": false, "isPure": false, @@ -4056,27 +4072,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3160:16:66", + "src": "3160:16:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7607, + "id": 5923, "nodeType": "ExpressionStatement", - "src": "3160:16:66" + "src": "3160:16:44" }, { "eventCall": { "arguments": [ { - "id": 7609, + "id": 5925, "name": "nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7552, - "src": "3205:4:66", + "referencedDeclaration": 5868, + "src": "3205:4:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4090,18 +4106,18 @@ "typeString": "address" } ], - "id": 7608, + "id": 5924, "name": "NovaDeployed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7407, - "src": "3192:12:66", + "referencedDeclaration": 5723, + "src": "3192:12:44", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 7610, + "id": 5926, "isConstant": false, "isLValue": false, "isPure": false, @@ -4110,26 +4126,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3192:18:66", + "src": "3192:18:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7611, + "id": 5927, "nodeType": "EmitStatement", - "src": "3187:23:66" + "src": "3187:23:44" } ] }, "baseFunctions": [ - 8121 + 6437 ], "documentation": { - "id": 7543, + "id": 5859, "nodeType": "StructuredDocumentation", - "src": "2598:44:66", + "src": "2598:44:44", "text": "@dev depoloy beacon proxy for a new nova" }, "functionSelector": "bcae17c2", @@ -4137,20 +4153,20 @@ "kind": "function", "modifiers": [], "name": "deployNova", - "nameLocation": "2656:10:66", + "nameLocation": "2656:10:44", "parameters": { - "id": 7550, + "id": 5866, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7545, + "id": 5861, "mutability": "mutable", "name": "market", - "nameLocation": "2675:6:66", + "nameLocation": "2675:6:44", "nodeType": "VariableDeclaration", - "scope": 7613, - "src": "2667:14:66", + "scope": 5929, + "src": "2667:14:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4158,10 +4174,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7544, + "id": 5860, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2667:7:66", + "src": "2667:7:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4171,13 +4187,13 @@ }, { "constant": false, - "id": 7547, + "id": 5863, "mutability": "mutable", "name": "metadata", - "nameLocation": "2697:8:66", + "nameLocation": "2697:8:44", "nodeType": "VariableDeclaration", - "scope": 7613, - "src": "2683:22:66", + "scope": 5929, + "src": "2683:22:44", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4185,10 +4201,10 @@ "typeString": "string" }, "typeName": { - "id": 7546, + "id": 5862, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2683:6:66", + "src": "2683:6:44", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4198,13 +4214,13 @@ }, { "constant": false, - "id": 7549, + "id": 5865, "mutability": "mutable", "name": "commitment", - "nameLocation": "2715:10:66", + "nameLocation": "2715:10:44", "nodeType": "VariableDeclaration", - "scope": 7613, - "src": "2707:18:66", + "scope": 5929, + "src": "2707:18:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4212,10 +4228,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7548, + "id": 5864, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2707:7:66", + "src": "2707:7:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4224,21 +4240,21 @@ "visibility": "internal" } ], - "src": "2666:60:66" + "src": "2666:60:44" }, "returnParameters": { - "id": 7553, + "id": 5869, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7552, + "id": 5868, "mutability": "mutable", "name": "nova", - "nameLocation": "2753:4:66", + "nameLocation": "2753:4:44", "nodeType": "VariableDeclaration", - "scope": 7613, - "src": "2745:12:66", + "scope": 5929, + "src": "2745:12:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4246,10 +4262,10 @@ "typeString": "address" }, "typeName": { - "id": 7551, + "id": 5867, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2745:7:66", + "src": "2745:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4259,22 +4275,22 @@ "visibility": "internal" } ], - "src": "2744:14:66" + "src": "2744:14:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7638, + "id": 5954, "nodeType": "FunctionDefinition", - "src": "3283:183:66", + "src": "3283:183:44", "nodes": [], "body": { - "id": 7637, + "id": 5953, "nodeType": "Block", - "src": "3341:125:66", + "src": "3341:125:44", "nodes": [], "statements": [ { @@ -4285,18 +4301,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7627, + "id": 5943, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7622, + "id": 5938, "name": "newLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7616, - "src": "3359:8:66", + "referencedDeclaration": 5932, + "src": "3359:8:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4308,14 +4324,14 @@ "arguments": [ { "hexValue": "30", - "id": 7625, + "id": 5941, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3379:1:66", + "src": "3379:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4330,26 +4346,26 @@ "typeString": "int_const 0" } ], - "id": 7624, + "id": 5940, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3371:7:66", + "src": "3371:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7623, + "id": 5939, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3371:7:66", + "src": "3371:7:44", "typeDescriptions": {} } }, - "id": 7626, + "id": 5942, "isConstant": false, "isLValue": false, "isPure": true, @@ -4358,14 +4374,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3371:10:66", + "src": "3371:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3359:22:66", + "src": "3359:22:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4373,14 +4389,14 @@ }, { "hexValue": "4e6f766152656769737472793a2061646472657373207a65726f", - "id": 7628, + "id": 5944, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3383:28:66", + "src": "3383:28:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5cef76def5c899aa90936604b22fdbbb831b0ca2596ae9eed3ea07794c1d580c", "typeString": "literal_string \"NovaRegistry: address zero\"" @@ -4399,7 +4415,7 @@ "typeString": "literal_string \"NovaRegistry: address zero\"" } ], - "id": 7621, + "id": 5937, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4407,13 +4423,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3351:7:66", + "src": "3351:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7629, + "id": 5945, "isConstant": false, "isLValue": false, "isPure": false, @@ -4422,27 +4438,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3351:61:66", + "src": "3351:61:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7630, + "id": 5946, "nodeType": "ExpressionStatement", - "src": "3351:61:66" + "src": "3351:61:44" }, { "expression": { "arguments": [ { - "id": 7634, + "id": 5950, "name": "newLogic", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7616, - "src": "3450:8:66", + "referencedDeclaration": 5932, + "src": "3450:8:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4457,33 +4473,33 @@ } ], "expression": { - "id": 7631, + "id": 5947, "name": "upgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "3422:17:66", + "referencedDeclaration": 5738, + "src": "3422:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, - "id": 7633, + "id": 5949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3440:9:66", + "memberLocation": "3440:9:44", "memberName": "upgradeTo", "nodeType": "MemberAccess", - "referencedDeclaration": 59891, - "src": "3422:27:66", + "referencedDeclaration": 57882, + "src": "3422:27:44", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 7635, + "id": 5951, "isConstant": false, "isLValue": false, "isPure": false, @@ -4492,23 +4508,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3422:37:66", + "src": "3422:37:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7636, + "id": 5952, "nodeType": "ExpressionStatement", - "src": "3422:37:66" + "src": "3422:37:44" } ] }, "documentation": { - "id": 7614, + "id": 5930, "nodeType": "StructuredDocumentation", - "src": "3223:55:66", + "src": "3223:55:44", "text": "@dev upgrades nova beacon to the new logic contract" }, "functionSelector": "08023018", @@ -4516,37 +4532,37 @@ "kind": "function", "modifiers": [ { - "id": 7619, + "id": 5935, "kind": "modifierInvocation", "modifierName": { - "id": 7618, + "id": 5934, "name": "onlyOwner", "nameLocations": [ - "3331:9:66" + "3331:9:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59296, - "src": "3331:9:66" + "referencedDeclaration": 57287, + "src": "3331:9:44" }, "nodeType": "ModifierInvocation", - "src": "3331:9:66" + "src": "3331:9:44" } ], "name": "upgradeNova", - "nameLocation": "3292:11:66", + "nameLocation": "3292:11:44", "parameters": { - "id": 7617, + "id": 5933, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7616, + "id": 5932, "mutability": "mutable", "name": "newLogic", - "nameLocation": "3312:8:66", + "nameLocation": "3312:8:44", "nodeType": "VariableDeclaration", - "scope": 7638, - "src": "3304:16:66", + "scope": 5954, + "src": "3304:16:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4554,10 +4570,10 @@ "typeString": "address" }, "typeName": { - "id": 7615, + "id": 5931, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3304:7:66", + "src": "3304:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4567,46 +4583,46 @@ "visibility": "internal" } ], - "src": "3303:18:66" + "src": "3303:18:44" }, "returnParameters": { - "id": 7620, + "id": 5936, "nodeType": "ParameterList", "parameters": [], - "src": "3341:0:66" + "src": "3341:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7653, + "id": 5969, "nodeType": "FunctionDefinition", - "src": "3506:167:66", + "src": "3506:167:44", "nodes": [], "body": { - "id": 7652, + "id": 5968, "nodeType": "Block", - "src": "3576:97:66", + "src": "3576:97:44", "nodes": [], "statements": [ { "expression": { - "id": 7650, + "id": 5966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 7646, + "id": 5962, "name": "allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7425, - "src": "3630:9:66", + "referencedDeclaration": 5741, + "src": "3630:9:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, @@ -4615,12 +4631,12 @@ "rightHandSide": { "arguments": [ { - "id": 7648, + "id": 5964, "name": "newAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7641, - "src": "3653:12:66", + "referencedDeclaration": 5957, + "src": "3653:12:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4634,18 +4650,18 @@ "typeString": "address" } ], - "id": 7647, + "id": 5963, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13199, - "src": "3642:10:66", + "referencedDeclaration": 11190, + "src": "3642:10:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$13199_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 7649, + "id": 5965, "isConstant": false, "isLValue": false, "isPure": false, @@ -4654,29 +4670,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3642:24:66", + "src": "3642:24:44", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "src": "3630:36:66", + "src": "3630:36:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 7651, + "id": 5967, "nodeType": "ExpressionStatement", - "src": "3630:36:66" + "src": "3630:36:44" } ] }, "documentation": { - "id": 7639, + "id": 5955, "nodeType": "StructuredDocumentation", - "src": "3472:29:66", + "src": "3472:29:44", "text": "@dev sets a new allowlist" }, "functionSelector": "cf81e754", @@ -4684,37 +4700,37 @@ "kind": "function", "modifiers": [ { - "id": 7644, + "id": 5960, "kind": "modifierInvocation", "modifierName": { - "id": 7643, + "id": 5959, "name": "onlyOwner", "nameLocations": [ - "3566:9:66" + "3566:9:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59296, - "src": "3566:9:66" + "referencedDeclaration": 57287, + "src": "3566:9:44" }, "nodeType": "ModifierInvocation", - "src": "3566:9:66" + "src": "3566:9:44" } ], "name": "setAllowlistAddress", - "nameLocation": "3515:19:66", + "nameLocation": "3515:19:44", "parameters": { - "id": 7642, + "id": 5958, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7641, + "id": 5957, "mutability": "mutable", "name": "newAllowlist", - "nameLocation": "3543:12:66", + "nameLocation": "3543:12:44", "nodeType": "VariableDeclaration", - "scope": 7653, - "src": "3535:20:66", + "scope": 5969, + "src": "3535:20:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4722,10 +4738,10 @@ "typeString": "address" }, "typeName": { - "id": 7640, + "id": 5956, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3535:7:66", + "src": "3535:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4735,28 +4751,28 @@ "visibility": "internal" } ], - "src": "3534:22:66" + "src": "3534:22:44" }, "returnParameters": { - "id": 7645, + "id": 5961, "nodeType": "ParameterList", "parameters": [], - "src": "3576:0:66" + "src": "3576:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7678, + "id": 5994, "nodeType": "FunctionDefinition", - "src": "3770:202:66", + "src": "3770:202:44", "nodes": [], "body": { - "id": 7677, + "id": 5993, "nodeType": "Block", - "src": "3839:133:66", + "src": "3839:133:44", "nodes": [], "statements": [ { @@ -4767,18 +4783,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7667, + "id": 5983, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7662, + "id": 5978, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7656, - "src": "3857:8:66", + "referencedDeclaration": 5972, + "src": "3857:8:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4790,14 +4806,14 @@ "arguments": [ { "hexValue": "30", - "id": 7665, + "id": 5981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3877:1:66", + "src": "3877:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4812,26 +4828,26 @@ "typeString": "int_const 0" } ], - "id": 7664, + "id": 5980, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3869:7:66", + "src": "3869:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7663, + "id": 5979, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3869:7:66", + "src": "3869:7:44", "typeDescriptions": {} } }, - "id": 7666, + "id": 5982, "isConstant": false, "isLValue": false, "isPure": true, @@ -4840,14 +4856,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3869:10:66", + "src": "3869:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3857:22:66", + "src": "3857:22:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4855,14 +4871,14 @@ }, { "hexValue": "4e6f766152656769737472793a2061646472657373207a65726f", - "id": 7668, + "id": 5984, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3881:28:66", + "src": "3881:28:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5cef76def5c899aa90936604b22fdbbb831b0ca2596ae9eed3ea07794c1d580c", "typeString": "literal_string \"NovaRegistry: address zero\"" @@ -4881,7 +4897,7 @@ "typeString": "literal_string \"NovaRegistry: address zero\"" } ], - "id": 7661, + "id": 5977, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4889,13 +4905,13 @@ -18 ], "referencedDeclaration": -18, - "src": "3849:7:66", + "src": "3849:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7669, + "id": 5985, "isConstant": false, "isLValue": false, "isPure": false, @@ -4904,27 +4920,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3849:61:66", + "src": "3849:61:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7670, + "id": 5986, "nodeType": "ExpressionStatement", - "src": "3849:61:66" + "src": "3849:61:44" }, { "expression": { "arguments": [ { - "id": 7674, + "id": 5990, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7656, - "src": "3956:8:66", + "referencedDeclaration": 5972, + "src": "3956:8:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4939,33 +4955,33 @@ } ], "expression": { - "id": 7671, + "id": 5987, "name": "upgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "3920:17:66", + "referencedDeclaration": 5738, + "src": "3920:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, - "id": 7673, + "id": 5989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3938:17:66", + "memberLocation": "3938:17:44", "memberName": "transferOwnership", "nodeType": "MemberAccess", - "referencedDeclaration": 59356, - "src": "3920:35:66", + "referencedDeclaration": 57347, + "src": "3920:35:44", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 7675, + "id": 5991, "isConstant": false, "isLValue": false, "isPure": false, @@ -4974,23 +4990,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3920:45:66", + "src": "3920:45:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7676, + "id": 5992, "nodeType": "ExpressionStatement", - "src": "3920:45:66" + "src": "3920:45:44" } ] }, "documentation": { - "id": 7654, + "id": 5970, "nodeType": "StructuredDocumentation", - "src": "3679:86:66", + "src": "3679:86:44", "text": "@dev transfer beacon ownership (hopefuly to a new and better-implemented registry)" }, "functionSelector": "414af656", @@ -4998,37 +5014,37 @@ "kind": "function", "modifiers": [ { - "id": 7659, + "id": 5975, "kind": "modifierInvocation", "modifierName": { - "id": 7658, + "id": 5974, "name": "onlyOwner", "nameLocations": [ - "3829:9:66" + "3829:9:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59296, - "src": "3829:9:66" + "referencedDeclaration": 57287, + "src": "3829:9:44" }, "nodeType": "ModifierInvocation", - "src": "3829:9:66" + "src": "3829:9:44" } ], "name": "tranferBeaconOwnership", - "nameLocation": "3779:22:66", + "nameLocation": "3779:22:44", "parameters": { - "id": 7657, + "id": 5973, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7656, + "id": 5972, "mutability": "mutable", "name": "newOwner", - "nameLocation": "3810:8:66", + "nameLocation": "3810:8:44", "nodeType": "VariableDeclaration", - "scope": 7678, - "src": "3802:16:66", + "scope": 5994, + "src": "3802:16:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5036,10 +5052,10 @@ "typeString": "address" }, "typeName": { - "id": 7655, + "id": 5971, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3802:7:66", + "src": "3802:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5049,28 +5065,28 @@ "visibility": "internal" } ], - "src": "3801:18:66" + "src": "3801:18:44" }, "returnParameters": { - "id": 7660, + "id": 5976, "nodeType": "ParameterList", "parameters": [], - "src": "3839:0:66" + "src": "3839:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 7735, + "id": 6051, "nodeType": "FunctionDefinition", - "src": "3978:586:66", + "src": "3978:586:44", "nodes": [], "body": { - "id": 7734, + "id": 6050, "nodeType": "Block", - "src": "4019:545:66", + "src": "4019:545:44", "nodes": [], "statements": [ { @@ -5079,7 +5095,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7691, + "id": 6007, "isConstant": false, "isLValue": false, "isPure": false, @@ -5089,7 +5105,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7684, + "id": 6000, "isConstant": false, "isLValue": false, "isPure": false, @@ -5098,20 +5114,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7681, + "id": 5997, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "4033:10:66", + "referencedDeclaration": 6107, + "src": "4033:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7682, + "id": 5998, "isConstant": false, "isLValue": false, "isPure": false, @@ -5120,7 +5136,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4033:12:66", + "src": "4033:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5130,18 +5146,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 7683, + "id": 5999, "name": "deployerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7427, - "src": "4049:15:66", + "referencedDeclaration": 5743, + "src": "4049:15:44", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4033:31:66", + "src": "4033:31:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5154,7 +5170,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7690, + "id": 6006, "isConstant": false, "isLValue": false, "isPure": false, @@ -5163,20 +5179,20 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7685, + "id": 6001, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "4068:10:66", + "referencedDeclaration": 6107, + "src": "4068:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7686, + "id": 6002, "isConstant": false, "isLValue": false, "isPure": false, @@ -5185,7 +5201,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4068:12:66", + "src": "4068:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5199,33 +5215,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 7687, + "id": 6003, "name": "upgradeableBeacon", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "4084:17:66", + "referencedDeclaration": 5738, + "src": "4084:17:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_UpgradeableBeacon_$59911", + "typeIdentifier": "t_contract$_UpgradeableBeacon_$57902", "typeString": "contract UpgradeableBeacon" } }, - "id": 7688, + "id": 6004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4102:5:66", + "memberLocation": "4102:5:44", "memberName": "owner", "nodeType": "MemberAccess", - "referencedDeclaration": 59305, - "src": "4084:23:66", + "referencedDeclaration": 57296, + "src": "4084:23:44", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7689, + "id": 6005, "isConstant": false, "isLValue": false, "isPure": false, @@ -5234,33 +5250,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4084:25:66", + "src": "4084:25:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4068:41:66", + "src": "4068:41:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4033:76:66", + "src": "4033:76:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7693, + "id": 6009, "nodeType": "IfStatement", - "src": "4029:89:66", + "src": "4029:89:44", "trueBody": { - "functionReturnParameters": 7680, - "id": 7692, + "functionReturnParameters": 5996, + "id": 6008, "nodeType": "Return", - "src": "4111:7:66" + "src": "4111:7:44" } }, { @@ -5269,7 +5285,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7702, + "id": 6018, "isConstant": false, "isLValue": false, "isPure": false, @@ -5277,14 +5293,14 @@ "leftExpression": { "arguments": [ { - "id": 7696, + "id": 6012, "name": "allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7425, - "src": "4139:9:66", + "referencedDeclaration": 5741, + "src": "4139:9:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } } @@ -5292,30 +5308,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } ], - "id": 7695, + "id": 6011, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4131:7:66", + "src": "4131:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7694, + "id": 6010, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4131:7:66", + "src": "4131:7:44", "typeDescriptions": {} } }, - "id": 7697, + "id": 6013, "isConstant": false, "isLValue": false, "isPure": false, @@ -5324,7 +5340,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4131:18:66", + "src": "4131:18:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5337,14 +5353,14 @@ "arguments": [ { "hexValue": "30", - "id": 7700, + "id": 6016, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4161:1:66", + "src": "4161:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5359,26 +5375,26 @@ "typeString": "int_const 0" } ], - "id": 7699, + "id": 6015, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4153:7:66", + "src": "4153:7:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 7698, + "id": 6014, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4153:7:66", + "src": "4153:7:44", "typeDescriptions": {} } }, - "id": 7701, + "id": 6017, "isConstant": false, "isLValue": false, "isPure": true, @@ -5387,30 +5403,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4153:10:66", + "src": "4153:10:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4131:32:66", + "src": "4131:32:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7733, + "id": 6049, "nodeType": "IfStatement", - "src": "4127:431:66", + "src": "4127:431:44", "trueBody": { - "id": 7732, + "id": 6048, "nodeType": "Block", - "src": "4165:393:66", + "src": "4165:393:44", "statements": [ { "condition": { - "id": 7708, + "id": 6024, "isConstant": false, "isLValue": false, "isPure": false, @@ -5418,27 +5434,27 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4183:34:66", + "src": "4183:34:44", "subExpression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], - "id": 7705, + "id": 6021, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "4204:10:66", + "referencedDeclaration": 6107, + "src": "4204:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7706, + "id": 6022, "isConstant": false, "isLValue": false, "isPure": false, @@ -5447,7 +5463,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4204:12:66", + "src": "4204:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5463,33 +5479,33 @@ } ], "expression": { - "id": 7703, + "id": 6019, "name": "allowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7425, - "src": "4184:9:66", + "referencedDeclaration": 5741, + "src": "4184:9:44", "typeDescriptions": { - "typeIdentifier": "t_contract$_IAllowlist_$13199", + "typeIdentifier": "t_contract$_IAllowlist_$11190", "typeString": "contract IAllowlist" } }, - "id": 7704, + "id": 6020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4194:9:66", + "memberLocation": "4194:9:44", "memberName": "isAllowed", "nodeType": "MemberAccess", - "referencedDeclaration": 13136, - "src": "4184:19:66", + "referencedDeclaration": 11127, + "src": "4184:19:44", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 7707, + "id": 6023, "isConstant": false, "isLValue": false, "isPure": false, @@ -5498,7 +5514,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4184:33:66", + "src": "4184:33:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5510,13 +5526,13 @@ "typeString": "bool" } }, - "id": 7715, + "id": 6031, "nodeType": "IfStatement", - "src": "4179:102:66", + "src": "4179:102:44", "trueBody": { - "id": 7714, + "id": 6030, "nodeType": "Block", - "src": "4219:62:66", + "src": "4219:62:44", "statements": [ { "errorCall": { @@ -5524,33 +5540,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 7709, + "id": 6025, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13199, - "src": "4244:10:66", + "referencedDeclaration": 11190, + "src": "4244:10:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$13199_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 7711, + "id": 6027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4255:9:66", + "memberLocation": "4255:9:44", "memberName": "Unallowed", "nodeType": "MemberAccess", - "referencedDeclaration": 13117, - "src": "4244:20:66", + "referencedDeclaration": 11108, + "src": "4244:20:44", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 7712, + "id": 6028, "isConstant": false, "isLValue": false, "isPure": false, @@ -5559,23 +5575,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4244:22:66", + "src": "4244:22:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7713, + "id": 6029, "nodeType": "RevertStatement", - "src": "4237:29:66" + "src": "4237:29:44" } ] } }, { "condition": { - "id": 7724, + "id": 6040, "isConstant": false, "isLValue": false, "isPure": false, @@ -5583,7 +5599,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "4298:42:66", + "src": "4298:42:44", "subExpression": { "components": [ { @@ -5591,7 +5607,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7722, + "id": 6038, "isConstant": false, "isLValue": false, "isPure": false, @@ -5599,36 +5615,36 @@ "leftExpression": { "expression": { "baseExpression": { - "id": 7716, + "id": 6032, "name": "novaDeployers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7412, - "src": "4300:13:66", + "referencedDeclaration": 5728, + "src": "4300:13:44", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(address => address[] storage ref)" } }, - "id": 7719, + "id": 6035, "indexExpression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 7717, + "id": 6033, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791 + 6107 ], - "referencedDeclaration": 7791, - "src": "4314:10:66", + "referencedDeclaration": 6107, + "src": "4314:10:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7718, + "id": 6034, "isConstant": false, "isLValue": false, "isPure": false, @@ -5637,7 +5653,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4314:12:66", + "src": "4314:12:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5649,21 +5665,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4300:27:66", + "src": "4300:27:44", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 7720, + "id": 6036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4328:6:66", + "memberLocation": "4328:6:44", "memberName": "length", "nodeType": "MemberAccess", - "src": "4300:34:66", + "src": "4300:34:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5673,35 +5689,35 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 7721, + "id": 6037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4338:1:66", + "src": "4338:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4300:39:66", + "src": "4300:39:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 7723, + "id": 6039, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4299:41:66", + "src": "4299:41:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5712,13 +5728,13 @@ "typeString": "bool" } }, - "id": 7731, + "id": 6047, "nodeType": "IfStatement", - "src": "4294:254:66", + "src": "4294:254:44", "trueBody": { - "id": 7730, + "id": 6046, "nodeType": "Block", - "src": "4342:206:66", + "src": "4342:206:44", "statements": [ { "errorCall": { @@ -5726,33 +5742,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 7725, + "id": 6041, "name": "IAllowlist", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13199, - "src": "4367:10:66", + "referencedDeclaration": 11190, + "src": "4367:10:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IAllowlist_$13199_$", + "typeIdentifier": "t_type$_t_contract$_IAllowlist_$11190_$", "typeString": "type(contract IAllowlist)" } }, - "id": 7727, + "id": 6043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4378:20:66", + "memberLocation": "4378:20:44", "memberName": "AlreadyDeployedANova", "nodeType": "MemberAccess", - "referencedDeclaration": 13121, - "src": "4367:31:66", + "referencedDeclaration": 11112, + "src": "4367:31:44", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 7728, + "id": 6044, "isConstant": false, "isLValue": false, "isPure": false, @@ -5761,16 +5777,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4367:33:66", + "src": "4367:33:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7729, + "id": 6045, "nodeType": "RevertStatement", - "src": "4360:40:66" + "src": "4360:40:44" } ] } @@ -5784,33 +5800,33 @@ "kind": "function", "modifiers": [], "name": "_checkAllowlist", - "nameLocation": "3987:15:66", + "nameLocation": "3987:15:44", "parameters": { - "id": 7679, + "id": 5995, "nodeType": "ParameterList", "parameters": [], - "src": "4002:2:66" + "src": "4002:2:44" }, "returnParameters": { - "id": 7680, + "id": 5996, "nodeType": "ParameterList", "parameters": [], - "src": "4019:0:66" + "src": "4019:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 7778, + "id": 6094, "nodeType": "FunctionDefinition", - "src": "4708:373:66", + "src": "4708:373:44", "nodes": [], "body": { - "id": 7777, + "id": 6093, "nodeType": "Block", - "src": "4821:260:66", + "src": "4821:260:44", "nodes": [], "statements": [ { @@ -5821,7 +5837,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7751, + "id": 6067, "isConstant": false, "isLValue": false, "isPure": false, @@ -5831,18 +5847,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7747, + "id": 6063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7745, + "id": 6061, "name": "market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7737, - "src": "4839:6:66", + "referencedDeclaration": 6053, + "src": "4839:6:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5852,21 +5868,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 7746, + "id": 6062, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4848:1:66", + "src": "4848:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4839:10:66", + "src": "4839:10:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5879,18 +5895,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7750, + "id": 6066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7748, + "id": 6064, "name": "market", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7737, - "src": "4853:6:66", + "referencedDeclaration": 6053, + "src": "4853:6:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5900,27 +5916,27 @@ "operator": "<", "rightExpression": { "hexValue": "34", - "id": 7749, + "id": 6065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4862:1:66", + "src": "4862:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "4853:10:66", + "src": "4853:10:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4839:24:66", + "src": "4839:24:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5928,14 +5944,14 @@ }, { "hexValue": "4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c7565", - "id": 7752, + "id": 6068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4865:36:66", + "src": "4865:36:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_454e8d7a818cd1628747c7ae13f7b93fb8ebb40490fc42d1d0ea0f07c86ddd78", "typeString": "literal_string \"NovaRegistry: invalid market value\"" @@ -5954,7 +5970,7 @@ "typeString": "literal_string \"NovaRegistry: invalid market value\"" } ], - "id": 7744, + "id": 6060, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -5962,13 +5978,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4831:7:66", + "src": "4831:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7753, + "id": 6069, "isConstant": false, "isLValue": false, "isPure": false, @@ -5977,16 +5993,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4831:71:66", + "src": "4831:71:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7754, + "id": 6070, "nodeType": "ExpressionStatement", - "src": "4831:71:66" + "src": "4831:71:44" }, { "expression": { @@ -5996,7 +6012,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7762, + "id": 6078, "isConstant": false, "isLValue": false, "isPure": false, @@ -6005,12 +6021,12 @@ "expression": { "arguments": [ { - "id": 7758, + "id": 6074, "name": "metadata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7739, - "src": "4926:8:66", + "referencedDeclaration": 6055, + "src": "4926:8:44", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -6024,26 +6040,26 @@ "typeString": "string memory" } ], - "id": 7757, + "id": 6073, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4920:5:66", + "src": "4920:5:44", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { - "id": 7756, + "id": 6072, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4920:5:66", + "src": "4920:5:44", "typeDescriptions": {} } }, - "id": 7759, + "id": 6075, "isConstant": false, "isLValue": false, "isPure": false, @@ -6052,22 +6068,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4920:15:66", + "src": "4920:15:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 7760, + "id": 6076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4936:6:66", + "memberLocation": "4936:6:44", "memberName": "length", "nodeType": "MemberAccess", - "src": "4920:22:66", + "src": "4920:22:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6077,21 +6093,21 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 7761, + "id": 6077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4946:1:66", + "src": "4946:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4920:27:66", + "src": "4920:27:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6099,14 +6115,14 @@ }, { "hexValue": "4e6f766152656769737472793a206d6574616461746120656d707479", - "id": 7763, + "id": 6079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4949:30:66", + "src": "4949:30:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7269894a647c288f0f90ecfd7aada9097f50e3d3a64d3b3e643765a91a1fb0e7", "typeString": "literal_string \"NovaRegistry: metadata empty\"" @@ -6125,7 +6141,7 @@ "typeString": "literal_string \"NovaRegistry: metadata empty\"" } ], - "id": 7755, + "id": 6071, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6133,13 +6149,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4912:7:66", + "src": "4912:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7764, + "id": 6080, "isConstant": false, "isLValue": false, "isPure": false, @@ -6148,16 +6164,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4912:68:66", + "src": "4912:68:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7765, + "id": 6081, "nodeType": "ExpressionStatement", - "src": "4912:68:66" + "src": "4912:68:44" }, { "expression": { @@ -6167,7 +6183,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7773, + "id": 6089, "isConstant": false, "isLValue": false, "isPure": false, @@ -6177,18 +6193,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7769, + "id": 6085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7767, + "id": 6083, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7741, - "src": "4998:10:66", + "referencedDeclaration": 6057, + "src": "4998:10:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6198,21 +6214,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 7768, + "id": 6084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5011:1:66", + "src": "5011:1:44", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4998:14:66", + "src": "4998:14:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6225,18 +6241,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7772, + "id": 6088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 7770, + "id": 6086, "name": "commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7741, - "src": "5016:10:66", + "referencedDeclaration": 6057, + "src": "5016:10:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6246,27 +6262,27 @@ "operator": "<", "rightExpression": { "hexValue": "3131", - "id": 7771, + "id": 6087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5029:2:66", + "src": "5029:2:44", "typeDescriptions": { "typeIdentifier": "t_rational_11_by_1", "typeString": "int_const 11" }, "value": "11" }, - "src": "5016:15:66", + "src": "5016:15:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "4998:33:66", + "src": "4998:33:44", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6274,14 +6290,14 @@ }, { "hexValue": "4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e742076616c7565", - "id": 7774, + "id": 6090, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5033:40:66", + "src": "5033:40:44", "typeDescriptions": { "typeIdentifier": "t_stringliteral_93deb992426c0786ca48c27a2526d0480727d585d87ecf5efcb6b8ac5644f3ef", "typeString": "literal_string \"NovaRegistry: invalid commitment value\"" @@ -6300,7 +6316,7 @@ "typeString": "literal_string \"NovaRegistry: invalid commitment value\"" } ], - "id": 7766, + "id": 6082, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -6308,13 +6324,13 @@ -18 ], "referencedDeclaration": -18, - "src": "4990:7:66", + "src": "4990:7:44", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7775, + "id": 6091, "isConstant": false, "isLValue": false, "isPure": false, @@ -6323,16 +6339,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4990:84:66", + "src": "4990:84:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7776, + "id": 6092, "nodeType": "ExpressionStatement", - "src": "4990:84:66" + "src": "4990:84:44" } ] }, @@ -6340,20 +6356,20 @@ "kind": "function", "modifiers": [], "name": "_validateNovaDeploymentParams", - "nameLocation": "4717:29:66", + "nameLocation": "4717:29:44", "parameters": { - "id": 7742, + "id": 6058, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7737, + "id": 6053, "mutability": "mutable", "name": "market", - "nameLocation": "4755:6:66", + "nameLocation": "4755:6:44", "nodeType": "VariableDeclaration", - "scope": 7778, - "src": "4747:14:66", + "scope": 6094, + "src": "4747:14:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6361,10 +6377,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7736, + "id": 6052, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4747:7:66", + "src": "4747:7:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6374,13 +6390,13 @@ }, { "constant": false, - "id": 7739, + "id": 6055, "mutability": "mutable", "name": "metadata", - "nameLocation": "4777:8:66", + "nameLocation": "4777:8:44", "nodeType": "VariableDeclaration", - "scope": 7778, - "src": "4763:22:66", + "scope": 6094, + "src": "4763:22:44", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6388,10 +6404,10 @@ "typeString": "string" }, "typeName": { - "id": 7738, + "id": 6054, "name": "string", "nodeType": "ElementaryTypeName", - "src": "4763:6:66", + "src": "4763:6:44", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -6401,13 +6417,13 @@ }, { "constant": false, - "id": 7741, + "id": 6057, "mutability": "mutable", "name": "commitment", - "nameLocation": "4795:10:66", + "nameLocation": "4795:10:44", "nodeType": "VariableDeclaration", - "scope": 7778, - "src": "4787:18:66", + "scope": 6094, + "src": "4787:18:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6415,10 +6431,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7740, + "id": 6056, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4787:7:66", + "src": "4787:7:44", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6427,28 +6443,28 @@ "visibility": "internal" } ], - "src": "4746:60:66" + "src": "4746:60:44" }, "returnParameters": { - "id": 7743, + "id": 6059, "nodeType": "ParameterList", "parameters": [], - "src": "4821:0:66" + "src": "4821:0:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { - "id": 7791, + "id": 6107, "nodeType": "FunctionDefinition", - "src": "5087:143:66", + "src": "5087:143:44", "nodes": [], "body": { - "id": 7790, + "id": 6106, "nodeType": "Block", - "src": "5177:53:66", + "src": "5177:53:44", "nodes": [], "statements": [ { @@ -6457,33 +6473,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 7786, + "id": 6102, "name": "ERC2771Recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56661, - "src": "5194:16:66", + "referencedDeclaration": 54652, + "src": "5194:16:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$56661_$", + "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$54652_$", "typeString": "type(contract ERC2771Recipient)" } }, - "id": 7787, + "id": 6103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5211:10:66", + "memberLocation": "5211:10:44", "memberName": "_msgSender", "nodeType": "MemberAccess", - "referencedDeclaration": 56626, - "src": "5194:27:66", + "referencedDeclaration": 54617, + "src": "5194:27:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 7788, + "id": 6104, "isConstant": false, "isLValue": false, "isPure": false, @@ -6492,75 +6508,75 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5194:29:66", + "src": "5194:29:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 7785, - "id": 7789, + "functionReturnParameters": 6101, + "id": 6105, "nodeType": "Return", - "src": "5187:36:66" + "src": "5187:36:44" } ] }, "baseFunctions": [ - 56626, - 62100 + 54617, + 59402 ], "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", - "nameLocation": "5096:10:66", + "nameLocation": "5096:10:44", "overrides": { - "id": 7782, + "id": 6098, "nodeType": "OverrideSpecifier", "overrides": [ { - "id": 7780, + "id": 6096, "name": "ERC2771Recipient", "nameLocations": [ - "5132:16:66" + "5132:16:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, - "src": "5132:16:66" + "referencedDeclaration": 54652, + "src": "5132:16:44" }, { - "id": 7781, + "id": 6097, "name": "Context", "nameLocations": [ - "5150:7:66" + "5150:7:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62110, - "src": "5150:7:66" + "referencedDeclaration": 59412, + "src": "5150:7:44" } ], - "src": "5123:35:66" + "src": "5123:35:44" }, "parameters": { - "id": 7779, + "id": 6095, "nodeType": "ParameterList", "parameters": [], - "src": "5106:2:66" + "src": "5106:2:44" }, "returnParameters": { - "id": 7785, + "id": 6101, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7784, + "id": 6100, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7791, - "src": "5168:7:66", + "scope": 6107, + "src": "5168:7:44", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6568,10 +6584,10 @@ "typeString": "address" }, "typeName": { - "id": 7783, + "id": 6099, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5168:7:66", + "src": "5168:7:44", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6581,22 +6597,22 @@ "visibility": "internal" } ], - "src": "5167:9:66" + "src": "5167:9:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 7804, + "id": 6120, "nodeType": "FunctionDefinition", - "src": "5236:146:66", + "src": "5236:146:44", "nodes": [], "body": { - "id": 7803, + "id": 6119, "nodeType": "Block", - "src": "5331:51:66", + "src": "5331:51:44", "nodes": [], "statements": [ { @@ -6605,33 +6621,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 7799, + "id": 6115, "name": "ERC2771Recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56661, - "src": "5348:16:66", + "referencedDeclaration": 54652, + "src": "5348:16:44", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$56661_$", + "typeIdentifier": "t_type$_t_contract$_ERC2771Recipient_$54652_$", "typeString": "type(contract ERC2771Recipient)" } }, - "id": 7800, + "id": 6116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5365:8:66", + "memberLocation": "5365:8:44", "memberName": "_msgData", "nodeType": "MemberAccess", - "referencedDeclaration": 56660, - "src": "5348:25:66", + "referencedDeclaration": 54651, + "src": "5348:25:44", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$", "typeString": "function () view returns (bytes calldata)" } }, - "id": 7801, + "id": 6117, "isConstant": false, "isLValue": false, "isPure": false, @@ -6640,75 +6656,75 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5348:27:66", + "src": "5348:27:44", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, - "functionReturnParameters": 7798, - "id": 7802, + "functionReturnParameters": 6114, + "id": 6118, "nodeType": "Return", - "src": "5341:34:66" + "src": "5341:34:44" } ] }, "baseFunctions": [ - 56660, - 62109 + 54651, + 59411 ], "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", - "nameLocation": "5245:8:66", + "nameLocation": "5245:8:44", "overrides": { - "id": 7795, + "id": 6111, "nodeType": "OverrideSpecifier", "overrides": [ { - "id": 7793, + "id": 6109, "name": "ERC2771Recipient", "nameLocations": [ - "5279:16:66" + "5279:16:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, - "src": "5279:16:66" + "referencedDeclaration": 54652, + "src": "5279:16:44" }, { - "id": 7794, + "id": 6110, "name": "Context", "nameLocations": [ - "5297:7:66" + "5297:7:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62110, - "src": "5297:7:66" + "referencedDeclaration": 59412, + "src": "5297:7:44" } ], - "src": "5270:35:66" + "src": "5270:35:44" }, "parameters": { - "id": 7792, + "id": 6108, "nodeType": "ParameterList", "parameters": [], - "src": "5253:2:66" + "src": "5253:2:44" }, "returnParameters": { - "id": 7798, + "id": 6114, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7797, + "id": 6113, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 7804, - "src": "5315:14:66", + "scope": 6120, + "src": "5315:14:44", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -6716,10 +6732,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7796, + "id": 6112, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5315:5:66", + "src": "5315:5:44", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6728,9 +6744,9 @@ "visibility": "internal" } ], - "src": "5314:16:66" + "src": "5314:16:44" }, - "scope": 7805, + "scope": 6121, "stateMutability": "view", "virtual": false, "visibility": "internal" @@ -6740,81 +6756,81 @@ "baseContracts": [ { "baseName": { - "id": 7398, + "id": 5714, "name": "INovaRegistry", "nameLocations": [ - "745:13:66" + "745:13:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 8146, - "src": "745:13:66" + "referencedDeclaration": 6462, + "src": "745:13:44" }, - "id": 7399, + "id": 5715, "nodeType": "InheritanceSpecifier", - "src": "745:13:66" + "src": "745:13:44" }, { "baseName": { - "id": 7400, + "id": 5716, "name": "ERC2771Recipient", "nameLocations": [ - "760:16:66" + "760:16:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 56661, - "src": "760:16:66" + "referencedDeclaration": 54652, + "src": "760:16:44" }, - "id": 7401, + "id": 5717, "nodeType": "InheritanceSpecifier", - "src": "760:16:66" + "src": "760:16:44" }, { "baseName": { - "id": 7402, + "id": 5718, "name": "Ownable", "nameLocations": [ - "778:7:66" + "778:7:44" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 59377, - "src": "778:7:66" + "referencedDeclaration": 57368, + "src": "778:7:44" }, - "id": 7403, + "id": 5719, "nodeType": "InheritanceSpecifier", - "src": "778:7:66" + "src": "778:7:44" } ], "canonicalName": "NovaRegistry", "contractDependencies": [ - 59826, - 59911 + 57817, + 57902 ], "contractKind": "contract", "documentation": { - "id": 7397, + "id": 5713, "nodeType": "StructuredDocumentation", - "src": "696:24:66", + "src": "696:24:44", "text": "@title NovaRegistry" }, "fullyImplemented": true, "linearizedBaseContracts": [ - 7805, - 59377, - 62110, - 56661, - 57348, - 8146 + 6121, + 57368, + 59412, + 54652, + 55339, + 6462 ], "name": "NovaRegistry", - "nameLocation": "729:12:66", - "scope": 7806, + "nameLocation": "729:12:44", + "scope": 6122, "usedErrors": [ - 13117, - 13121 + 11108, + 11112 ] } ], "license": "UNLICENSED" }, - "id": 66 + "id": 44 } \ No newline at end of file diff --git a/out/QuestOnboardPlugin.t.sol/TestQuestPlugin.json b/out/QuestOnboardPlugin.t.sol/TestQuestPlugin.json index 64ae9fc4..5db82ad7 100644 --- a/out/QuestOnboardPlugin.t.sol/TestQuestPlugin.json +++ b/out/QuestOnboardPlugin.t.sol/TestQuestPlugin.json @@ -566,13 +566,13 @@ } ], "bytecode": { - "object": "0x60806040526007805460ff199081166001908117909255600b805490911690911790556025805473ce2595302eeb80cf8c4ea3f3a3f713309f617e866001600160a01b031991821617909155602f805490911665e8f281b9340017905534801561006857600080fd5b5062017fc7806200007a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c80636c719a021162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b80636c719a02146200017f57806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000b06565b6040516200013091906200274f565b60405180910390f35b6200014362000b6a565b604051620001309190620027f2565b6200012162000cb8565b6200012162000d1a565b6200017062000d7c565b604051620001309190620028b8565b6200010b62000e66565b6200019362001475565b6040516200013091906200296f565b620001706200154f565b6200019362001639565b620001c062001713565b604051901515815260200162000130565b6200012162001840565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b1190620018a2565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b1190620018a2565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b1190620018a2565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b1190620018a2565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b1190620018a2565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620029d5565b6001600160a01b03161460405180606001604052806028815260200162017f6a60289139620018a2565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002a07565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e6572000000000000000000815250620018a2565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620029d5565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b815250620018a2565b565b62000587620018f0565b6024546040516001600160a01b0390911690620005a490620026c3565b6001600160a01b039091168152602001604051809103906000f080158015620005d1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601560448201527428bab2b9ba27b73137b0b93234b733a8363ab3b4b760591b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200066657600080fd5b505af11580156200067b573d6000803e3d6000fd5b50505050602c60009054906101000a90046001600160a01b03166001600160a01b031663ee1278426040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f99190620029d5565b602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a28bab2b9ba28363ab3b4b760a91b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200078357600080fd5b505af115801562000798573d6000803e3d6000fd5b5050602454602f546040516001600160a01b03928316945091169150620007bf90620026d1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007f3573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a2a30b9b5b9a8363ab3b4b760a91b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200087e57600080fd5b505af115801562000893573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062017f24833981519152915063ca669fa790602401600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba92620009479216908590600190889060040162002a2b565b6020604051808303816000875af115801562000967573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098d919062002ac8565b9050620009b460405180606001604052806026815260200162017f4460269139826200244d565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062017f248339815191529063ca669fa790602401600060405180830381600087803b15801562000a0957600080fd5b505af115801562000a1e573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b5050601e54602e546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff919062002ac8565b6030555050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000b6057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000b41575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000caf57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c9757838290600052602060002001805462000c039062002ae2565b80601f016020809104026020016040519081016040528092919081815260200182805462000c319062002ae2565b801562000c825780601f1062000c565761010080835404028352916020019162000c82565b820191906000526020600020905b81548152906001019060200180831162000c6457829003601f168201915b50505050508152602001906001019062000be1565b50505050815250508152602001906001019062000b8e565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e4d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000e0e5790505b5050505050815250508152602001906001019062000da0565b60265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062017f248339815191529063ca669fa790602401600060405180830381600087803b15801562000ebb57600080fd5b505af115801562000ed0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b604482015260008051602062017f24833981519152925063f28dceb39150606401600060405180830381600087803b15801562000f3a57600080fd5b505af115801562000f4f573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b15801562000f9a57600080fd5b505af115801562000faf573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062017f2483398151915292506306447d569150602401600060405180830381600087803b1580156200100857600080fd5b505af11580156200101d573d6000803e3d6000fd5b505050506200102d606462002496565b60405163f28dceb360e01b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b606482015260008051602062017f248339815191529063f28dceb390608401600060405180830381600087803b158015620010b257600080fd5b505af1158015620010c7573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b1580156200111257600080fd5b505af115801562001127573d6000803e3d6000fd5b5050602d54600092506001600160a01b0316905063bd45a0a960016200114f42600a62002b1e565b6040516001600160e01b031960e085901b16815260048101929092526080602483015260066084830152651d5c9a50d25160d21b60a483015260448201526001606482015260c4016020604051808303816000875af1158015620011b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011dd919062002ac8565b90506200121281600014156040518060400160405280600b81526020016a195e1c1958dd1959081a5960aa1b815250620018a2565b60405163f28dceb360e01b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b606482015260008051602062017f248339815191529063f28dceb390608401600060405180830381600087803b1580156200129357600080fd5b505af1158015620012a8573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620012f357600080fd5b505af115801562001308573d6000803e3d6000fd5b5050505062001319603054620024d6565b602d546030546040516382b3501760e01b815260048101849052602481019190915260606044820152600f60648201526e7461736b5572694d6574616461746160881b60848201526001600160a01b03909116906382b350179060a401600060405180830381600087803b1580156200139157600080fd5b505af1158015620013a6573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620013f157600080fd5b505af115801562001406573d6000803e3d6000fd5b5050602d54604051630697483560e41b815260016004820152602481018590526001600160a01b039091169250636974835091506044015b600060405180830381600087803b1580156200145957600080fd5b505af11580156200146e573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000caf578382906000526020600020018054620014bb9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620014e99062002ae2565b80156200153a5780601f106200150e576101008083540402835291602001916200153a565b820191906000526020600020905b8154815290600101906020018083116200151c57829003601f168201915b50505050508152602001906001019062001499565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200162057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015e15790505b5050505050815250508152602001906001019062001573565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5783829060005260206000200180546200167f9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620016ad9062002ae2565b8015620016fe5780601f10620016d257610100808354040283529160200191620016fe565b820191906000526020600020905b815481529060010190602001808311620016e057829003601f168201915b5050505050815260200190600101906200165d565b600754600090610100900460ff1615620017365750600754610100900460ff1690565b600060008051602062017f248339815191523b156200183b576040805160008051602062017f24833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620017bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b46565b60408051601f1981840301815290829052620017d99162002b79565b6000604051808303816000865af19150503d806000811462001818576040519150601f19603f3d011682016040523d82523d6000602084013e6200181d565b606091505b509150508080602001905181019062001837919062002a07565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b81620018ec577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018d9919062002b97565b60405180910390a1620018ec8262002521565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200198157600080fd5b505af115801562001996573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062017f24833981519152925063c657c7189150608401600060405180830381600087803b15801562001a2b57600080fd5b505af115801562001a40573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062017f24833981519152925063c657c7189150608401600060405180830381600087803b15801562001ad557600080fd5b505af115801562001aea573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001b8b57600080fd5b505af115801562001ba0573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062017f2483398151915292506306447d569150602401600060405180830381600087803b15801562001bf957600080fd5b505af115801562001c0e573d6000803e3d6000fd5b5050505060405162001c2090620026df565b604051809103906000f08015801562001c3d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001cc757600080fd5b505af115801562001cdc573d6000803e3d6000fd5b5050505060405162001cee90620026ed565b604051809103906000f08015801562001d0b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001d9457600080fd5b505af115801562001da9573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001df757600080fd5b505af115801562001e0c573d6000803e3d6000fd5b5050505060405162001e1e90620026fb565b604051809103906000f08015801562001e3b573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001ec157600080fd5b505af115801562001ed6573d6000803e3d6000fd5b5050505060405162001ee89062002709565b604051809103906000f08015801562001f05573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001f8f57600080fd5b505af115801562001fa4573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fc5915062002717565b6001600160a01b039091168152602001604051809103906000f08015801562001ff2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200208157600080fd5b505af115801562002096573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620020b7915062002725565b6001600160a01b039091168152602001604051809103906000f080158015620020e4573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200217357600080fd5b505af115801562002188573d6000803e3d6000fd5b505050506040516200219a9062002733565b604051809103906000f080158015620021b7573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b1580156200221757600080fd5b505af11580156200222c573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200225d9062002741565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022a2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200232f57600080fd5b505af115801562002344573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620023c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023e69190620029d5565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062017f24833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200145957600080fd5b620018ec82826040516024016200246692919062002bc8565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262002599565b60008051602062017f2483398151915263e5d6bf02620024b7834262002b1e565b6040518263ffffffff1660e01b81526004016200143e91815260200190565b6200251e81604051602401620024ee91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262002599565b50565b806200251e577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200251e620025ba565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062017f248339815191523b15620026b2576040805160008051602062017f24833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200264d929160200162002b46565b60408051601f1981840301815290829052620026699162002b79565b6000604051808303816000865af19150503d8060008114620026a8576040519150601f19603f3d011682016040523d82523d6000602084013e620026ad565b606091505b505050505b6007805461ff001916610100179055565b6138218062002bed83390190565b611a0d806200640e83390190565b6101208062007e1b83390190565b610c728062007f3b83390190565b6137238062008bad83390190565b6123c2806200c2d083390190565b6110db806200e69283390190565b613043806200f76d83390190565b6137d580620127b083390190565b611f9f8062015f8583390190565b6020808252825182820181905260009190848201906040850190845b81811015620027925783516001600160a01b0316835292840192918401916001016200276b565b50909695505050505050565b60005b83811015620027bb578181015183820152602001620027a1565b50506000910152565b60008151808452620027de8160208601602086016200279e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620028a857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200289157605f198985030183526200287e848651620027c4565b948e01949350918d01916001016200285f565b505050978a01979450509188019160010162002819565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200294a5783516001600160e01b0319168252928b019260019290920191908b01906200291e565b50978a01979550505091870191600101620028e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620029c857603f19888603018452620029b5858351620027c4565b9450928501929085019060010162002996565b5092979650505050505050565b600060208284031215620029e857600080fd5b81516001600160a01b038116811462002a0057600080fd5b9392505050565b60006020828403121562002a1a57600080fd5b8151801515811462002a0057600080fd5b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562002ab95783518352928401929184019160010162002a9b565b50909998505050505050505050565b60006020828403121562002adb57600080fd5b5051919050565b600181811c9082168062002af757607f821691505b60208210810362002b1857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111562002b4057634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160e01b031983168152815160009062002b6b8160048501602087016200279e565b919091016004019392505050565b6000825162002b8d8184602087016200279e565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002a006080830184620027c4565b60408152600062002bdd6040830185620027c4565b9050826020830152939250505056fe608060405234801561001057600080fd5b5060405161382138038061382183398101604081905261002f91610163565b600180546001600160a01b0319166001600160a01b0383169081178255604080516341dcea9160e01b81529051849392916341dcea919160048083019260209291908290030181865afa15801561008a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ae9190610163565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b031916331790556003555060405181906100f990610156565b6001600160a01b039091168152602001604051809103906000f080158015610125573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790556004805460ff1916905550610193565b6128b680610f6b83390190565b60006020828403121561017557600080fd5b81516001600160a01b038116811461018c57600080fd5b9392505050565b610dc9806101a26000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637fa56b831161008c578063a1308f2711610066578063a1308f27146101a4578063acec338a146101ad578063d5f39488146101c0578063ee127842146101d157600080fd5b80637fa56b831461017857806389f12ed91461018b5780638da5cb5b1461019c57600080fd5b806302a4dca0146100d457806322f3e2d4146100e95780632fe7e4411461010b57806341dcea91146101225780634f2b51c714610152578063697bd9d414610165575b600080fd5b6100e76100e2366004610b0e565b6101e2565b005b6004546100f69060ff1681565b60405190151581526020015b60405180910390f35b61011460025481565b604051908152602001610102565b60045461013a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610102565b6100f6610160366004610b3f565b610242565b60055461013a906001600160a01b031681565b6100e7610186366004610b3f565b6102bf565b6001546001600160a01b031661013a565b61013a610300565b61011460035481565b6100e76101bb366004610b79565b61037b565b6000546001600160a01b031661013a565b6005546001600160a01b031661013a565b60045461010090046001600160a01b0316331461023d5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60055460405163d4a1317560e01b81526001600160a01b03848116600483015260248201849052600092169063d4a1317590604401602060405180830381865afa158015610294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b89190610b96565b9392505050565b60405162461bcd60e51b8152602060048201526016602482015275119d5b98dd1a5bdb939bdd125b5c1b195b595b9d195960521b6044820152606401610234565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103769190610bb3565b905090565b6001546001600160a01b0316604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c90602401602060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190610b96565b61042d5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b6044820152606401610234565b600554604051630509a75b60e51b8152600160048201526000916001600160a01b03169063a134eb6090602401602060405180830381865afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190610bd0565b600554604051630509a75b60e51b8152600260048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e9190610bd0565b600554604051630509a75b60e51b8152600360048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190610bd0565b905083156107cd5760008311806105985750600082115b806105a35750600081115b6105fe5760405162461bcd60e51b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152608401610234565b60055460405163f4f4d23760e01b8152600481018590526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106709190810190610c59565b60a0015111806106f3575060055460405163f4f4d23760e01b8152600481018490526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ed9190810190610c59565b60a00151115b80610771575060055460405163f4f4d23760e01b8152600481018390526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076b9190810190610c59565b60a00151115b6107c85760405162461bcd60e51b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152608401610234565b610afa565b60055460405163f4f4d23760e01b8152600481018590526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610816573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083e9190810190610c59565b6080015115806108c0575060055460405163f4f4d23760e01b81526004810185905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610892573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ba9190810190610c59565b60800151115b6108dc5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018490526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094d9190810190610c59565b6080015115806109cf575060055460405163f4f4d23760e01b81526004810184905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156109a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c99190810190610c59565b60800151115b6109eb5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018390526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a5c9190810190610c59565b608001511580610ade575060055460405163f4f4d23760e01b81526004810183905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad89190810190610c59565b60800151115b610afa5760405162461bcd60e51b815260040161023490610d6c565b6004805460ff191685151517905550505050565b600060208284031215610b2057600080fd5b5035919050565b6001600160a01b0381168114610b3c57600080fd5b50565b60008060408385031215610b5257600080fd5b8235610b5d81610b27565b946020939093013593505050565b8015158114610b3c57600080fd5b600060208284031215610b8b57600080fd5b81356102b881610b6b565b600060208284031215610ba857600080fd5b81516102b881610b6b565b600060208284031215610bc557600080fd5b81516102b881610b27565b600060208284031215610be257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610c2257610c22610be9565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c5157610c51610be9565b604052919050565b60006020808385031215610c6c57600080fd5b825167ffffffffffffffff80821115610c8457600080fd5b9084019060c08287031215610c9857600080fd5b610ca0610bff565b8251815283830151610cb181610b6b565b81850152604083015182811115610cc757600080fd5b8301601f81018813610cd857600080fd5b805183811115610cea57610cea610be9565b610cfc601f8201601f19168701610c28565b93508084528886828401011115610d1257600080fd5b60005b81811015610d30578281018701518582018801528601610d15565b5060008682860101525050816040820152606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b6020808252600d908201526c1c5d595cdd081cdd185c9d1959609a1b60408201526060019056fea2646970667358221220b8606e92bcc4a34f85de6fd13e22b8598453d8d61d6ca5f1736149e3cfa65f8564736f6c6343000813003360806040523480156200001157600080fd5b50604051620028b6380380620028b6833981016040819052620000349162000228565b80600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c3919062000228565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b03191633179055600355506200010f600580546001019055565b600780546001600160a01b031916331790556040805160c08101825260008082526020808301828152845191820185528282529383019081526060830182905242608084015260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551919290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190910190620002009082620002ff565b50606082015181600301556080820151816004015560a08201518160050155505050620003cb565b6000602082840312156200023b57600080fd5b81516001600160a01b03811681146200025357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200028557607f821691505b602082108103620002a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fa57600081815260208120601f850160051c81016020861015620002d55750805b601f850160051c820191505b81811015620002f657828155600101620002e1565b5050505b505050565b81516001600160401b038111156200031b576200031b6200025a565b62000333816200032c845462000270565b84620002ac565b602080601f8311600181146200036b5760008415620003525750858301515b600019600386901b1c1916600185901b178555620002f6565b600085815260208120601f198616915b828110156200039c578886015182559484019460019091019084016200037b565b5085821015620003bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124db80620003db6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063bd45a0a911610097578063d401036111610071578063d40103611461038d578063d4a13175146103a0578063d5f39488146103b3578063f4f4d237146103c457600080fd5b8063bd45a0a914610354578063bda8768f14610367578063ca8836d21461037a57600080fd5b8063a1308f27116100d3578063a1308f27146102f8578063a134eb6014610301578063a4b986d814610321578063b699520f1461034157600080fd5b80638da5cb5b146102ca5780639465120b146102d257806395ecc642146102e557600080fd5b806339a5449b116101665780636974835011610140578063697483501461028b5780637fc573d21461029e57806382b35017146102a657806389f12ed9146102b957600080fd5b806339a5449b1461023557806341dcea91146102485780635bf14f2d1461027857600080fd5b806302a4dca0146101ae5780630b2c5834146101c35780630d39c1ec146101d657806322f3e2d4146101e95780632b13d6011461020b5780632fe7e4411461021e575b600080fd5b6101c16101bc366004611d6c565b6103e4565b005b6101c16101d1366004611d85565b610444565b6101c16101e4366004611e04565b610588565b6004546101f69060ff1681565b60405190151581526020015b60405180910390f35b6101f6610219366004611e3e565b610649565b61022760025481565b604051908152602001610202565b6101c1610243366004611d6c565b61068d565b6004546102609061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610202565b600754610260906001600160a01b031681565b6101c1610299366004611e78565b6107dc565b61022761098e565b6101c16102b4366004611f62565b6109aa565b6001546001600160a01b0316610260565b610260610c53565b6101c16102e0366004611fb2565b610cc9565b6101f66102f3366004611d6c565b610f1f565b61022760035481565b61022761030f366004611d6c565b600a6020526000908152604090205481565b61033461032f366004611d6c565b610fc0565b604051610202919061200a565b6101c161034f366004611d6c565b611046565b610227610362366004612059565b6111e4565b610227610375366004611e04565b611460565b6101f6610388366004611d6c565b611491565b61022761039b366004611e3e565b6114c1565b6101f66103ae366004611e3e565b61174f565b6000546001600160a01b0316610260565b6103d76103d2366004611d6c565b611781565b60405161020291906120f6565b60045461010090046001600160a01b0316331461043f5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612152565b6104cc5760405162461bcd60e51b81526004016104369061216f565b826104d681611491565b6104f25760405162461bcd60e51b815260040161043690612196565b836104fc60055490565b101561051a5760405162461bcd60e51b8152600401610436906121bc565b60005b82811015610558576105468585858481811061053b5761053b6121e6565b9050604002016118c4565b8061055081612212565b91505061051d565b506040517f9d332a24eb432cdce98c51fd6189524fd2175f1ae19f450acad59e6b83dba95190600090a150505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612152565b6106105760405162461bcd60e51b81526004016104369061216f565b8061061a81611491565b6106365760405162461bcd60e51b815260040161043690612196565b506000918252600a602052604090912055565b6000818152600b602090815260408083206001600160a01b038616845290915281205460ff1680156106845750600061068284846114c1565b115b90505b92915050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa1580156106d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fa9190612152565b801561073c575080600a600060068481548110610719576107196121e6565b906000526020600020906006020160000154815260200190815260200160002054145b61077c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191690558051858152918201929092527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a391015b60405180910390a15050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190612152565b6108645760405162461bcd60e51b81526004016104369061216f565b600061086f82611781565b90508060a001516000036108af5760405162461bcd60e51b81526020600482015260076024820152664e6f5461736b7360c81b6044820152606401610436565b428160600151610e106108c2919061222b565b82608001516108d19190612242565b10156109075760405162461bcd60e51b8152602060048201526005602482015264115b99195960da1b6044820152606401610436565b82151560208201526006805482919084908110610926576109266121e6565b60009182526020918290208351600692909202019081559082015160018201805460ff19169115159190911790556040820151600282019061096890826122de565b50606082015160038201556080820151600482015560a090910151600590910155505050565b6000600161099b60055490565b6109a5919061239e565b905090565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190612152565b610a325760405162461bcd60e51b81526004016104369061216f565b82610a3c81611491565b610a585760405162461bcd60e51b815260040161043690612196565b6004805460405163e832df9160e01b81529182018590526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906123b1565b9050600081600001516001600160a01b0316630bb75b453360068981548110610af657610af66121e6565b9060005260206000209060060201600001548760068b81548110610b1c57610b1c6121e6565b906000526020600020906006020160040154610e1060068d81548110610b4457610b446121e6565b906000526020600020906006020160030154610b60919061222b565b60068d81548110610b7357610b736121e6565b906000526020600020906006020160040154610b8f9190612242565b6040518663ffffffff1660e01b8152600401610baf9594939291906123eb565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf29190612426565b9050610c12866040518060400160405280888152602001848152506119c5565b60408051878152602081018390527f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386910160405180910390a1505050505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a5919061243f565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612152565b610d515760405162461bcd60e51b81526004016104369061216f565b83610d5b81611491565b610d775760405162461bcd60e51b815260040161043690612196565b84610d8160055490565b1015610d9f5760405162461bcd60e51b8152600401610436906121bc565b60008411610ddf5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205f726f6c6560981b6044820152606401610436565b6000835111610e1f5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964205f75726960a01b6044820152606401610436565b60008211610e6f5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964205f6475726174696f6e496e486f75727300000000000000006044820152606401610436565b8260068681548110610e8357610e836121e6565b90600052602060002090600602016002019081610ea091906122de565b508160068681548110610eb557610eb56121e6565b9060005260206000209060060201600301819055508360068681548110610ede57610ede6121e6565b600091825260208220600690910201919091556040517f496fee2e9fe0bf40e689814f88d58305e2ed8e4650401d6bd0c4f7cfc53fae039190a15050505050565b600080610e1060068481548110610f3857610f386121e6565b906000526020600020906006020160030154610f54919061222b565b60068481548110610f6757610f676121e6565b906000526020600020906006020160040154610f839190612242565b905060068381548110610f9857610f986121e6565b9060005260206000209060060201600401544210158015610fb95750804211155b9392505050565b606060086000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561103b57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ff5565b505050509050919050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190612152565b80156110f5575080600a6000600684815481106110d2576110d26121e6565b906000526020600020906006020160000154815260200190815260200160002054145b6111355760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b61113e82610f1f565b8061114d575061114d82611491565b6111895760405162461bcd60e51b815260206004820152600d60248201526c195e1c1a5c9959081c5d595cdd609a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191660011790558051858152918201929092527f8e536842b0bedb99bbe3d9b2f4d7cd3c1d89955698940f266371b4d4f5caa25791016107d0565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612152565b61126d5760405162461bcd60e51b81526004016104369061216f565b60008451116112ac5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b6044820152606401610436565b4283116112ef5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642073746172744461746560781b6044820152606401610436565b60006112fa60055490565b6040805160c081018252888152600060208201818152928201898152606083018890526080830189905260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4101906113ce90826122de565b50606082015160038201556080820151600482015560a0909101516005909101556000868152600a60205260408120549003611416576000868152600a602052604090208190555b611424600580546001019055565b6040518181527ff2376f43586d93a15b606c89747962a511dee47a8afacda035909ddd4460b1089060200160405180910390a195945050505050565b6009602052816000526040600020818154811061147c57600080fd5b90600052602060002001600091509150505481565b600042600683815481106114a7576114a76121e6565b906000526020600020906006020160040154119050919050565b60008181526008602052604081205481036114de57506000610687565b6000805b6000848152600860205260409020548110156117475760045460008581526008602052604081208054919261010090046001600160a01b03169163e832df91919085908110611533576115336121e6565b9060005260206000209060020201600001546040518263ffffffff1660e01b815260040161156391815260200190565b6040805180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906123b1565b51600086815260086020526040902080549192506001600160a01b0383169163973cdc78918991869081106115da576115da6121e6565b60009182526020909120600160029092020101546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b9190612152565b1561172857600085815260086020526040812080546001600160a01b0384169163e31c007f9186908110611691576116916121e6565b906000526020600020906002020160010154896040518363ffffffff1660e01b81526004016116d39291909182526001600160a01b0316602082015260400190565b602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612426565b905083811115611722578093505b50611734565b60009350505050610687565b508061173f81612212565b9150506114e2565b509392505050565b6000818152600a602052604081205480820361176f576000915050610687565b6117798482610649565b949350505050565b6117bc6040518060c0016040528060008152602001600015158152602001606081526020016000815260200160008152602001600081525090565b600682815481106117cf576117cf6121e6565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201805461181d90612255565b80601f016020809104026020016040519081016040528092919081815260200182805461184990612255565b80156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b60006118de836118d93685900385018561245c565b611cb0565b9050801961191d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b6044820152606401610436565b600083815260086020526040812080548390811061193d5761193d6121e6565b9060005260206000209060020201600101819055506000600860008581526020019081526020016000208281548110611978576119786121e6565b6000918252602090912060029091020155600680548490811061199d5761199d6121e6565b6000918252602082206005600690920201018054916119bb8361248e565b9190505550505050565b816119cf60055490565b10156119ed5760405162461bcd60e51b8152600401610436906121bc565b60048054825160405163e832df9160e01b8152928301526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6091906123b1565b80519091506001600160a01b0316611aab5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21038363ab3b4b760911b6044820152606401610436565b6004546000906001600160a01b03610100909104166328077c1a611ad76001546001600160a01b031690565b60208501516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612152565b9050611b5d6001546001600160a01b031690565b6001600160a01b031682600001516001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc919061243f565b6001600160a01b0316148015611bdf5750805b15611caa576000611bf08585611cb0565b90508019611ca85760008581526008602090815260408220805460018181018355918452928290208751600290940201928355908601519101556006805486908110611c3e57611c3e6121e6565b600091825260208220600560069092020101805491611c5c83612212565b91905055507f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386858560200151604051611c9f929190918252602082015260400190565b60405180910390a15b505b50505050565b6000805b600084815260086020526040902054811015611d615782516000858152600860205260409020805483908110611cec57611cec6121e6565b906000526020600020906002020160000154148015611d4357508260200151600860008681526020019081526020016000208281548110611d2f57611d2f6121e6565b906000526020600020906002020160010154145b15611d4f579050610687565b80611d5981612212565b915050611cb4565b506000199392505050565b600060208284031215611d7e57600080fd5b5035919050565b600080600060408486031215611d9a57600080fd5b83359250602084013567ffffffffffffffff80821115611db957600080fd5b818601915086601f830112611dcd57600080fd5b813581811115611ddc57600080fd5b8760208260061b8501011115611df157600080fd5b6020830194508093505050509250925092565b60008060408385031215611e1757600080fd5b50508035926020909101359150565b6001600160a01b0381168114611e3b57600080fd5b50565b60008060408385031215611e5157600080fd5b8235611e5c81611e26565b946020939093013593505050565b8015158114611e3b57600080fd5b60008060408385031215611e8b57600080fd5b8235611e5c81611e6a565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611ecf57611ecf611e96565b60405290565b600082601f830112611ee657600080fd5b813567ffffffffffffffff80821115611f0157611f01611e96565b604051601f8301601f19908116603f01168101908282118183101715611f2957611f29611e96565b81604052838152866020858801011115611f4257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611f7757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611f9c57600080fd5b611fa886828701611ed5565b9150509250925092565b60008060008060808587031215611fc857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611fed57600080fd5b611ff987828801611ed5565b949793965093946060013593505050565b602080825282518282018190526000919060409081850190868401855b8281101561204c57815180518552860151868501529284019290850190600101612027565b5091979650505050505050565b6000806000806080858703121561206f57600080fd5b84359350602085013567ffffffffffffffff81111561208d57600080fd5b61209987828801611ed5565b949794965050505060408301359260600135919050565b6000815180845260005b818110156120d6576020818501810151868301820152016120ba565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526020820151151560408201526000604083015160c0606084015261212860e08401826120b0565b905060608401516080840152608084015160a084015260a084015160c08401528091505092915050565b60006020828403121561216457600080fd5b8151610fb981611e6a565b6020808252600d908201526c2737ba1030b71030b236b4b71760991b604082015260600190565b6020808252600c908201526b4f6e6c792070656e64696e6760a01b604082015260600190565b60208082526010908201526f1a5b9d985b1a59081c5d595cdd081a5960821b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612224576122246121fc565b5060010190565b8082028115828204841417610687576106876121fc565b80820180821115610687576106876121fc565b600181811c9082168061226957607f821691505b60208210810361228957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156122d957600081815260208120601f850160051c810160208610156122b65750805b601f850160051c820191505b818110156122d5578281556001016122c2565b5050505b505050565b815167ffffffffffffffff8111156122f8576122f8611e96565b61230c816123068454612255565b8461228f565b602080601f83116001811461234157600084156123295750858301515b600019600386901b1c1916600185901b1785556122d5565b600085815260208120601f198616915b8281101561237057888601518255948401946001909101908401612351565b508582101561238e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610687576106876121fc565b6000604082840312156123c357600080fd5b6123cb611eac565b82516123d681611e26565b81526020928301519281019290925250919050565b60018060a01b038616815284602082015260a06040820152600061241260a08301866120b0565b606083019490945250608001529392505050565b60006020828403121561243857600080fd5b5051919050565b60006020828403121561245157600080fd5b8151610fb981611e26565b60006040828403121561246e57600080fd5b612476611eac565b82358152602083013560208201528091505092915050565b60008161249d5761249d6121fc565b50600019019056fea26469706673582212209b5a201ca27077b05c8bdca35109590999e0e5b81f37244b546f18f7d66b368264736f6c6343000813003360806040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000252565b81600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c391906200028a565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b031990811633178255600393909355600780548684169085161790556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a083018590526006805460018101825595819052835195027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810195865590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40820180549190971697169690961790945590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418501559151919350917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4201906200020f908262000354565b506080820151600482015560a09091015160059182015580546001019055505062000420565b80516001600160a01b03811681146200024d57600080fd5b919050565b600080604083850312156200026657600080fd5b620002718362000235565b9150620002816020840162000235565b90509250929050565b6000602082840312156200029d57600080fd5b620002a88262000235565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b03811115620003705762000370620002af565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6115dd80620004306000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063bd45a0a91161007c578063bd45a0a9146102e0578063d5f39488146102f3578063daf9113714610304578063e31c007f14610317578063eb08ab281461034d578063f4f4d2371461035757600080fd5b80638da5cb5b1461024d578063969bb3a814610255578063973cdc7814610268578063a1308f271461027b578063afb9992814610284578063b206b5691461029757600080fd5b80632fe7e441116101155780632fe7e441146101d057806341dcea91146101d95780634fd9efc4146101675780635d63f6c61461020957806389f12ed9146102175780638d9776721461022857600080fd5b806302a4dca01461015257806305261aea146101675780630bb75b451461017a57806322f3e2d4146101a05780632b086648146101bd575b600080fd5b610165610160366004610fac565b610377565b005b610165610175366004610fac565b6103d7565b61018d610188366004611080565b6103f0565b6040519081526020015b60405180910390f35b6004546101ad9060ff1681565b6040519015158152602001610197565b6101656101cb3660046110eb565b6105c9565b61018d60025481565b6004546101f19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610197565b610165610175366004611128565b6001546001600160a01b03166101f1565b61023b610236366004610fac565b610809565b604051610197969594939291906111ea565b6101f16108e7565b6007546101f1906001600160a01b031681565b6101ad61027636600461122c565b610962565b61018d60035481565b610165610292366004611258565b6109a8565b6102d36102a536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290206001015460ff1690565b60405161019791906112c2565b61018d6102ee3660046112ea565b610a52565b6000546001600160a01b03166101f1565b61016561031236600461127c565b610cb1565b61018d61032536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290205490565b60055461018d9081565b61036a610365366004610fac565b610e4e565b6040516101979190611341565b60045461010090046001600160a01b031633146103d25760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b60004282116104335760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b60008451116104545760405162461bcd60e51b81526004016103c9906113a3565b600061045f60055490565b6040805160c0810182524281526001600160a01b03808b16602083019081529282018a8152606083018a8152608084018a905260a08401899052600680546001810182556000829052855191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087018054919095166001600160a01b03199091161790935590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610568908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516105b792919061150c565b60405180910390a19695505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610635919061152d565b6106515760405162461bcd60e51b81526004016103c99061154f565b426006868154811061066557610665611574565b906000526020600020906006020160040154116106bb5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016103c9565b60008351116106dc5760405162461bcd60e51b81526004016103c9906113a3565b600554851061071c5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016103c9565b836006868154811061073057610730611574565b906000526020600020906006020160020181905550826006868154811061075957610759611574565b90600052602060002090600602016003019081610776919061144c565b50816006868154811061078b5761078b611574565b90600052602060002090600602016004018190555080600686815481106107b4576107b4611574565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a1685846040516107fa92919061150c565b60405180910390a15050505050565b6006818154811061081957600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190610858906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610884906113c3565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d919061158a565b905090565b6000600360008381526008602090815260408083206001600160a01b038816845290915290206001015460ff1660038111156109a0576109a06112ac565b149392505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a14919061152d565b610a305760405162461bcd60e51b81526004016103c99061154f565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf919061152d565b610adb5760405162461bcd60e51b81526004016103c99061154f565b428211610b1c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b6000845111610b3d5760405162461bcd60e51b81526004016103c9906113a3565b6000610b4860055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a08301889052600680546001810182556000829052845191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40860180546001600160a01b03929092166001600160a01b031990921691909117905591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610c51908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628186604051610ca092919061150c565b60405180910390a195945050505050565b6007546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f6666636861696e2076657269666965722e00000000000000000060448201526064016103c9565b4260068381548110610d1f57610d1f611574565b9060005260206000209060060201600401541115610d715760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016103c9565b4260068381548110610d8557610d85611574565b9060005260206000209060060201600501541015610dda5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016103c9565b60008281526008602090815260408083206001600160a01b0385168085529083529281902060018101805460ff1916600317905542905580518581529182019290925281517fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da929181900390910190a15050565b610e906040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60068281548110610ea357610ea3611574565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054610f0f906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3b906113c3565b8015610f885780601f10610f5d57610100808354040283529160200191610f88565b820191906000526020600020905b815481529060010190602001808311610f6b57829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b600060208284031215610fbe57600080fd5b5035919050565b6001600160a01b0381168114610fda57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261100457600080fd5b813567ffffffffffffffff8082111561101f5761101f610fdd565b604051601f8301601f19908116603f0116810190828211818310171561104757611047610fdd565b8160405283815286602085880101111561106057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561109857600080fd5b85356110a381610fc5565b945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b6110d288828901610ff3565b9598949750949560608101359550608001359392505050565b600080600080600060a0868803121561110357600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b60008060006040848603121561113d57600080fd5b83359250602084013567ffffffffffffffff8082111561115c57600080fd5b818601915086601f83011261117057600080fd5b81358181111561117f57600080fd5b87602082850101111561119157600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156111ca576020818501810151868301820152016111ae565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061121760c08301866111a4565b60808301949094525060a00152949350505050565b6000806040838503121561123f57600080fd5b823561124a81610fc5565b946020939093013593505050565b60006020828403121561126a57600080fd5b813561127581610fc5565b9392505050565b6000806040838503121561128f57600080fd5b8235915060208301356112a181610fc5565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600483106112e457634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806080858703121561130057600080fd5b84359350602085013567ffffffffffffffff81111561131e57600080fd5b61132a87828801610ff3565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261138360e08401826111a4565b9050608084015160a084015260a084015160c08401528091505092915050565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806113d757607f821691505b6020821081036113f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144757600081815260208120601f850160051c810160208610156114245750805b601f850160051c820191505b8181101561144357828155600101611430565b5050505b505050565b815167ffffffffffffffff81111561146657611466610fdd565b61147a8161147484546113c3565b846113fd565b602080601f8311600181146114af57600084156114975750858301515b600019600386901b1c1916600185901b178555611443565b600085815260208120601f198616915b828110156114de578886015182559484019460019091019084016114bf565b50858210156114fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061152560408301846111a4565b949350505050565b60006020828403121561153f57600080fd5b8151801515811461127557600080fd5b6020808252600b908201526a27b7363c9030b236b4b71760a91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159c57600080fd5b815161127581610fc556fea264697066735822122096627b396844e9458314a8b23823d5141ce1c4fd426d2d50e94b4b0c8be46c6264736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4372656174656420706c7567696e20646566696e6974696e696f6e204944202d2d2d203a2020657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220cefec9c9b386ce2e525627d9c25fd26f0a9e5714e141a0fea416cba293aa55f064736f6c63430008130033", - "sourceMap": "467:1832:116:-:0;;;1572:26:52;;;-1:-1:-1;;1572:26:52;;;1594:4;1572:26;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;;-1:-1:-1;;;;;;1133:70:114;;;;;;;612:51:116;;;;;;647:15;612:51;;;467:1832;;;;;;;;;;;;;;;;", + "object": "0x60806040526007805460ff199081166001908117909255600b805490911690911790556025805473ce2595302eeb80cf8c4ea3f3a3f713309f617e866001600160a01b031991821617909155602f805490911665e8f281b9340017905534801561006857600080fd5b50620181a8806200007a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c80636c719a021162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b80636c719a02146200017f57806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000b06565b6040516200013091906200274f565b60405180910390f35b6200014362000b6a565b604051620001309190620027f2565b6200012162000cb8565b6200012162000d1a565b6200017062000d7c565b604051620001309190620028b8565b6200010b62000e66565b6200019362001475565b6040516200013091906200296f565b620001706200154f565b6200019362001639565b620001c062001713565b604051901515815260200162000130565b6200012162001840565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b1190620018a2565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b1190620018a2565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b1190620018a2565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b1190620018a2565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b1190620018a2565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620029d5565b6001600160a01b0316146040518060600160405280602881526020016201814b60289139620018a2565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002a07565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e6572000000000000000000815250620018a2565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620029d5565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b815250620018a2565b565b62000587620018f0565b6024546040516001600160a01b0390911690620005a490620026c3565b6001600160a01b039091168152602001604051809103906000f080158015620005d1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601560448201527428bab2b9ba27b73137b0b93234b733a8363ab3b4b760591b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200066657600080fd5b505af11580156200067b573d6000803e3d6000fd5b50505050602c60009054906101000a90046001600160a01b03166001600160a01b031663ee1278426040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f99190620029d5565b602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a28bab2b9ba28363ab3b4b760a91b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200078357600080fd5b505af115801562000798573d6000803e3d6000fd5b5050602454602f546040516001600160a01b03928316945091169150620007bf90620026d1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007f3573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a2a30b9b5b9a8363ab3b4b760a91b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200087e57600080fd5b505af115801562000893573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018105833981519152915063ca669fa790602401600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba92620009479216908590600190889060040162002a2b565b6020604051808303816000875af115801562000967573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098d919062002ac8565b9050620009b46040518060600160405280602681526020016201812560269139826200244d565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620181058339815191529063ca669fa790602401600060405180830381600087803b15801562000a0957600080fd5b505af115801562000a1e573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b5050601e54602e546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff919062002ac8565b6030555050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000b6057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000b41575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000caf57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c9757838290600052602060002001805462000c039062002ae2565b80601f016020809104026020016040519081016040528092919081815260200182805462000c319062002ae2565b801562000c825780601f1062000c565761010080835404028352916020019162000c82565b820191906000526020600020905b81548152906001019060200180831162000c6457829003601f168201915b50505050508152602001906001019062000be1565b50505050815250508152602001906001019062000b8e565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e4d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000e0e5790505b5050505050815250508152602001906001019062000da0565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620181058339815191529063ca669fa790602401600060405180830381600087803b15801562000ebb57600080fd5b505af115801562000ed0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b604482015260008051602062018105833981519152925063f28dceb39150606401600060405180830381600087803b15801562000f3a57600080fd5b505af115801562000f4f573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b15801562000f9a57600080fd5b505af115801562000faf573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201810583398151915292506306447d569150602401600060405180830381600087803b1580156200100857600080fd5b505af11580156200101d573d6000803e3d6000fd5b505050506200102d606462002496565b60405163f28dceb360e01b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152600080516020620181058339815191529063f28dceb390608401600060405180830381600087803b158015620010b257600080fd5b505af1158015620010c7573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b1580156200111257600080fd5b505af115801562001127573d6000803e3d6000fd5b5050602d54600092506001600160a01b0316905063bd45a0a960016200114f42600a62002b1e565b6040516001600160e01b031960e085901b16815260048101929092526080602483015260066084830152651d5c9a50d25160d21b60a483015260448201526001606482015260c4016020604051808303816000875af1158015620011b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011dd919062002ac8565b90506200121281600014156040518060400160405280600b81526020016a195e1c1958dd1959081a5960aa1b815250620018a2565b60405163f28dceb360e01b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152600080516020620181058339815191529063f28dceb390608401600060405180830381600087803b1580156200129357600080fd5b505af1158015620012a8573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620012f357600080fd5b505af115801562001308573d6000803e3d6000fd5b5050505062001319603054620024d6565b602d546030546040516382b3501760e01b815260048101849052602481019190915260606044820152600f60648201526e7461736b5572694d6574616461746160881b60848201526001600160a01b03909116906382b350179060a401600060405180830381600087803b1580156200139157600080fd5b505af1158015620013a6573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620013f157600080fd5b505af115801562001406573d6000803e3d6000fd5b5050602d54604051630697483560e41b815260016004820152602481018590526001600160a01b039091169250636974835091506044015b600060405180830381600087803b1580156200145957600080fd5b505af11580156200146e573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000caf578382906000526020600020018054620014bb9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620014e99062002ae2565b80156200153a5780601f106200150e576101008083540402835291602001916200153a565b820191906000526020600020905b8154815290600101906020018083116200151c57829003601f168201915b50505050508152602001906001019062001499565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200162057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015e15790505b5050505050815250508152602001906001019062001573565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5783829060005260206000200180546200167f9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620016ad9062002ae2565b8015620016fe5780601f10620016d257610100808354040283529160200191620016fe565b820191906000526020600020905b815481529060010190602001808311620016e057829003601f168201915b5050505050815260200190600101906200165d565b600754600090610100900460ff1615620017365750600754610100900460ff1690565b6000600080516020620181058339815191523b156200183b576040805160008051602062018105833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620017bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b46565b60408051601f1981840301815290829052620017d99162002b79565b6000604051808303816000865af19150503d806000811462001818576040519150601f19603f3d011682016040523d82523d6000602084013e6200181d565b606091505b509150508080602001905181019062001837919062002a07565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b81620018ec577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018d9919062002b97565b60405180910390a1620018ec8262002521565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200198157600080fd5b505af115801562001996573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018105833981519152925063c657c7189150608401600060405180830381600087803b15801562001a2b57600080fd5b505af115801562001a40573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018105833981519152925063c657c7189150608401600060405180830381600087803b15801562001ad557600080fd5b505af115801562001aea573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001b8b57600080fd5b505af115801562001ba0573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201810583398151915292506306447d569150602401600060405180830381600087803b15801562001bf957600080fd5b505af115801562001c0e573d6000803e3d6000fd5b5050505060405162001c2090620026df565b604051809103906000f08015801562001c3d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001cc757600080fd5b505af115801562001cdc573d6000803e3d6000fd5b5050505060405162001cee90620026ed565b604051809103906000f08015801562001d0b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001d9457600080fd5b505af115801562001da9573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001df757600080fd5b505af115801562001e0c573d6000803e3d6000fd5b5050505060405162001e1e90620026fb565b604051809103906000f08015801562001e3b573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001ec157600080fd5b505af115801562001ed6573d6000803e3d6000fd5b5050505060405162001ee89062002709565b604051809103906000f08015801562001f05573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001f8f57600080fd5b505af115801562001fa4573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fc5915062002717565b6001600160a01b039091168152602001604051809103906000f08015801562001ff2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200208157600080fd5b505af115801562002096573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620020b7915062002725565b6001600160a01b039091168152602001604051809103906000f080158015620020e4573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200217357600080fd5b505af115801562002188573d6000803e3d6000fd5b505050506040516200219a9062002733565b604051809103906000f080158015620021b7573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b1580156200221757600080fd5b505af11580156200222c573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200225d9062002741565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022a2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200232f57600080fd5b505af115801562002344573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620023c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023e69190620029d5565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018105833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200145957600080fd5b620018ec82826040516024016200246692919062002bc8565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262002599565b6000805160206201810583398151915263e5d6bf02620024b7834262002b1e565b6040518263ffffffff1660e01b81526004016200143e91815260200190565b6200251e81604051602401620024ee91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262002599565b50565b806200251e577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200251e620025ba565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080516020620181058339815191523b15620026b2576040805160008051602062018105833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200264d929160200162002b46565b60408051601f1981840301815290829052620026699162002b79565b6000604051808303816000865af19150503d8060008114620026a8576040519150601f19603f3d011682016040523d82523d6000602084013e620026ad565b606091505b505050505b6007805461ff001916610100179055565b6138218062002bed83390190565b611a0d806200640e83390190565b6101208062007e1b83390190565b610c728062007f3b83390190565b6137238062008bad83390190565b6125a3806200c2d083390190565b6110db806200e87383390190565b613043806200f94e83390190565b6137d5806201299183390190565b611f9f806201616683390190565b6020808252825182820181905260009190848201906040850190845b81811015620027925783516001600160a01b0316835292840192918401916001016200276b565b50909695505050505050565b60005b83811015620027bb578181015183820152602001620027a1565b50506000910152565b60008151808452620027de8160208601602086016200279e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620028a857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200289157605f198985030183526200287e848651620027c4565b948e01949350918d01916001016200285f565b505050978a01979450509188019160010162002819565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200294a5783516001600160e01b0319168252928b019260019290920191908b01906200291e565b50978a01979550505091870191600101620028e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620029c857603f19888603018452620029b5858351620027c4565b9450928501929085019060010162002996565b5092979650505050505050565b600060208284031215620029e857600080fd5b81516001600160a01b038116811462002a0057600080fd5b9392505050565b60006020828403121562002a1a57600080fd5b8151801515811462002a0057600080fd5b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562002ab95783518352928401929184019160010162002a9b565b50909998505050505050505050565b60006020828403121562002adb57600080fd5b5051919050565b600181811c9082168062002af757607f821691505b60208210810362002b1857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111562002b4057634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160e01b031983168152815160009062002b6b8160048501602087016200279e565b919091016004019392505050565b6000825162002b8d8184602087016200279e565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002a006080830184620027c4565b60408152600062002bdd6040830185620027c4565b9050826020830152939250505056fe608060405234801561001057600080fd5b5060405161382138038061382183398101604081905261002f91610163565b600180546001600160a01b0319166001600160a01b0383169081178255604080516341dcea9160e01b81529051849392916341dcea919160048083019260209291908290030181865afa15801561008a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ae9190610163565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b031916331790556003555060405181906100f990610156565b6001600160a01b039091168152602001604051809103906000f080158015610125573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790556004805460ff1916905550610193565b6128b680610f6b83390190565b60006020828403121561017557600080fd5b81516001600160a01b038116811461018c57600080fd5b9392505050565b610dc9806101a26000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637fa56b831161008c578063a1308f2711610066578063a1308f27146101a4578063acec338a146101ad578063d5f39488146101c0578063ee127842146101d157600080fd5b80637fa56b831461017857806389f12ed91461018b5780638da5cb5b1461019c57600080fd5b806302a4dca0146100d457806322f3e2d4146100e95780632fe7e4411461010b57806341dcea91146101225780634f2b51c714610152578063697bd9d414610165575b600080fd5b6100e76100e2366004610b0e565b6101e2565b005b6004546100f69060ff1681565b60405190151581526020015b60405180910390f35b61011460025481565b604051908152602001610102565b60045461013a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610102565b6100f6610160366004610b3f565b610242565b60055461013a906001600160a01b031681565b6100e7610186366004610b3f565b6102bf565b6001546001600160a01b031661013a565b61013a610300565b61011460035481565b6100e76101bb366004610b79565b61037b565b6000546001600160a01b031661013a565b6005546001600160a01b031661013a565b60045461010090046001600160a01b0316331461023d5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60055460405163d4a1317560e01b81526001600160a01b03848116600483015260248201849052600092169063d4a1317590604401602060405180830381865afa158015610294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b89190610b96565b9392505050565b60405162461bcd60e51b8152602060048201526016602482015275119d5b98dd1a5bdb939bdd125b5c1b195b595b9d195960521b6044820152606401610234565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103769190610bb3565b905090565b6001546001600160a01b0316604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c90602401602060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190610b96565b61042d5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b6044820152606401610234565b600554604051630509a75b60e51b8152600160048201526000916001600160a01b03169063a134eb6090602401602060405180830381865afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190610bd0565b600554604051630509a75b60e51b8152600260048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e9190610bd0565b600554604051630509a75b60e51b8152600360048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190610bd0565b905083156107cd5760008311806105985750600082115b806105a35750600081115b6105fe5760405162461bcd60e51b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152608401610234565b60055460405163f4f4d23760e01b8152600481018590526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106709190810190610c59565b60a0015111806106f3575060055460405163f4f4d23760e01b8152600481018490526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ed9190810190610c59565b60a00151115b80610771575060055460405163f4f4d23760e01b8152600481018390526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076b9190810190610c59565b60a00151115b6107c85760405162461bcd60e51b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152608401610234565b610afa565b60055460405163f4f4d23760e01b8152600481018590526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610816573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083e9190810190610c59565b6080015115806108c0575060055460405163f4f4d23760e01b81526004810185905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610892573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ba9190810190610c59565b60800151115b6108dc5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018490526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094d9190810190610c59565b6080015115806109cf575060055460405163f4f4d23760e01b81526004810184905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156109a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c99190810190610c59565b60800151115b6109eb5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018390526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a5c9190810190610c59565b608001511580610ade575060055460405163f4f4d23760e01b81526004810183905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad89190810190610c59565b60800151115b610afa5760405162461bcd60e51b815260040161023490610d6c565b6004805460ff191685151517905550505050565b600060208284031215610b2057600080fd5b5035919050565b6001600160a01b0381168114610b3c57600080fd5b50565b60008060408385031215610b5257600080fd5b8235610b5d81610b27565b946020939093013593505050565b8015158114610b3c57600080fd5b600060208284031215610b8b57600080fd5b81356102b881610b6b565b600060208284031215610ba857600080fd5b81516102b881610b6b565b600060208284031215610bc557600080fd5b81516102b881610b27565b600060208284031215610be257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610c2257610c22610be9565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c5157610c51610be9565b604052919050565b60006020808385031215610c6c57600080fd5b825167ffffffffffffffff80821115610c8457600080fd5b9084019060c08287031215610c9857600080fd5b610ca0610bff565b8251815283830151610cb181610b6b565b81850152604083015182811115610cc757600080fd5b8301601f81018813610cd857600080fd5b805183811115610cea57610cea610be9565b610cfc601f8201601f19168701610c28565b93508084528886828401011115610d1257600080fd5b60005b81811015610d30578281018701518582018801528601610d15565b5060008682860101525050816040820152606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b6020808252600d908201526c1c5d595cdd081cdd185c9d1959609a1b60408201526060019056fea2646970667358221220b8606e92bcc4a34f85de6fd13e22b8598453d8d61d6ca5f1736149e3cfa65f8564736f6c6343000813003360806040523480156200001157600080fd5b50604051620028b6380380620028b6833981016040819052620000349162000228565b80600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c3919062000228565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b03191633179055600355506200010f600580546001019055565b600780546001600160a01b031916331790556040805160c08101825260008082526020808301828152845191820185528282529383019081526060830182905242608084015260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551919290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190910190620002009082620002ff565b50606082015181600301556080820151816004015560a08201518160050155505050620003cb565b6000602082840312156200023b57600080fd5b81516001600160a01b03811681146200025357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200028557607f821691505b602082108103620002a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fa57600081815260208120601f850160051c81016020861015620002d55750805b601f850160051c820191505b81811015620002f657828155600101620002e1565b5050505b505050565b81516001600160401b038111156200031b576200031b6200025a565b62000333816200032c845462000270565b84620002ac565b602080601f8311600181146200036b5760008415620003525750858301515b600019600386901b1c1916600185901b178555620002f6565b600085815260208120601f198616915b828110156200039c578886015182559484019460019091019084016200037b565b5085821015620003bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124db80620003db6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063bd45a0a911610097578063d401036111610071578063d40103611461038d578063d4a13175146103a0578063d5f39488146103b3578063f4f4d237146103c457600080fd5b8063bd45a0a914610354578063bda8768f14610367578063ca8836d21461037a57600080fd5b8063a1308f27116100d3578063a1308f27146102f8578063a134eb6014610301578063a4b986d814610321578063b699520f1461034157600080fd5b80638da5cb5b146102ca5780639465120b146102d257806395ecc642146102e557600080fd5b806339a5449b116101665780636974835011610140578063697483501461028b5780637fc573d21461029e57806382b35017146102a657806389f12ed9146102b957600080fd5b806339a5449b1461023557806341dcea91146102485780635bf14f2d1461027857600080fd5b806302a4dca0146101ae5780630b2c5834146101c35780630d39c1ec146101d657806322f3e2d4146101e95780632b13d6011461020b5780632fe7e4411461021e575b600080fd5b6101c16101bc366004611d6c565b6103e4565b005b6101c16101d1366004611d85565b610444565b6101c16101e4366004611e04565b610588565b6004546101f69060ff1681565b60405190151581526020015b60405180910390f35b6101f6610219366004611e3e565b610649565b61022760025481565b604051908152602001610202565b6101c1610243366004611d6c565b61068d565b6004546102609061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610202565b600754610260906001600160a01b031681565b6101c1610299366004611e78565b6107dc565b61022761098e565b6101c16102b4366004611f62565b6109aa565b6001546001600160a01b0316610260565b610260610c53565b6101c16102e0366004611fb2565b610cc9565b6101f66102f3366004611d6c565b610f1f565b61022760035481565b61022761030f366004611d6c565b600a6020526000908152604090205481565b61033461032f366004611d6c565b610fc0565b604051610202919061200a565b6101c161034f366004611d6c565b611046565b610227610362366004612059565b6111e4565b610227610375366004611e04565b611460565b6101f6610388366004611d6c565b611491565b61022761039b366004611e3e565b6114c1565b6101f66103ae366004611e3e565b61174f565b6000546001600160a01b0316610260565b6103d76103d2366004611d6c565b611781565b60405161020291906120f6565b60045461010090046001600160a01b0316331461043f5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612152565b6104cc5760405162461bcd60e51b81526004016104369061216f565b826104d681611491565b6104f25760405162461bcd60e51b815260040161043690612196565b836104fc60055490565b101561051a5760405162461bcd60e51b8152600401610436906121bc565b60005b82811015610558576105468585858481811061053b5761053b6121e6565b9050604002016118c4565b8061055081612212565b91505061051d565b506040517f9d332a24eb432cdce98c51fd6189524fd2175f1ae19f450acad59e6b83dba95190600090a150505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612152565b6106105760405162461bcd60e51b81526004016104369061216f565b8061061a81611491565b6106365760405162461bcd60e51b815260040161043690612196565b506000918252600a602052604090912055565b6000818152600b602090815260408083206001600160a01b038616845290915281205460ff1680156106845750600061068284846114c1565b115b90505b92915050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa1580156106d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fa9190612152565b801561073c575080600a600060068481548110610719576107196121e6565b906000526020600020906006020160000154815260200190815260200160002054145b61077c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191690558051858152918201929092527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a391015b60405180910390a15050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190612152565b6108645760405162461bcd60e51b81526004016104369061216f565b600061086f82611781565b90508060a001516000036108af5760405162461bcd60e51b81526020600482015260076024820152664e6f5461736b7360c81b6044820152606401610436565b428160600151610e106108c2919061222b565b82608001516108d19190612242565b10156109075760405162461bcd60e51b8152602060048201526005602482015264115b99195960da1b6044820152606401610436565b82151560208201526006805482919084908110610926576109266121e6565b60009182526020918290208351600692909202019081559082015160018201805460ff19169115159190911790556040820151600282019061096890826122de565b50606082015160038201556080820151600482015560a090910151600590910155505050565b6000600161099b60055490565b6109a5919061239e565b905090565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190612152565b610a325760405162461bcd60e51b81526004016104369061216f565b82610a3c81611491565b610a585760405162461bcd60e51b815260040161043690612196565b6004805460405163e832df9160e01b81529182018590526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906123b1565b9050600081600001516001600160a01b0316630bb75b453360068981548110610af657610af66121e6565b9060005260206000209060060201600001548760068b81548110610b1c57610b1c6121e6565b906000526020600020906006020160040154610e1060068d81548110610b4457610b446121e6565b906000526020600020906006020160030154610b60919061222b565b60068d81548110610b7357610b736121e6565b906000526020600020906006020160040154610b8f9190612242565b6040518663ffffffff1660e01b8152600401610baf9594939291906123eb565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf29190612426565b9050610c12866040518060400160405280888152602001848152506119c5565b60408051878152602081018390527f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386910160405180910390a1505050505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a5919061243f565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612152565b610d515760405162461bcd60e51b81526004016104369061216f565b83610d5b81611491565b610d775760405162461bcd60e51b815260040161043690612196565b84610d8160055490565b1015610d9f5760405162461bcd60e51b8152600401610436906121bc565b60008411610ddf5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205f726f6c6560981b6044820152606401610436565b6000835111610e1f5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964205f75726960a01b6044820152606401610436565b60008211610e6f5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964205f6475726174696f6e496e486f75727300000000000000006044820152606401610436565b8260068681548110610e8357610e836121e6565b90600052602060002090600602016002019081610ea091906122de565b508160068681548110610eb557610eb56121e6565b9060005260206000209060060201600301819055508360068681548110610ede57610ede6121e6565b600091825260208220600690910201919091556040517f496fee2e9fe0bf40e689814f88d58305e2ed8e4650401d6bd0c4f7cfc53fae039190a15050505050565b600080610e1060068481548110610f3857610f386121e6565b906000526020600020906006020160030154610f54919061222b565b60068481548110610f6757610f676121e6565b906000526020600020906006020160040154610f839190612242565b905060068381548110610f9857610f986121e6565b9060005260206000209060060201600401544210158015610fb95750804211155b9392505050565b606060086000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561103b57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ff5565b505050509050919050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190612152565b80156110f5575080600a6000600684815481106110d2576110d26121e6565b906000526020600020906006020160000154815260200190815260200160002054145b6111355760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b61113e82610f1f565b8061114d575061114d82611491565b6111895760405162461bcd60e51b815260206004820152600d60248201526c195e1c1a5c9959081c5d595cdd609a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191660011790558051858152918201929092527f8e536842b0bedb99bbe3d9b2f4d7cd3c1d89955698940f266371b4d4f5caa25791016107d0565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612152565b61126d5760405162461bcd60e51b81526004016104369061216f565b60008451116112ac5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b6044820152606401610436565b4283116112ef5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642073746172744461746560781b6044820152606401610436565b60006112fa60055490565b6040805160c081018252888152600060208201818152928201898152606083018890526080830189905260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4101906113ce90826122de565b50606082015160038201556080820151600482015560a0909101516005909101556000868152600a60205260408120549003611416576000868152600a602052604090208190555b611424600580546001019055565b6040518181527ff2376f43586d93a15b606c89747962a511dee47a8afacda035909ddd4460b1089060200160405180910390a195945050505050565b6009602052816000526040600020818154811061147c57600080fd5b90600052602060002001600091509150505481565b600042600683815481106114a7576114a76121e6565b906000526020600020906006020160040154119050919050565b60008181526008602052604081205481036114de57506000610687565b6000805b6000848152600860205260409020548110156117475760045460008581526008602052604081208054919261010090046001600160a01b03169163e832df91919085908110611533576115336121e6565b9060005260206000209060020201600001546040518263ffffffff1660e01b815260040161156391815260200190565b6040805180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906123b1565b51600086815260086020526040902080549192506001600160a01b0383169163973cdc78918991869081106115da576115da6121e6565b60009182526020909120600160029092020101546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b9190612152565b1561172857600085815260086020526040812080546001600160a01b0384169163e31c007f9186908110611691576116916121e6565b906000526020600020906002020160010154896040518363ffffffff1660e01b81526004016116d39291909182526001600160a01b0316602082015260400190565b602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612426565b905083811115611722578093505b50611734565b60009350505050610687565b508061173f81612212565b9150506114e2565b509392505050565b6000818152600a602052604081205480820361176f576000915050610687565b6117798482610649565b949350505050565b6117bc6040518060c0016040528060008152602001600015158152602001606081526020016000815260200160008152602001600081525090565b600682815481106117cf576117cf6121e6565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201805461181d90612255565b80601f016020809104026020016040519081016040528092919081815260200182805461184990612255565b80156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b60006118de836118d93685900385018561245c565b611cb0565b9050801961191d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b6044820152606401610436565b600083815260086020526040812080548390811061193d5761193d6121e6565b9060005260206000209060020201600101819055506000600860008581526020019081526020016000208281548110611978576119786121e6565b6000918252602090912060029091020155600680548490811061199d5761199d6121e6565b6000918252602082206005600690920201018054916119bb8361248e565b9190505550505050565b816119cf60055490565b10156119ed5760405162461bcd60e51b8152600401610436906121bc565b60048054825160405163e832df9160e01b8152928301526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6091906123b1565b80519091506001600160a01b0316611aab5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21038363ab3b4b760911b6044820152606401610436565b6004546000906001600160a01b03610100909104166328077c1a611ad76001546001600160a01b031690565b60208501516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612152565b9050611b5d6001546001600160a01b031690565b6001600160a01b031682600001516001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc919061243f565b6001600160a01b0316148015611bdf5750805b15611caa576000611bf08585611cb0565b90508019611ca85760008581526008602090815260408220805460018181018355918452928290208751600290940201928355908601519101556006805486908110611c3e57611c3e6121e6565b600091825260208220600560069092020101805491611c5c83612212565b91905055507f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386858560200151604051611c9f929190918252602082015260400190565b60405180910390a15b505b50505050565b6000805b600084815260086020526040902054811015611d615782516000858152600860205260409020805483908110611cec57611cec6121e6565b906000526020600020906002020160000154148015611d4357508260200151600860008681526020019081526020016000208281548110611d2f57611d2f6121e6565b906000526020600020906002020160010154145b15611d4f579050610687565b80611d5981612212565b915050611cb4565b506000199392505050565b600060208284031215611d7e57600080fd5b5035919050565b600080600060408486031215611d9a57600080fd5b83359250602084013567ffffffffffffffff80821115611db957600080fd5b818601915086601f830112611dcd57600080fd5b813581811115611ddc57600080fd5b8760208260061b8501011115611df157600080fd5b6020830194508093505050509250925092565b60008060408385031215611e1757600080fd5b50508035926020909101359150565b6001600160a01b0381168114611e3b57600080fd5b50565b60008060408385031215611e5157600080fd5b8235611e5c81611e26565b946020939093013593505050565b8015158114611e3b57600080fd5b60008060408385031215611e8b57600080fd5b8235611e5c81611e6a565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611ecf57611ecf611e96565b60405290565b600082601f830112611ee657600080fd5b813567ffffffffffffffff80821115611f0157611f01611e96565b604051601f8301601f19908116603f01168101908282118183101715611f2957611f29611e96565b81604052838152866020858801011115611f4257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611f7757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611f9c57600080fd5b611fa886828701611ed5565b9150509250925092565b60008060008060808587031215611fc857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611fed57600080fd5b611ff987828801611ed5565b949793965093946060013593505050565b602080825282518282018190526000919060409081850190868401855b8281101561204c57815180518552860151868501529284019290850190600101612027565b5091979650505050505050565b6000806000806080858703121561206f57600080fd5b84359350602085013567ffffffffffffffff81111561208d57600080fd5b61209987828801611ed5565b949794965050505060408301359260600135919050565b6000815180845260005b818110156120d6576020818501810151868301820152016120ba565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526020820151151560408201526000604083015160c0606084015261212860e08401826120b0565b905060608401516080840152608084015160a084015260a084015160c08401528091505092915050565b60006020828403121561216457600080fd5b8151610fb981611e6a565b6020808252600d908201526c2737ba1030b71030b236b4b71760991b604082015260600190565b6020808252600c908201526b4f6e6c792070656e64696e6760a01b604082015260600190565b60208082526010908201526f1a5b9d985b1a59081c5d595cdd081a5960821b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612224576122246121fc565b5060010190565b8082028115828204841417610687576106876121fc565b80820180821115610687576106876121fc565b600181811c9082168061226957607f821691505b60208210810361228957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156122d957600081815260208120601f850160051c810160208610156122b65750805b601f850160051c820191505b818110156122d5578281556001016122c2565b5050505b505050565b815167ffffffffffffffff8111156122f8576122f8611e96565b61230c816123068454612255565b8461228f565b602080601f83116001811461234157600084156123295750858301515b600019600386901b1c1916600185901b1785556122d5565b600085815260208120601f198616915b8281101561237057888601518255948401946001909101908401612351565b508582101561238e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610687576106876121fc565b6000604082840312156123c357600080fd5b6123cb611eac565b82516123d681611e26565b81526020928301519281019290925250919050565b60018060a01b038616815284602082015260a06040820152600061241260a08301866120b0565b606083019490945250608001529392505050565b60006020828403121561243857600080fd5b5051919050565b60006020828403121561245157600080fd5b8151610fb981611e26565b60006040828403121561246e57600080fd5b612476611eac565b82358152602083013560208201528091505092915050565b60008161249d5761249d6121fc565b50600019019056fea26469706673582212209b5a201ca27077b05c8bdca35109590999e0e5b81f37244b546f18f7d66b368264736f6c6343000813003360806040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000252565b81600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c391906200028a565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b031990811633178255600393909355600780548684169085161790556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a083018590526006805460018101825595819052835195027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810195865590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40820180549190971697169690961790945590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418501559151919350917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4201906200020f908262000354565b506080820151600482015560a09091015160059182015580546001019055505062000420565b80516001600160a01b03811681146200024d57600080fd5b919050565b600080604083850312156200026657600080fd5b620002718362000235565b9150620002816020840162000235565b90509250929050565b6000602082840312156200029d57600080fd5b620002a88262000235565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b03811115620003705762000370620002af565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6115dd80620004306000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063bd45a0a91161007c578063bd45a0a9146102e0578063d5f39488146102f3578063daf9113714610304578063e31c007f14610317578063eb08ab281461034d578063f4f4d2371461035757600080fd5b80638da5cb5b1461024d578063969bb3a814610255578063973cdc7814610268578063a1308f271461027b578063afb9992814610284578063b206b5691461029757600080fd5b80632fe7e441116101155780632fe7e441146101d057806341dcea91146101d95780634fd9efc4146101675780635d63f6c61461020957806389f12ed9146102175780638d9776721461022857600080fd5b806302a4dca01461015257806305261aea146101675780630bb75b451461017a57806322f3e2d4146101a05780632b086648146101bd575b600080fd5b610165610160366004610fac565b610377565b005b610165610175366004610fac565b6103d7565b61018d610188366004611080565b6103f0565b6040519081526020015b60405180910390f35b6004546101ad9060ff1681565b6040519015158152602001610197565b6101656101cb3660046110eb565b6105c9565b61018d60025481565b6004546101f19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610197565b610165610175366004611128565b6001546001600160a01b03166101f1565b61023b610236366004610fac565b610809565b604051610197969594939291906111ea565b6101f16108e7565b6007546101f1906001600160a01b031681565b6101ad61027636600461122c565b610962565b61018d60035481565b610165610292366004611258565b6109a8565b6102d36102a536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290206001015460ff1690565b60405161019791906112c2565b61018d6102ee3660046112ea565b610a52565b6000546001600160a01b03166101f1565b61016561031236600461127c565b610cb1565b61018d61032536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290205490565b60055461018d9081565b61036a610365366004610fac565b610e4e565b6040516101979190611341565b60045461010090046001600160a01b031633146103d25760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b60004282116104335760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b60008451116104545760405162461bcd60e51b81526004016103c9906113a3565b600061045f60055490565b6040805160c0810182524281526001600160a01b03808b16602083019081529282018a8152606083018a8152608084018a905260a08401899052600680546001810182556000829052855191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087018054919095166001600160a01b03199091161790935590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610568908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516105b792919061150c565b60405180910390a19695505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610635919061152d565b6106515760405162461bcd60e51b81526004016103c99061154f565b426006868154811061066557610665611574565b906000526020600020906006020160040154116106bb5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016103c9565b60008351116106dc5760405162461bcd60e51b81526004016103c9906113a3565b600554851061071c5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016103c9565b836006868154811061073057610730611574565b906000526020600020906006020160020181905550826006868154811061075957610759611574565b90600052602060002090600602016003019081610776919061144c565b50816006868154811061078b5761078b611574565b90600052602060002090600602016004018190555080600686815481106107b4576107b4611574565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a1685846040516107fa92919061150c565b60405180910390a15050505050565b6006818154811061081957600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190610858906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610884906113c3565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d919061158a565b905090565b6000600360008381526008602090815260408083206001600160a01b038816845290915290206001015460ff1660038111156109a0576109a06112ac565b149392505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a14919061152d565b610a305760405162461bcd60e51b81526004016103c99061154f565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf919061152d565b610adb5760405162461bcd60e51b81526004016103c99061154f565b428211610b1c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b6000845111610b3d5760405162461bcd60e51b81526004016103c9906113a3565b6000610b4860055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a08301889052600680546001810182556000829052845191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40860180546001600160a01b03929092166001600160a01b031990921691909117905591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610c51908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628186604051610ca092919061150c565b60405180910390a195945050505050565b6007546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f6666636861696e2076657269666965722e00000000000000000060448201526064016103c9565b4260068381548110610d1f57610d1f611574565b9060005260206000209060060201600401541115610d715760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016103c9565b4260068381548110610d8557610d85611574565b9060005260206000209060060201600501541015610dda5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016103c9565b60008281526008602090815260408083206001600160a01b0385168085529083529281902060018101805460ff1916600317905542905580518581529182019290925281517fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da929181900390910190a15050565b610e906040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60068281548110610ea357610ea3611574565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054610f0f906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3b906113c3565b8015610f885780601f10610f5d57610100808354040283529160200191610f88565b820191906000526020600020905b815481529060010190602001808311610f6b57829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b600060208284031215610fbe57600080fd5b5035919050565b6001600160a01b0381168114610fda57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261100457600080fd5b813567ffffffffffffffff8082111561101f5761101f610fdd565b604051601f8301601f19908116603f0116810190828211818310171561104757611047610fdd565b8160405283815286602085880101111561106057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561109857600080fd5b85356110a381610fc5565b945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b6110d288828901610ff3565b9598949750949560608101359550608001359392505050565b600080600080600060a0868803121561110357600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b60008060006040848603121561113d57600080fd5b83359250602084013567ffffffffffffffff8082111561115c57600080fd5b818601915086601f83011261117057600080fd5b81358181111561117f57600080fd5b87602082850101111561119157600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156111ca576020818501810151868301820152016111ae565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061121760c08301866111a4565b60808301949094525060a00152949350505050565b6000806040838503121561123f57600080fd5b823561124a81610fc5565b946020939093013593505050565b60006020828403121561126a57600080fd5b813561127581610fc5565b9392505050565b6000806040838503121561128f57600080fd5b8235915060208301356112a181610fc5565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600483106112e457634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806080858703121561130057600080fd5b84359350602085013567ffffffffffffffff81111561131e57600080fd5b61132a87828801610ff3565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261138360e08401826111a4565b9050608084015160a084015260a084015160c08401528091505092915050565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806113d757607f821691505b6020821081036113f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144757600081815260208120601f850160051c810160208610156114245750805b601f850160051c820191505b8181101561144357828155600101611430565b5050505b505050565b815167ffffffffffffffff81111561146657611466610fdd565b61147a8161147484546113c3565b846113fd565b602080601f8311600181146114af57600084156114975750858301515b600019600386901b1c1916600185901b178555611443565b600085815260208120601f198616915b828110156114de578886015182559484019460019091019084016114bf565b50858210156114fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061152560408301846111a4565b949350505050565b60006020828403121561153f57600080fd5b8151801515811461127557600080fd5b6020808252600b908201526a27b7363c9030b236b4b71760a91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159c57600080fd5b815161127581610fc556fea264697066735822122096627b396844e9458314a8b23823d5141ce1c4fd426d2d50e94b4b0c8be46c6264736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4372656174656420706c7567696e20646566696e6974696e696f6e204944202d2d2d203a2020657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220b7ea2eefe9c91f30c37b1972f158bb7ca5df8ce79d9a361b3b0f368d44838b0b64736f6c63430008130033", + "sourceMap": "467:1832:129:-:0;;;1572:26:65;;;-1:-1:-1;;1572:26:65;;;1594:4;1572:26;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;;-1:-1:-1;;;;;;1133:70:127;;;;;;;612:51:129;;;;;;647:15;612:51;;;467:1832;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c80636c719a021162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b80636c719a02146200017f57806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000b06565b6040516200013091906200274f565b60405180910390f35b6200014362000b6a565b604051620001309190620027f2565b6200012162000cb8565b6200012162000d1a565b6200017062000d7c565b604051620001309190620028b8565b6200010b62000e66565b6200019362001475565b6040516200013091906200296f565b620001706200154f565b6200019362001639565b620001c062001713565b604051901515815260200162000130565b6200012162001840565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b1190620018a2565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b1190620018a2565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b1190620018a2565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b1190620018a2565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b1190620018a2565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620029d5565b6001600160a01b03161460405180606001604052806028815260200162017f6a60289139620018a2565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002a07565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e6572000000000000000000815250620018a2565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620029d5565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b815250620018a2565b565b62000587620018f0565b6024546040516001600160a01b0390911690620005a490620026c3565b6001600160a01b039091168152602001604051809103906000f080158015620005d1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601560448201527428bab2b9ba27b73137b0b93234b733a8363ab3b4b760591b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200066657600080fd5b505af11580156200067b573d6000803e3d6000fd5b50505050602c60009054906101000a90046001600160a01b03166001600160a01b031663ee1278426040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f99190620029d5565b602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a28bab2b9ba28363ab3b4b760a91b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200078357600080fd5b505af115801562000798573d6000803e3d6000fd5b5050602454602f546040516001600160a01b03928316945091169150620007bf90620026d1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007f3573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a2a30b9b5b9a8363ab3b4b760a91b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200087e57600080fd5b505af115801562000893573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062017f24833981519152915063ca669fa790602401600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba92620009479216908590600190889060040162002a2b565b6020604051808303816000875af115801562000967573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098d919062002ac8565b9050620009b460405180606001604052806026815260200162017f4460269139826200244d565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062017f248339815191529063ca669fa790602401600060405180830381600087803b15801562000a0957600080fd5b505af115801562000a1e573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b5050601e54602e546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff919062002ac8565b6030555050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000b6057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000b41575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000caf57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c9757838290600052602060002001805462000c039062002ae2565b80601f016020809104026020016040519081016040528092919081815260200182805462000c319062002ae2565b801562000c825780601f1062000c565761010080835404028352916020019162000c82565b820191906000526020600020905b81548152906001019060200180831162000c6457829003601f168201915b50505050508152602001906001019062000be1565b50505050815250508152602001906001019062000b8e565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e4d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000e0e5790505b5050505050815250508152602001906001019062000da0565b60265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062017f248339815191529063ca669fa790602401600060405180830381600087803b15801562000ebb57600080fd5b505af115801562000ed0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b604482015260008051602062017f24833981519152925063f28dceb39150606401600060405180830381600087803b15801562000f3a57600080fd5b505af115801562000f4f573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b15801562000f9a57600080fd5b505af115801562000faf573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062017f2483398151915292506306447d569150602401600060405180830381600087803b1580156200100857600080fd5b505af11580156200101d573d6000803e3d6000fd5b505050506200102d606462002496565b60405163f28dceb360e01b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b606482015260008051602062017f248339815191529063f28dceb390608401600060405180830381600087803b158015620010b257600080fd5b505af1158015620010c7573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b1580156200111257600080fd5b505af115801562001127573d6000803e3d6000fd5b5050602d54600092506001600160a01b0316905063bd45a0a960016200114f42600a62002b1e565b6040516001600160e01b031960e085901b16815260048101929092526080602483015260066084830152651d5c9a50d25160d21b60a483015260448201526001606482015260c4016020604051808303816000875af1158015620011b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011dd919062002ac8565b90506200121281600014156040518060400160405280600b81526020016a195e1c1958dd1959081a5960aa1b815250620018a2565b60405163f28dceb360e01b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b606482015260008051602062017f248339815191529063f28dceb390608401600060405180830381600087803b1580156200129357600080fd5b505af1158015620012a8573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620012f357600080fd5b505af115801562001308573d6000803e3d6000fd5b5050505062001319603054620024d6565b602d546030546040516382b3501760e01b815260048101849052602481019190915260606044820152600f60648201526e7461736b5572694d6574616461746160881b60848201526001600160a01b03909116906382b350179060a401600060405180830381600087803b1580156200139157600080fd5b505af1158015620013a6573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620013f157600080fd5b505af115801562001406573d6000803e3d6000fd5b5050602d54604051630697483560e41b815260016004820152602481018590526001600160a01b039091169250636974835091506044015b600060405180830381600087803b1580156200145957600080fd5b505af11580156200146e573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000caf578382906000526020600020018054620014bb9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620014e99062002ae2565b80156200153a5780601f106200150e576101008083540402835291602001916200153a565b820191906000526020600020905b8154815290600101906020018083116200151c57829003601f168201915b50505050508152602001906001019062001499565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200162057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015e15790505b5050505050815250508152602001906001019062001573565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5783829060005260206000200180546200167f9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620016ad9062002ae2565b8015620016fe5780601f10620016d257610100808354040283529160200191620016fe565b820191906000526020600020905b815481529060010190602001808311620016e057829003601f168201915b5050505050815260200190600101906200165d565b600754600090610100900460ff1615620017365750600754610100900460ff1690565b600060008051602062017f248339815191523b156200183b576040805160008051602062017f24833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620017bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b46565b60408051601f1981840301815290829052620017d99162002b79565b6000604051808303816000865af19150503d806000811462001818576040519150601f19603f3d011682016040523d82523d6000602084013e6200181d565b606091505b509150508080602001905181019062001837919062002a07565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b81620018ec577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018d9919062002b97565b60405180910390a1620018ec8262002521565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200198157600080fd5b505af115801562001996573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062017f24833981519152925063c657c7189150608401600060405180830381600087803b15801562001a2b57600080fd5b505af115801562001a40573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062017f24833981519152925063c657c7189150608401600060405180830381600087803b15801562001ad557600080fd5b505af115801562001aea573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001b8b57600080fd5b505af115801562001ba0573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062017f2483398151915292506306447d569150602401600060405180830381600087803b15801562001bf957600080fd5b505af115801562001c0e573d6000803e3d6000fd5b5050505060405162001c2090620026df565b604051809103906000f08015801562001c3d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001cc757600080fd5b505af115801562001cdc573d6000803e3d6000fd5b5050505060405162001cee90620026ed565b604051809103906000f08015801562001d0b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001d9457600080fd5b505af115801562001da9573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001df757600080fd5b505af115801562001e0c573d6000803e3d6000fd5b5050505060405162001e1e90620026fb565b604051809103906000f08015801562001e3b573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001ec157600080fd5b505af115801562001ed6573d6000803e3d6000fd5b5050505060405162001ee89062002709565b604051809103906000f08015801562001f05573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b15801562001f8f57600080fd5b505af115801562001fa4573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fc5915062002717565b6001600160a01b039091168152602001604051809103906000f08015801562001ff2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200208157600080fd5b505af115801562002096573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620020b7915062002725565b6001600160a01b039091168152602001604051809103906000f080158015620020e4573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200217357600080fd5b505af115801562002188573d6000803e3d6000fd5b505050506040516200219a9062002733565b604051809103906000f080158015620021b7573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b1580156200221757600080fd5b505af11580156200222c573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200225d9062002741565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022a2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062017f248339815191529063c657c71890608401600060405180830381600087803b1580156200232f57600080fd5b505af115801562002344573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620023c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023e69190620029d5565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062017f24833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200145957600080fd5b620018ec82826040516024016200246692919062002bc8565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262002599565b60008051602062017f2483398151915263e5d6bf02620024b7834262002b1e565b6040518263ffffffff1660e01b81526004016200143e91815260200190565b6200251e81604051602401620024ee91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262002599565b50565b806200251e577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200251e620025ba565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062017f248339815191523b15620026b2576040805160008051602062017f24833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200264d929160200162002b46565b60408051601f1981840301815290829052620026699162002b79565b6000604051808303816000865af19150503d8060008114620026a8576040519150601f19603f3d011682016040523d82523d6000602084013e620026ad565b606091505b505050505b6007805461ff001916610100179055565b6138218062002bed83390190565b611a0d806200640e83390190565b6101208062007e1b83390190565b610c728062007f3b83390190565b6137238062008bad83390190565b6123c2806200c2d083390190565b6110db806200e69283390190565b613043806200f76d83390190565b6137d580620127b083390190565b611f9f8062015f8583390190565b6020808252825182820181905260009190848201906040850190845b81811015620027925783516001600160a01b0316835292840192918401916001016200276b565b50909695505050505050565b60005b83811015620027bb578181015183820152602001620027a1565b50506000910152565b60008151808452620027de8160208601602086016200279e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620028a857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200289157605f198985030183526200287e848651620027c4565b948e01949350918d01916001016200285f565b505050978a01979450509188019160010162002819565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200294a5783516001600160e01b0319168252928b019260019290920191908b01906200291e565b50978a01979550505091870191600101620028e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620029c857603f19888603018452620029b5858351620027c4565b9450928501929085019060010162002996565b5092979650505050505050565b600060208284031215620029e857600080fd5b81516001600160a01b038116811462002a0057600080fd5b9392505050565b60006020828403121562002a1a57600080fd5b8151801515811462002a0057600080fd5b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562002ab95783518352928401929184019160010162002a9b565b50909998505050505050505050565b60006020828403121562002adb57600080fd5b5051919050565b600181811c9082168062002af757607f821691505b60208210810362002b1857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111562002b4057634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160e01b031983168152815160009062002b6b8160048501602087016200279e565b919091016004019392505050565b6000825162002b8d8184602087016200279e565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002a006080830184620027c4565b60408152600062002bdd6040830185620027c4565b9050826020830152939250505056fe608060405234801561001057600080fd5b5060405161382138038061382183398101604081905261002f91610163565b600180546001600160a01b0319166001600160a01b0383169081178255604080516341dcea9160e01b81529051849392916341dcea919160048083019260209291908290030181865afa15801561008a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ae9190610163565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b031916331790556003555060405181906100f990610156565b6001600160a01b039091168152602001604051809103906000f080158015610125573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790556004805460ff1916905550610193565b6128b680610f6b83390190565b60006020828403121561017557600080fd5b81516001600160a01b038116811461018c57600080fd5b9392505050565b610dc9806101a26000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637fa56b831161008c578063a1308f2711610066578063a1308f27146101a4578063acec338a146101ad578063d5f39488146101c0578063ee127842146101d157600080fd5b80637fa56b831461017857806389f12ed91461018b5780638da5cb5b1461019c57600080fd5b806302a4dca0146100d457806322f3e2d4146100e95780632fe7e4411461010b57806341dcea91146101225780634f2b51c714610152578063697bd9d414610165575b600080fd5b6100e76100e2366004610b0e565b6101e2565b005b6004546100f69060ff1681565b60405190151581526020015b60405180910390f35b61011460025481565b604051908152602001610102565b60045461013a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610102565b6100f6610160366004610b3f565b610242565b60055461013a906001600160a01b031681565b6100e7610186366004610b3f565b6102bf565b6001546001600160a01b031661013a565b61013a610300565b61011460035481565b6100e76101bb366004610b79565b61037b565b6000546001600160a01b031661013a565b6005546001600160a01b031661013a565b60045461010090046001600160a01b0316331461023d5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60055460405163d4a1317560e01b81526001600160a01b03848116600483015260248201849052600092169063d4a1317590604401602060405180830381865afa158015610294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b89190610b96565b9392505050565b60405162461bcd60e51b8152602060048201526016602482015275119d5b98dd1a5bdb939bdd125b5c1b195b595b9d195960521b6044820152606401610234565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103769190610bb3565b905090565b6001546001600160a01b0316604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c90602401602060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190610b96565b61042d5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b6044820152606401610234565b600554604051630509a75b60e51b8152600160048201526000916001600160a01b03169063a134eb6090602401602060405180830381865afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190610bd0565b600554604051630509a75b60e51b8152600260048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e9190610bd0565b600554604051630509a75b60e51b8152600360048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190610bd0565b905083156107cd5760008311806105985750600082115b806105a35750600081115b6105fe5760405162461bcd60e51b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152608401610234565b60055460405163f4f4d23760e01b8152600481018590526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106709190810190610c59565b60a0015111806106f3575060055460405163f4f4d23760e01b8152600481018490526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ed9190810190610c59565b60a00151115b80610771575060055460405163f4f4d23760e01b8152600481018390526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076b9190810190610c59565b60a00151115b6107c85760405162461bcd60e51b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152608401610234565b610afa565b60055460405163f4f4d23760e01b8152600481018590526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610816573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083e9190810190610c59565b6080015115806108c0575060055460405163f4f4d23760e01b81526004810185905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610892573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ba9190810190610c59565b60800151115b6108dc5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018490526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094d9190810190610c59565b6080015115806109cf575060055460405163f4f4d23760e01b81526004810184905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156109a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c99190810190610c59565b60800151115b6109eb5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018390526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a5c9190810190610c59565b608001511580610ade575060055460405163f4f4d23760e01b81526004810183905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad89190810190610c59565b60800151115b610afa5760405162461bcd60e51b815260040161023490610d6c565b6004805460ff191685151517905550505050565b600060208284031215610b2057600080fd5b5035919050565b6001600160a01b0381168114610b3c57600080fd5b50565b60008060408385031215610b5257600080fd5b8235610b5d81610b27565b946020939093013593505050565b8015158114610b3c57600080fd5b600060208284031215610b8b57600080fd5b81356102b881610b6b565b600060208284031215610ba857600080fd5b81516102b881610b6b565b600060208284031215610bc557600080fd5b81516102b881610b27565b600060208284031215610be257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610c2257610c22610be9565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c5157610c51610be9565b604052919050565b60006020808385031215610c6c57600080fd5b825167ffffffffffffffff80821115610c8457600080fd5b9084019060c08287031215610c9857600080fd5b610ca0610bff565b8251815283830151610cb181610b6b565b81850152604083015182811115610cc757600080fd5b8301601f81018813610cd857600080fd5b805183811115610cea57610cea610be9565b610cfc601f8201601f19168701610c28565b93508084528886828401011115610d1257600080fd5b60005b81811015610d30578281018701518582018801528601610d15565b5060008682860101525050816040820152606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b6020808252600d908201526c1c5d595cdd081cdd185c9d1959609a1b60408201526060019056fea2646970667358221220b8606e92bcc4a34f85de6fd13e22b8598453d8d61d6ca5f1736149e3cfa65f8564736f6c6343000813003360806040523480156200001157600080fd5b50604051620028b6380380620028b6833981016040819052620000349162000228565b80600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c3919062000228565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b03191633179055600355506200010f600580546001019055565b600780546001600160a01b031916331790556040805160c08101825260008082526020808301828152845191820185528282529383019081526060830182905242608084015260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551919290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190910190620002009082620002ff565b50606082015181600301556080820151816004015560a08201518160050155505050620003cb565b6000602082840312156200023b57600080fd5b81516001600160a01b03811681146200025357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200028557607f821691505b602082108103620002a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fa57600081815260208120601f850160051c81016020861015620002d55750805b601f850160051c820191505b81811015620002f657828155600101620002e1565b5050505b505050565b81516001600160401b038111156200031b576200031b6200025a565b62000333816200032c845462000270565b84620002ac565b602080601f8311600181146200036b5760008415620003525750858301515b600019600386901b1c1916600185901b178555620002f6565b600085815260208120601f198616915b828110156200039c578886015182559484019460019091019084016200037b565b5085821015620003bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124db80620003db6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063bd45a0a911610097578063d401036111610071578063d40103611461038d578063d4a13175146103a0578063d5f39488146103b3578063f4f4d237146103c457600080fd5b8063bd45a0a914610354578063bda8768f14610367578063ca8836d21461037a57600080fd5b8063a1308f27116100d3578063a1308f27146102f8578063a134eb6014610301578063a4b986d814610321578063b699520f1461034157600080fd5b80638da5cb5b146102ca5780639465120b146102d257806395ecc642146102e557600080fd5b806339a5449b116101665780636974835011610140578063697483501461028b5780637fc573d21461029e57806382b35017146102a657806389f12ed9146102b957600080fd5b806339a5449b1461023557806341dcea91146102485780635bf14f2d1461027857600080fd5b806302a4dca0146101ae5780630b2c5834146101c35780630d39c1ec146101d657806322f3e2d4146101e95780632b13d6011461020b5780632fe7e4411461021e575b600080fd5b6101c16101bc366004611d6c565b6103e4565b005b6101c16101d1366004611d85565b610444565b6101c16101e4366004611e04565b610588565b6004546101f69060ff1681565b60405190151581526020015b60405180910390f35b6101f6610219366004611e3e565b610649565b61022760025481565b604051908152602001610202565b6101c1610243366004611d6c565b61068d565b6004546102609061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610202565b600754610260906001600160a01b031681565b6101c1610299366004611e78565b6107dc565b61022761098e565b6101c16102b4366004611f62565b6109aa565b6001546001600160a01b0316610260565b610260610c53565b6101c16102e0366004611fb2565b610cc9565b6101f66102f3366004611d6c565b610f1f565b61022760035481565b61022761030f366004611d6c565b600a6020526000908152604090205481565b61033461032f366004611d6c565b610fc0565b604051610202919061200a565b6101c161034f366004611d6c565b611046565b610227610362366004612059565b6111e4565b610227610375366004611e04565b611460565b6101f6610388366004611d6c565b611491565b61022761039b366004611e3e565b6114c1565b6101f66103ae366004611e3e565b61174f565b6000546001600160a01b0316610260565b6103d76103d2366004611d6c565b611781565b60405161020291906120f6565b60045461010090046001600160a01b0316331461043f5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612152565b6104cc5760405162461bcd60e51b81526004016104369061216f565b826104d681611491565b6104f25760405162461bcd60e51b815260040161043690612196565b836104fc60055490565b101561051a5760405162461bcd60e51b8152600401610436906121bc565b60005b82811015610558576105468585858481811061053b5761053b6121e6565b9050604002016118c4565b8061055081612212565b91505061051d565b506040517f9d332a24eb432cdce98c51fd6189524fd2175f1ae19f450acad59e6b83dba95190600090a150505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612152565b6106105760405162461bcd60e51b81526004016104369061216f565b8061061a81611491565b6106365760405162461bcd60e51b815260040161043690612196565b506000918252600a602052604090912055565b6000818152600b602090815260408083206001600160a01b038616845290915281205460ff1680156106845750600061068284846114c1565b115b90505b92915050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa1580156106d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fa9190612152565b801561073c575080600a600060068481548110610719576107196121e6565b906000526020600020906006020160000154815260200190815260200160002054145b61077c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191690558051858152918201929092527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a391015b60405180910390a15050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190612152565b6108645760405162461bcd60e51b81526004016104369061216f565b600061086f82611781565b90508060a001516000036108af5760405162461bcd60e51b81526020600482015260076024820152664e6f5461736b7360c81b6044820152606401610436565b428160600151610e106108c2919061222b565b82608001516108d19190612242565b10156109075760405162461bcd60e51b8152602060048201526005602482015264115b99195960da1b6044820152606401610436565b82151560208201526006805482919084908110610926576109266121e6565b60009182526020918290208351600692909202019081559082015160018201805460ff19169115159190911790556040820151600282019061096890826122de565b50606082015160038201556080820151600482015560a090910151600590910155505050565b6000600161099b60055490565b6109a5919061239e565b905090565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190612152565b610a325760405162461bcd60e51b81526004016104369061216f565b82610a3c81611491565b610a585760405162461bcd60e51b815260040161043690612196565b6004805460405163e832df9160e01b81529182018590526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906123b1565b9050600081600001516001600160a01b0316630bb75b453360068981548110610af657610af66121e6565b9060005260206000209060060201600001548760068b81548110610b1c57610b1c6121e6565b906000526020600020906006020160040154610e1060068d81548110610b4457610b446121e6565b906000526020600020906006020160030154610b60919061222b565b60068d81548110610b7357610b736121e6565b906000526020600020906006020160040154610b8f9190612242565b6040518663ffffffff1660e01b8152600401610baf9594939291906123eb565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf29190612426565b9050610c12866040518060400160405280888152602001848152506119c5565b60408051878152602081018390527f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386910160405180910390a1505050505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a5919061243f565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612152565b610d515760405162461bcd60e51b81526004016104369061216f565b83610d5b81611491565b610d775760405162461bcd60e51b815260040161043690612196565b84610d8160055490565b1015610d9f5760405162461bcd60e51b8152600401610436906121bc565b60008411610ddf5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205f726f6c6560981b6044820152606401610436565b6000835111610e1f5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964205f75726960a01b6044820152606401610436565b60008211610e6f5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964205f6475726174696f6e496e486f75727300000000000000006044820152606401610436565b8260068681548110610e8357610e836121e6565b90600052602060002090600602016002019081610ea091906122de565b508160068681548110610eb557610eb56121e6565b9060005260206000209060060201600301819055508360068681548110610ede57610ede6121e6565b600091825260208220600690910201919091556040517f496fee2e9fe0bf40e689814f88d58305e2ed8e4650401d6bd0c4f7cfc53fae039190a15050505050565b600080610e1060068481548110610f3857610f386121e6565b906000526020600020906006020160030154610f54919061222b565b60068481548110610f6757610f676121e6565b906000526020600020906006020160040154610f839190612242565b905060068381548110610f9857610f986121e6565b9060005260206000209060060201600401544210158015610fb95750804211155b9392505050565b606060086000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561103b57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ff5565b505050509050919050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190612152565b80156110f5575080600a6000600684815481106110d2576110d26121e6565b906000526020600020906006020160000154815260200190815260200160002054145b6111355760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b61113e82610f1f565b8061114d575061114d82611491565b6111895760405162461bcd60e51b815260206004820152600d60248201526c195e1c1a5c9959081c5d595cdd609a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191660011790558051858152918201929092527f8e536842b0bedb99bbe3d9b2f4d7cd3c1d89955698940f266371b4d4f5caa25791016107d0565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612152565b61126d5760405162461bcd60e51b81526004016104369061216f565b60008451116112ac5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b6044820152606401610436565b4283116112ef5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642073746172744461746560781b6044820152606401610436565b60006112fa60055490565b6040805160c081018252888152600060208201818152928201898152606083018890526080830189905260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4101906113ce90826122de565b50606082015160038201556080820151600482015560a0909101516005909101556000868152600a60205260408120549003611416576000868152600a602052604090208190555b611424600580546001019055565b6040518181527ff2376f43586d93a15b606c89747962a511dee47a8afacda035909ddd4460b1089060200160405180910390a195945050505050565b6009602052816000526040600020818154811061147c57600080fd5b90600052602060002001600091509150505481565b600042600683815481106114a7576114a76121e6565b906000526020600020906006020160040154119050919050565b60008181526008602052604081205481036114de57506000610687565b6000805b6000848152600860205260409020548110156117475760045460008581526008602052604081208054919261010090046001600160a01b03169163e832df91919085908110611533576115336121e6565b9060005260206000209060020201600001546040518263ffffffff1660e01b815260040161156391815260200190565b6040805180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906123b1565b51600086815260086020526040902080549192506001600160a01b0383169163973cdc78918991869081106115da576115da6121e6565b60009182526020909120600160029092020101546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b9190612152565b1561172857600085815260086020526040812080546001600160a01b0384169163e31c007f9186908110611691576116916121e6565b906000526020600020906002020160010154896040518363ffffffff1660e01b81526004016116d39291909182526001600160a01b0316602082015260400190565b602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612426565b905083811115611722578093505b50611734565b60009350505050610687565b508061173f81612212565b9150506114e2565b509392505050565b6000818152600a602052604081205480820361176f576000915050610687565b6117798482610649565b949350505050565b6117bc6040518060c0016040528060008152602001600015158152602001606081526020016000815260200160008152602001600081525090565b600682815481106117cf576117cf6121e6565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201805461181d90612255565b80601f016020809104026020016040519081016040528092919081815260200182805461184990612255565b80156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b60006118de836118d93685900385018561245c565b611cb0565b9050801961191d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b6044820152606401610436565b600083815260086020526040812080548390811061193d5761193d6121e6565b9060005260206000209060020201600101819055506000600860008581526020019081526020016000208281548110611978576119786121e6565b6000918252602090912060029091020155600680548490811061199d5761199d6121e6565b6000918252602082206005600690920201018054916119bb8361248e565b9190505550505050565b816119cf60055490565b10156119ed5760405162461bcd60e51b8152600401610436906121bc565b60048054825160405163e832df9160e01b8152928301526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6091906123b1565b80519091506001600160a01b0316611aab5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21038363ab3b4b760911b6044820152606401610436565b6004546000906001600160a01b03610100909104166328077c1a611ad76001546001600160a01b031690565b60208501516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612152565b9050611b5d6001546001600160a01b031690565b6001600160a01b031682600001516001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc919061243f565b6001600160a01b0316148015611bdf5750805b15611caa576000611bf08585611cb0565b90508019611ca85760008581526008602090815260408220805460018181018355918452928290208751600290940201928355908601519101556006805486908110611c3e57611c3e6121e6565b600091825260208220600560069092020101805491611c5c83612212565b91905055507f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386858560200151604051611c9f929190918252602082015260400190565b60405180910390a15b505b50505050565b6000805b600084815260086020526040902054811015611d615782516000858152600860205260409020805483908110611cec57611cec6121e6565b906000526020600020906002020160000154148015611d4357508260200151600860008681526020019081526020016000208281548110611d2f57611d2f6121e6565b906000526020600020906002020160010154145b15611d4f579050610687565b80611d5981612212565b915050611cb4565b506000199392505050565b600060208284031215611d7e57600080fd5b5035919050565b600080600060408486031215611d9a57600080fd5b83359250602084013567ffffffffffffffff80821115611db957600080fd5b818601915086601f830112611dcd57600080fd5b813581811115611ddc57600080fd5b8760208260061b8501011115611df157600080fd5b6020830194508093505050509250925092565b60008060408385031215611e1757600080fd5b50508035926020909101359150565b6001600160a01b0381168114611e3b57600080fd5b50565b60008060408385031215611e5157600080fd5b8235611e5c81611e26565b946020939093013593505050565b8015158114611e3b57600080fd5b60008060408385031215611e8b57600080fd5b8235611e5c81611e6a565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611ecf57611ecf611e96565b60405290565b600082601f830112611ee657600080fd5b813567ffffffffffffffff80821115611f0157611f01611e96565b604051601f8301601f19908116603f01168101908282118183101715611f2957611f29611e96565b81604052838152866020858801011115611f4257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611f7757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611f9c57600080fd5b611fa886828701611ed5565b9150509250925092565b60008060008060808587031215611fc857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611fed57600080fd5b611ff987828801611ed5565b949793965093946060013593505050565b602080825282518282018190526000919060409081850190868401855b8281101561204c57815180518552860151868501529284019290850190600101612027565b5091979650505050505050565b6000806000806080858703121561206f57600080fd5b84359350602085013567ffffffffffffffff81111561208d57600080fd5b61209987828801611ed5565b949794965050505060408301359260600135919050565b6000815180845260005b818110156120d6576020818501810151868301820152016120ba565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526020820151151560408201526000604083015160c0606084015261212860e08401826120b0565b905060608401516080840152608084015160a084015260a084015160c08401528091505092915050565b60006020828403121561216457600080fd5b8151610fb981611e6a565b6020808252600d908201526c2737ba1030b71030b236b4b71760991b604082015260600190565b6020808252600c908201526b4f6e6c792070656e64696e6760a01b604082015260600190565b60208082526010908201526f1a5b9d985b1a59081c5d595cdd081a5960821b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612224576122246121fc565b5060010190565b8082028115828204841417610687576106876121fc565b80820180821115610687576106876121fc565b600181811c9082168061226957607f821691505b60208210810361228957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156122d957600081815260208120601f850160051c810160208610156122b65750805b601f850160051c820191505b818110156122d5578281556001016122c2565b5050505b505050565b815167ffffffffffffffff8111156122f8576122f8611e96565b61230c816123068454612255565b8461228f565b602080601f83116001811461234157600084156123295750858301515b600019600386901b1c1916600185901b1785556122d5565b600085815260208120601f198616915b8281101561237057888601518255948401946001909101908401612351565b508582101561238e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610687576106876121fc565b6000604082840312156123c357600080fd5b6123cb611eac565b82516123d681611e26565b81526020928301519281019290925250919050565b60018060a01b038616815284602082015260a06040820152600061241260a08301866120b0565b606083019490945250608001529392505050565b60006020828403121561243857600080fd5b5051919050565b60006020828403121561245157600080fd5b8151610fb981611e26565b60006040828403121561246e57600080fd5b612476611eac565b82358152602083013560208201528091505092915050565b60008161249d5761249d6121fc565b50600019019056fea26469706673582212209b5a201ca27077b05c8bdca35109590999e0e5b81f37244b546f18f7d66b368264736f6c6343000813003360806040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000252565b81600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c391906200028a565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b031990811633178255600393909355600780548684169085161790556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a083018590526006805460018101825595819052835195027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810195865590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40820180549190971697169690961790945590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418501559151919350917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4201906200020f908262000354565b506080820151600482015560a09091015160059182015580546001019055505062000420565b80516001600160a01b03811681146200024d57600080fd5b919050565b600080604083850312156200026657600080fd5b620002718362000235565b9150620002816020840162000235565b90509250929050565b6000602082840312156200029d57600080fd5b620002a88262000235565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b03811115620003705762000370620002af565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6115dd80620004306000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063bd45a0a91161007c578063bd45a0a9146102e0578063d5f39488146102f3578063daf9113714610304578063e31c007f14610317578063eb08ab281461034d578063f4f4d2371461035757600080fd5b80638da5cb5b1461024d578063969bb3a814610255578063973cdc7814610268578063a1308f271461027b578063afb9992814610284578063b206b5691461029757600080fd5b80632fe7e441116101155780632fe7e441146101d057806341dcea91146101d95780634fd9efc4146101675780635d63f6c61461020957806389f12ed9146102175780638d9776721461022857600080fd5b806302a4dca01461015257806305261aea146101675780630bb75b451461017a57806322f3e2d4146101a05780632b086648146101bd575b600080fd5b610165610160366004610fac565b610377565b005b610165610175366004610fac565b6103d7565b61018d610188366004611080565b6103f0565b6040519081526020015b60405180910390f35b6004546101ad9060ff1681565b6040519015158152602001610197565b6101656101cb3660046110eb565b6105c9565b61018d60025481565b6004546101f19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610197565b610165610175366004611128565b6001546001600160a01b03166101f1565b61023b610236366004610fac565b610809565b604051610197969594939291906111ea565b6101f16108e7565b6007546101f1906001600160a01b031681565b6101ad61027636600461122c565b610962565b61018d60035481565b610165610292366004611258565b6109a8565b6102d36102a536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290206001015460ff1690565b60405161019791906112c2565b61018d6102ee3660046112ea565b610a52565b6000546001600160a01b03166101f1565b61016561031236600461127c565b610cb1565b61018d61032536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290205490565b60055461018d9081565b61036a610365366004610fac565b610e4e565b6040516101979190611341565b60045461010090046001600160a01b031633146103d25760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b60004282116104335760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b60008451116104545760405162461bcd60e51b81526004016103c9906113a3565b600061045f60055490565b6040805160c0810182524281526001600160a01b03808b16602083019081529282018a8152606083018a8152608084018a905260a08401899052600680546001810182556000829052855191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087018054919095166001600160a01b03199091161790935590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610568908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516105b792919061150c565b60405180910390a19695505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610635919061152d565b6106515760405162461bcd60e51b81526004016103c99061154f565b426006868154811061066557610665611574565b906000526020600020906006020160040154116106bb5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016103c9565b60008351116106dc5760405162461bcd60e51b81526004016103c9906113a3565b600554851061071c5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016103c9565b836006868154811061073057610730611574565b906000526020600020906006020160020181905550826006868154811061075957610759611574565b90600052602060002090600602016003019081610776919061144c565b50816006868154811061078b5761078b611574565b90600052602060002090600602016004018190555080600686815481106107b4576107b4611574565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a1685846040516107fa92919061150c565b60405180910390a15050505050565b6006818154811061081957600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190610858906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610884906113c3565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d919061158a565b905090565b6000600360008381526008602090815260408083206001600160a01b038816845290915290206001015460ff1660038111156109a0576109a06112ac565b149392505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a14919061152d565b610a305760405162461bcd60e51b81526004016103c99061154f565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf919061152d565b610adb5760405162461bcd60e51b81526004016103c99061154f565b428211610b1c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b6000845111610b3d5760405162461bcd60e51b81526004016103c9906113a3565b6000610b4860055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a08301889052600680546001810182556000829052845191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40860180546001600160a01b03929092166001600160a01b031990921691909117905591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610c51908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628186604051610ca092919061150c565b60405180910390a195945050505050565b6007546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f6666636861696e2076657269666965722e00000000000000000060448201526064016103c9565b4260068381548110610d1f57610d1f611574565b9060005260206000209060060201600401541115610d715760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016103c9565b4260068381548110610d8557610d85611574565b9060005260206000209060060201600501541015610dda5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016103c9565b60008281526008602090815260408083206001600160a01b0385168085529083529281902060018101805460ff1916600317905542905580518581529182019290925281517fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da929181900390910190a15050565b610e906040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60068281548110610ea357610ea3611574565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054610f0f906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3b906113c3565b8015610f885780601f10610f5d57610100808354040283529160200191610f88565b820191906000526020600020905b815481529060010190602001808311610f6b57829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b600060208284031215610fbe57600080fd5b5035919050565b6001600160a01b0381168114610fda57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261100457600080fd5b813567ffffffffffffffff8082111561101f5761101f610fdd565b604051601f8301601f19908116603f0116810190828211818310171561104757611047610fdd565b8160405283815286602085880101111561106057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561109857600080fd5b85356110a381610fc5565b945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b6110d288828901610ff3565b9598949750949560608101359550608001359392505050565b600080600080600060a0868803121561110357600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b60008060006040848603121561113d57600080fd5b83359250602084013567ffffffffffffffff8082111561115c57600080fd5b818601915086601f83011261117057600080fd5b81358181111561117f57600080fd5b87602082850101111561119157600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156111ca576020818501810151868301820152016111ae565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061121760c08301866111a4565b60808301949094525060a00152949350505050565b6000806040838503121561123f57600080fd5b823561124a81610fc5565b946020939093013593505050565b60006020828403121561126a57600080fd5b813561127581610fc5565b9392505050565b6000806040838503121561128f57600080fd5b8235915060208301356112a181610fc5565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600483106112e457634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806080858703121561130057600080fd5b84359350602085013567ffffffffffffffff81111561131e57600080fd5b61132a87828801610ff3565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261138360e08401826111a4565b9050608084015160a084015260a084015160c08401528091505092915050565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806113d757607f821691505b6020821081036113f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144757600081815260208120601f850160051c810160208610156114245750805b601f850160051c820191505b8181101561144357828155600101611430565b5050505b505050565b815167ffffffffffffffff81111561146657611466610fdd565b61147a8161147484546113c3565b846113fd565b602080601f8311600181146114af57600084156114975750858301515b600019600386901b1c1916600185901b178555611443565b600085815260208120601f198616915b828110156114de578886015182559484019460019091019084016114bf565b50858210156114fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061152560408301846111a4565b949350505050565b60006020828403121561153f57600080fd5b8151801515811461127557600080fd5b6020808252600b908201526a27b7363c9030b236b4b71760a91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159c57600080fd5b815161127581610fc556fea264697066735822122096627b396844e9458314a8b23823d5141ce1c4fd426d2d50e94b4b0c8be46c6264736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4372656174656420706c7567696e20646566696e6974696e696f6e204944202d2d2d203a2020657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220cefec9c9b386ce2e525627d9c25fd26f0a9e5714e141a0fea416cba293aa55f064736f6c63430008130033", - "sourceMap": "467:1832:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;696:869:116;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;1571:726:116:-;;;:::i;2592:140:59:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5504:14:121;;5497:22;5479:41;;5467:2;5452:18;1819:584:52;5339:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;5972:51:121;3476:66:114;;3487:3;;;;;:23;;5945:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;696:869:116:-;739:13;:11;:13::i;:::-;803:4;;769:40;;-1:-1:-1;;;;;803:4:116;;;;769:40;;;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;769:40:116;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;763:3:116;:46;;-1:-1:-1;;;;;;763:46:116;-1:-1:-1;;;;;763:46:116;;;;;;;;;819:47;;;-1:-1:-1;;;819:47:116;;;;;6528:51:121;;;;6595:18;;;6588:30;6654:2;6634:18;;;6627:30;-1:-1:-1;;;6673:18:121;;;6666:51;-1:-1:-1;;;;;;;;;;;819:8:116;;;6734:19:121;;819:47:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:3;;;;;;;;;-1:-1:-1;;;;;898:3:116;-1:-1:-1;;;;;898:26:116;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;877:6;:50;;-1:-1:-1;;;;;;877:50:116;-1:-1:-1;;;;;877:50:116;;;;;;;;;937:40;;;-1:-1:-1;;;937:40:116;;;;;6976:51:121;;;;7043:18;;;7036:30;7102:2;7082:18;;;7075:30;-1:-1:-1;;;7121:18:121;;;7114:41;-1:-1:-1;;;;;;;;;;;937:8:116;;;7172:19:121;;937:40:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1040:4:116;;1047:16;;1001:64;;-1:-1:-1;;;;;1040:4:116;;;;-1:-1:-1;1047:16:116;;;-1:-1:-1;1001:64:116;;;:::i;:::-;-1:-1:-1;;;;;7432:15:121;;;7414:34;;7484:15;;7479:2;7464:18;;7457:43;7364:2;7349:18;1001:64:116;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:10:116;:77;;-1:-1:-1;;;;;;988:77:116;-1:-1:-1;;;;;988:77:116;;;;;;;;;1075:44;;;-1:-1:-1;;;1075:44:116;;;;;7723:51:121;;;;7790:18;;;7783:30;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:121;;;7861:41;-1:-1:-1;;;;;;;;;;;1075:8:116;;;7919:19:121;;1075:44:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1176:2:116;;1167:12;;-1:-1:-1;;;1167:12:116;;-1:-1:-1;;;;;1176:2:116;;;1167:12;;;5972:51:121;1130:26:116;;-1:-1:-1;;;;;;;;;;;;1167:8:116;-1:-1:-1;1167:8:116;;5945:18:121;;1167:12:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1230:3:116;;1262:2;;1230:84;;-1:-1:-1;;;1230:84:116;;1189:26;;-1:-1:-1;;;;;;1230:3:116;;;;-1:-1:-1;1230:23:116;;:84;;1262:2;;1189:26;;1230:3;;1304:9;;1230:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1189:125;;1325:73;;;;;;;;;;;;;;;;;;1379:18;1325:11;:73::i;:::-;1417:2;;1408:12;;-1:-1:-1;;;1408:12:116;;-1:-1:-1;;;;;1417:2:116;;;1408:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1408:8:116;;;5945:18:121;;1408:12:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1430:3:116;;1457:10;;1430:59;;-1:-1:-1;;;1430:59:116;;-1:-1:-1;;;;;1457:10:116;;;1430:59;;;9462:51:121;9529:18;;;9522:34;;;1430:3:116;;;-1:-1:-1;1430:18:116;;-1:-1:-1;9435:18:121;;1430:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1515:3:116;;1546:10;;1515:43;;-1:-1:-1;;;1515:43:116;;-1:-1:-1;;;;;1546:10:116;;;1515:43;;;5972:51:121;1515:3:116;;;-1:-1:-1;1515:22:116;;-1:-1:-1;5945:18:121;;1515:43:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1500:12;:58;-1:-1:-1;;696:869:116:o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:726:116;1626:2;;1617:12;;-1:-1:-1;;;1617:12:116;;-1:-1:-1;;;;;1626:2:116;;;1617:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1617:8:116;;;5945:18:121;;1617:12:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1639:32:116;;-1:-1:-1;;;1639:32:116;;10153:2:121;1639:32:116;;;10135:21:121;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:121;;;10204:43;-1:-1:-1;;;;;;;;;;;1639:15:116;-1:-1:-1;1639:15:116;;-1:-1:-1;10264:18:121;;1639:32:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1681:3:116;;:19;;-1:-1:-1;;;1681:19:116;;:3;:19;;;5479:41:121;-1:-1:-1;;;;;1681:3:116;;;;-1:-1:-1;1681:13:116;;-1:-1:-1;5452:18:121;;1681:19:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1725:2:116;;1711:17;;-1:-1:-1;;;1711:17:116;;-1:-1:-1;;;;;1725:2:116;;;1711:17;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1711:13:116;-1:-1:-1;1711:13:116;;-1:-1:-1;5945:18:121;;1711:17:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1758:9;1763:3;1758:4;:9::i;:::-;1778:57;;-1:-1:-1;;;1778:57:116;;10494:2:121;1778:57:116;;;10476:21:121;10533:2;10513:18;;;10506:30;10572:34;10552:18;;;10545:62;-1:-1:-1;;;10623:18:121;;;10616:36;-1:-1:-1;;;;;;;;;;;1778:15:116;;;10669:19:121;;1778:57:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1845:3:116;;:19;;-1:-1:-1;;;1845:19:116;;:3;:19;;;5479:41:121;-1:-1:-1;;;;;1845:3:116;;;;-1:-1:-1;1845:13:116;;-1:-1:-1;5452:18:121;;1845:19:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1893:6:116;;1875:15;;-1:-1:-1;;;;;;1893:6:116;;-1:-1:-1;1893:13:116;:6;1920:20;:15;1938:2;1920:20;:::i;:::-;1893:51;;-1:-1:-1;;;;;;1893:51:116;;;;;;;;;;11210:25:121;;;;11271:3;11251:18;;;11244:31;11312:1;11291:19;;;11284:30;-1:-1:-1;;;11330:19:121;;;11323:37;11412:18;;;11405:34;1942:1:116;11455:18:121;;;11448:34;11377:19;;1893:51:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1875:69;;1954:39;1965:7;1976:1;1965:12;;1954:39;;;;;;;;;;;;;-1:-1:-1;;;1954:39:116;;;:10;:39::i;:::-;2004:53;;-1:-1:-1;;;2004:53:116;;11694:2:121;2004:53:116;;;11676:21:121;11733:2;11713:18;;;11706:30;11772:34;11752:18;;;11745:62;-1:-1:-1;;;11823:18:121;;;11816:32;-1:-1:-1;;;;;;;;;;;2004:15:116;;;11865:19:121;;2004:53:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2067:3:116;;:19;;-1:-1:-1;;;2067:19:116;;:3;:19;;;5479:41:121;-1:-1:-1;;;;;2067:3:116;;;;-1:-1:-1;2067:13:116;;-1:-1:-1;5452:18:121;;2067:19:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2097:25;2109:12;;2097:11;:25::i;:::-;2132:6;;2159:12;;2132:59;;-1:-1:-1;;;2132:59:116;;;;;12135:25:121;;;12176:18;;;12169:34;;;;12239:2;12219:18;;;12212:30;12278:2;12258:18;;;12251:30;-1:-1:-1;;;12297:19:121;;;12290:46;-1:-1:-1;;;;;2132:6:116;;;;:17;;12353:19:121;;2132:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2202:3:116;;:19;;-1:-1:-1;;;2202:19:116;;:3;:19;;;5479:41:121;-1:-1:-1;;;;;2202:3:116;;;;-1:-1:-1;2202:13:116;;-1:-1:-1;5452:18:121;;2202:19:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2255:6:116;;:35;;-1:-1:-1;;;2255:35:116;;:6;:35;;;12551:41:121;12608:18;;;12601:34;;;-1:-1:-1;;;;;2255:6:116;;;;-1:-1:-1;2255:20:116;;-1:-1:-1;12524:18:121;;2255:35:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:690;1571:726::o;2592:140:59:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;9462:51:121;;;-1:-1:-1;;;9529:18:121;;;9522:34;2196:43:52;;;;;;;;;9435:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;14269:51:121;;;;14336:18;;;14329:30;14395:1;14375:18;;;14368:29;-1:-1:-1;;;14413:18:121;;;14406:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;14461:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;14703:51:121;;;;14770:18;;;14763:30;14829:1;14809:18;;;14802:29;-1:-1:-1;;;14847:18:121;;;14840:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;14895:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;15137:51:121;;;;15204:18;;;15197:30;15263:1;15243:18;;;15236:29;-1:-1:-1;;;15281:18:121;;;15274:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;15329:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;15571:51:121;15638:18;;;15631:30;15697:2;15677:18;;;15670:30;-1:-1:-1;;;15716:18:121;;;15709:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;15768:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;5945:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;16010:51:121;;;;16077:18;;;16070:30;16136:2;16116:18;;;16109:30;-1:-1:-1;;;16155:18:121;;;16148:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;16205:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;16447:51:121;;;;16514:18;;;16507:30;16573:1;16553:18;;;16546:29;-1:-1:-1;;;16591:18:121;;;16584:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;16640:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;5972:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;5945:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;16882:51:121;;;;16949:18;;;16942:30;17008:1;16988:18;;;16981:29;-1:-1:-1;;;17026:18:121;;;17019:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;17072:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;17314:51:121;;;;17381:18;;;17374:30;17440:2;17420:18;;;17413:30;-1:-1:-1;;;17459:18:121;;;17452:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;17509:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;17751:51:121;;;;17818:18;;;17811:30;17877:2;17857:18;;;17850:30;-1:-1:-1;;;17896:18:121;;;17889:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;17951:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;18193:51:121;;;;18260:18;;;18253:30;18319:2;18299:18;;;18292:30;-1:-1:-1;;;18338:18:121;;;18331:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;18393:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;5972:51:121;;;;2573:3:114;;;;:22;;5945:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;18710:15:121;;;18692:34;;18762:15;;;18757:2;18742:18;;18735:43;18814:15;;;18809:2;18794:18;;18787:43;18866:15;;;18861:2;18846:18;;18839:43;18641:3;18626:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;19105:51:121;;;;19172:18;;;19165:30;19231:2;19211:18;;;19204:30;-1:-1:-1;;;19250:18:121;;;19243:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;19303:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;19589:25:121;;;19650:2;19630:18;;;19623:30;19689:2;19669:18;;;19662:30;-1:-1:-1;;;19708:19:121;;;19701:42;19795:18;;;19788:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;19760:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;6548:139:67;6612:68;6672:2;6676;6628:51;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6628:51:67;;;;;;;;;;;;;;-1:-1:-1;;;;;6628:51:67;-1:-1:-1;;;6628:51:67;;;6612:15;:68::i;24604:93:57:-;-1:-1:-1;;;;;;;;;;;24659:7:57;24667:22;24685:4;24667:15;:22;:::i;:::-;24659:31;;;;;;;;;;;;;20275:25:121;;20263:2;20248:18;;20129:177;5514:110:67;5560:57;5613:2;5576:40;;;;;;20275:25:121;;20263:2;20248:18;;20129:177;5576:40:67;;;;-1:-1:-1;;5576:40:67;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:40:67;-1:-1:-1;;;5576:40:67;;;5560:15;:57::i;:::-;5514:110;:::o;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;20513:2:121;20495:21;;;20552:2;20532:18;;;20525:30;20591:25;20586:2;20571:18;;20564:53;20649:2;20634:18;;20311:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;181:376:67:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;2409:432:52:-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;20865:51:121;;;-1:-1:-1;;;20932:18:121;;;20925:34;;;;2712:4:52;20975:18:121;;;20968:34;2489:11:52;;1671:64;2586:43;;20838:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:121;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:121:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;7949:1145;8360:1;8356;8351:3;8347:11;8343:19;8335:6;8331:32;8320:9;8313:51;8294:4;8383:2;8421:3;8416:2;8405:9;8401:18;8394:31;8462:2;8456:3;8445:9;8441:19;8434:31;8502:26;8496:3;8485:9;8481:19;8474:55;8564:3;8553:9;8549:19;8604:6;8599:2;8588:9;8584:18;8577:34;8661:6;8654:14;8647:22;8642:2;8631:9;8627:18;8620:50;8707:3;8701;8690:9;8686:19;8679:32;8731:3;8763:6;8757:13;8791:6;8786:3;8779:19;8829:3;8818:9;8814:19;8807:26;;8868:2;8860:6;8856:15;8842:29;;8889:1;8899:169;8913:6;8910:1;8907:13;8899:169;;;8974:13;;8962:26;;9043:15;;;;9008:12;;;;8935:1;8928:9;8899:169;;;-1:-1:-1;9085:3:121;;7949:1145;-1:-1:-1;;;;;;;;;7949:1145:121:o;9099:184::-;9169:6;9222:2;9210:9;9201:7;9197:23;9193:32;9190:52;;;9238:1;9235;9228:12;9190:52;-1:-1:-1;9261:16:121;;9099:184;-1:-1:-1;9099:184:121:o;9567:380::-;9646:1;9642:12;;;;9689;;;9710:61;;9764:4;9756:6;9752:17;9742:27;;9710:61;9817:2;9809:6;9806:14;9786:18;9783:38;9780:161;;9863:10;9858:3;9854:20;9851:1;9844:31;9898:4;9895:1;9888:15;9926:4;9923:1;9916:15;9780:161;;9567:380;;;:::o;10699:222::-;10764:9;;;10785:10;;;10782:133;;;10837:10;10832:3;10828:20;10825:1;10818:31;10872:4;10869:1;10862:15;10900:4;10897:1;10890:15;10782:133;10699:222;;;;:::o;12925:384::-;-1:-1:-1;;;;;;13110:33:121;;13098:46;;13167:13;;13080:3;;13189:74;13167:13;13252:1;13243:11;;13236:4;13224:17;;13189:74;:::i;:::-;13283:16;;;;13301:1;13279:24;;12925:384;-1:-1:-1;;;12925:384:121:o;13314:287::-;13443:3;13481:6;13475:13;13497:66;13556:6;13551:3;13544:4;13536:6;13532:17;13497:66;:::i;:::-;13579:16;;;;;13314:287;-1:-1:-1;;13314:287:121:o;13606:446::-;13856:2;13845:9;13838:21;13895:1;13890:2;13879:9;13875:18;13868:29;-1:-1:-1;;;13928:2:121;13917:9;13913:18;13906:35;13979:3;13972:4;13961:9;13957:20;13950:33;13819:4;14000:46;14041:3;14030:9;14026:19;14018:6;14000:46;:::i;19833:291::-;20010:2;19999:9;19992:21;19973:4;20030:45;20071:2;20060:9;20056:18;20048:6;20030:45;:::i;:::-;20022:53;;20111:6;20106:2;20095:9;20091:18;20084:34;19833:291;;;;;:::o", + "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c80636c719a021162000097578063b5508aa9116200006e578063b5508aa914620001ac578063ba414fa614620001b6578063e20c9f7114620001d1578063fa7626d414620001db57600080fd5b80636c719a02146200017f57806385226c811462000189578063916a17c614620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b620001e9565b005b6200010b6200057d565b6200012162000b06565b6040516200013091906200274f565b60405180910390f35b6200014362000b6a565b604051620001309190620027f2565b6200012162000cb8565b6200012162000d1a565b6200017062000d7c565b604051620001309190620028b8565b6200010b62000e66565b6200019362001475565b6040516200013091906200296f565b620001706200154f565b6200019362001639565b620001c062001713565b604051901515815260200162000130565b6200012162001840565b600754620001c09060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b6020820152620002339160016001600160a01b039091163b1190620018a2565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200027e9160026001600160a01b039091163b1190620018a2565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002c89160046001600160a01b039091163b1190620018a2565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003129160056001600160a01b039091163b1190620018a2565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b60208201526200035b9160066001600160a01b039091163b1190620018a2565b601e54602454604080516341dcea9160e01b8152905162000401936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620029d5565b6001600160a01b0316146040518060600160405280602881526020016201814b60289139620018a2565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004b792919091169063adcee6e390602401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062002a07565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e6572000000000000000000815250620018a2565b6200057b60006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005409190620029d5565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b815250620018a2565b565b62000587620018f0565b6024546040516001600160a01b0390911690620005a490620026c3565b6001600160a01b039091168152602001604051809103906000f080158015620005d1573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601560448201527428bab2b9ba27b73137b0b93234b733a8363ab3b4b760591b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200066657600080fd5b505af11580156200067b573d6000803e3d6000fd5b50505050602c60009054906101000a90046001600160a01b03166001600160a01b031663ee1278426040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f99190620029d5565b602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a28bab2b9ba28363ab3b4b760a91b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200078357600080fd5b505af115801562000798573d6000803e3d6000fd5b5050602454602f546040516001600160a01b03928316945091169150620007bf90620026d1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007f3573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600b60448201526a2a30b9b5b9a8363ab3b4b760a91b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200087e57600080fd5b505af115801562000893573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018105833981519152915063ca669fa790602401600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba92620009479216908590600190889060040162002a2b565b6020604051808303816000875af115801562000967573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098d919062002ac8565b9050620009b46040518060600160405280602681526020016201812560269139826200244d565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620181058339815191529063ca669fa790602401600060405180830381600087803b15801562000a0957600080fd5b505af115801562000a1e573d6000803e3d6000fd5b5050601e54602e54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000a7357600080fd5b505af115801562000a88573d6000803e3d6000fd5b5050601e54602e546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff919062002ac8565b6030555050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000b6057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000b41575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000caf57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c9757838290600052602060002001805462000c039062002ae2565b80601f016020809104026020016040519081016040528092919081815260200182805462000c319062002ae2565b801562000c825780601f1062000c565761010080835404028352916020019162000c82565b820191906000526020600020905b81548152906001019060200180831162000c6457829003601f168201915b50505050508152602001906001019062000be1565b50505050815250508152602001906001019062000b8e565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e4d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000e0e5790505b5050505050815250508152602001906001019062000da0565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620181058339815191529063ca669fa790602401600060405180830381600087803b15801562000ebb57600080fd5b505af115801562000ed0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b604482015260008051602062018105833981519152925063f28dceb39150606401600060405180830381600087803b15801562000f3a57600080fd5b505af115801562000f4f573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b15801562000f9a57600080fd5b505af115801562000faf573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201810583398151915292506306447d569150602401600060405180830381600087803b1580156200100857600080fd5b505af11580156200101d573d6000803e3d6000fd5b505050506200102d606462002496565b60405163f28dceb360e01b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152600080516020620181058339815191529063f28dceb390608401600060405180830381600087803b158015620010b257600080fd5b505af1158015620010c7573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b1580156200111257600080fd5b505af115801562001127573d6000803e3d6000fd5b5050602d54600092506001600160a01b0316905063bd45a0a960016200114f42600a62002b1e565b6040516001600160e01b031960e085901b16815260048101929092526080602483015260066084830152651d5c9a50d25160d21b60a483015260448201526001606482015260c4016020604051808303816000875af1158015620011b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011dd919062002ac8565b90506200121281600014156040518060400160405280600b81526020016a195e1c1958dd1959081a5960aa1b815250620018a2565b60405163f28dceb360e01b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152600080516020620181058339815191529063f28dceb390608401600060405180830381600087803b1580156200129357600080fd5b505af1158015620012a8573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620012f357600080fd5b505af115801562001308573d6000803e3d6000fd5b5050505062001319603054620024d6565b602d546030546040516382b3501760e01b815260048101849052602481019190915260606044820152600f60648201526e7461736b5572694d6574616461746160881b60848201526001600160a01b03909116906382b350179060a401600060405180830381600087803b1580156200139157600080fd5b505af1158015620013a6573d6000803e3d6000fd5b5050602c5460405163567619c560e11b8152600160048201526001600160a01b03909116925063acec338a9150602401600060405180830381600087803b158015620013f157600080fd5b505af115801562001406573d6000803e3d6000fd5b5050602d54604051630697483560e41b815260016004820152602481018590526001600160a01b039091169250636974835091506044015b600060405180830381600087803b1580156200145957600080fd5b505af11580156200146e573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000caf578382906000526020600020018054620014bb9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620014e99062002ae2565b80156200153a5780601f106200150e576101008083540402835291602001916200153a565b820191906000526020600020905b8154815290600101906020018083116200151c57829003601f168201915b50505050508152602001906001019062001499565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200162057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015e15790505b5050505050815250508152602001906001019062001573565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000caf5783829060005260206000200180546200167f9062002ae2565b80601f0160208091040260200160405190810160405280929190818152602001828054620016ad9062002ae2565b8015620016fe5780601f10620016d257610100808354040283529160200191620016fe565b820191906000526020600020905b815481529060010190602001808311620016e057829003601f168201915b5050505050815260200190600101906200165d565b600754600090610100900460ff1615620017365750600754610100900460ff1690565b6000600080516020620181058339815191523b156200183b576040805160008051602062018105833981519152602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620017bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b46565b60408051601f1981840301815290829052620017d99162002b79565b6000604051808303816000865af19150503d806000811462001818576040519150601f19603f3d011682016040523d82523d6000602084013e6200181d565b606091505b509150508080602001905181019062001837919062002a07565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000b60576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000b41575050505050905090565b81620018ec577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018d9919062002b97565b60405180910390a1620018ec8262002521565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200198157600080fd5b505af115801562001996573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018105833981519152925063c657c7189150608401600060405180830381600087803b15801562001a2b57600080fd5b505af115801562001a40573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018105833981519152925063c657c7189150608401600060405180830381600087803b15801562001ad557600080fd5b505af115801562001aea573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001b8b57600080fd5b505af115801562001ba0573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201810583398151915292506306447d569150602401600060405180830381600087803b15801562001bf957600080fd5b505af115801562001c0e573d6000803e3d6000fd5b5050505060405162001c2090620026df565b604051809103906000f08015801562001c3d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001cc757600080fd5b505af115801562001cdc573d6000803e3d6000fd5b5050505060405162001cee90620026ed565b604051809103906000f08015801562001d0b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001d9457600080fd5b505af115801562001da9573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001df757600080fd5b505af115801562001e0c573d6000803e3d6000fd5b5050505060405162001e1e90620026fb565b604051809103906000f08015801562001e3b573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001ec157600080fd5b505af115801562001ed6573d6000803e3d6000fd5b5050505060405162001ee89062002709565b604051809103906000f08015801562001f05573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b15801562001f8f57600080fd5b505af115801562001fa4573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fc5915062002717565b6001600160a01b039091168152602001604051809103906000f08015801562001ff2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200208157600080fd5b505af115801562002096573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620020b7915062002725565b6001600160a01b039091168152602001604051809103906000f080158015620020e4573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200217357600080fd5b505af115801562002188573d6000803e3d6000fd5b505050506040516200219a9062002733565b604051809103906000f080158015620021b7573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b1580156200221757600080fd5b505af11580156200222c573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200225d9062002741565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022a2573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620181058339815191529063c657c71890608401600060405180830381600087803b1580156200232f57600080fd5b505af115801562002344573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af1158015620023c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023e69190620029d5565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018105833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200145957600080fd5b620018ec82826040516024016200246692919062002bc8565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905262002599565b6000805160206201810583398151915263e5d6bf02620024b7834262002b1e565b6040518263ffffffff1660e01b81526004016200143e91815260200190565b6200251e81604051602401620024ee91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b17905262002599565b50565b806200251e577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620025879060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200251e620025ba565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080516020620181058339815191523b15620026b2576040805160008051602062018105833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200264d929160200162002b46565b60408051601f1981840301815290829052620026699162002b79565b6000604051808303816000865af19150503d8060008114620026a8576040519150601f19603f3d011682016040523d82523d6000602084013e620026ad565b606091505b505050505b6007805461ff001916610100179055565b6138218062002bed83390190565b611a0d806200640e83390190565b6101208062007e1b83390190565b610c728062007f3b83390190565b6137238062008bad83390190565b6125a3806200c2d083390190565b6110db806200e87383390190565b613043806200f94e83390190565b6137d5806201299183390190565b611f9f806201616683390190565b6020808252825182820181905260009190848201906040850190845b81811015620027925783516001600160a01b0316835292840192918401916001016200276b565b50909695505050505050565b60005b83811015620027bb578181015183820152602001620027a1565b50506000910152565b60008151808452620027de8160208601602086016200279e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620028a857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200289157605f198985030183526200287e848651620027c4565b948e01949350918d01916001016200285f565b505050978a01979450509188019160010162002819565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200296057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200294a5783516001600160e01b0319168252928b019260019290920191908b01906200291e565b50978a01979550505091870191600101620028e0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620029c857603f19888603018452620029b5858351620027c4565b9450928501929085019060010162002996565b5092979650505050505050565b600060208284031215620029e857600080fd5b81516001600160a01b038116811462002a0057600080fd5b9392505050565b60006020828403121562002a1a57600080fd5b8151801515811462002a0057600080fd5b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562002ab95783518352928401929184019160010162002a9b565b50909998505050505050505050565b60006020828403121562002adb57600080fd5b5051919050565b600181811c9082168062002af757607f821691505b60208210810362002b1857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111562002b4057634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160e01b031983168152815160009062002b6b8160048501602087016200279e565b919091016004019392505050565b6000825162002b8d8184602087016200279e565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002a006080830184620027c4565b60408152600062002bdd6040830185620027c4565b9050826020830152939250505056fe608060405234801561001057600080fd5b5060405161382138038061382183398101604081905261002f91610163565b600180546001600160a01b0319166001600160a01b0383169081178255604080516341dcea9160e01b81529051849392916341dcea919160048083019260209291908290030181865afa15801561008a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ae9190610163565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b031916331790556003555060405181906100f990610156565b6001600160a01b039091168152602001604051809103906000f080158015610125573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b03929092169190911790556004805460ff1916905550610193565b6128b680610f6b83390190565b60006020828403121561017557600080fd5b81516001600160a01b038116811461018c57600080fd5b9392505050565b610dc9806101a26000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637fa56b831161008c578063a1308f2711610066578063a1308f27146101a4578063acec338a146101ad578063d5f39488146101c0578063ee127842146101d157600080fd5b80637fa56b831461017857806389f12ed91461018b5780638da5cb5b1461019c57600080fd5b806302a4dca0146100d457806322f3e2d4146100e95780632fe7e4411461010b57806341dcea91146101225780634f2b51c714610152578063697bd9d414610165575b600080fd5b6100e76100e2366004610b0e565b6101e2565b005b6004546100f69060ff1681565b60405190151581526020015b60405180910390f35b61011460025481565b604051908152602001610102565b60045461013a9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610102565b6100f6610160366004610b3f565b610242565b60055461013a906001600160a01b031681565b6100e7610186366004610b3f565b6102bf565b6001546001600160a01b031661013a565b61013a610300565b61011460035481565b6100e76101bb366004610b79565b61037b565b6000546001600160a01b031661013a565b6005546001600160a01b031661013a565b60045461010090046001600160a01b0316331461023d5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60055460405163d4a1317560e01b81526001600160a01b03848116600483015260248201849052600092169063d4a1317590604401602060405180830381865afa158015610294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b89190610b96565b9392505050565b60405162461bcd60e51b8152602060048201526016602482015275119d5b98dd1a5bdb939bdd125b5c1b195b595b9d195960521b6044820152606401610234565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103769190610bb3565b905090565b6001546001600160a01b0316604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c90602401602060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190610b96565b61042d5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1030b71030b236b4b71760991b6044820152606401610234565b600554604051630509a75b60e51b8152600160048201526000916001600160a01b03169063a134eb6090602401602060405180830381865afa158015610477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190610bd0565b600554604051630509a75b60e51b8152600260048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e9190610bd0565b600554604051630509a75b60e51b8152600360048201529192506000916001600160a01b039091169063a134eb6090602401602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190610bd0565b905083156107cd5760008311806105985750600082115b806105a35750600081115b6105fe5760405162461bcd60e51b815260206004820152602660248201527f6174206c65617374206f6e65207175657374206e6565647320746f206265206460448201526519599a5b995960d21b6064820152608401610234565b60055460405163f4f4d23760e01b8152600481018590526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610648573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106709190810190610c59565b60a0015111806106f3575060055460405163f4f4d23760e01b8152600481018490526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ed9190810190610c59565b60a00151115b80610771575060055460405163f4f4d23760e01b8152600481018390526000916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610743573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076b9190810190610c59565b60a00151115b6107c85760405162461bcd60e51b815260206004820152602260248201527f6174206c65617374206f6e65207175657374206d7573742068617665207461736044820152616b7360f01b6064820152608401610234565b610afa565b60055460405163f4f4d23760e01b8152600481018590526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610816573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083e9190810190610c59565b6080015115806108c0575060055460405163f4f4d23760e01b81526004810185905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610892573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ba9190810190610c59565b60800151115b6108dc5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018490526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094d9190810190610c59565b6080015115806109cf575060055460405163f4f4d23760e01b81526004810184905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa1580156109a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c99190810190610c59565b60800151115b6109eb5760405162461bcd60e51b815260040161023490610d6c565b60055460405163f4f4d23760e01b8152600481018390526001600160a01b039091169063f4f4d23790602401600060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a5c9190810190610c59565b608001511580610ade575060055460405163f4f4d23760e01b81526004810183905242916001600160a01b03169063f4f4d23790602401600060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad89190810190610c59565b60800151115b610afa5760405162461bcd60e51b815260040161023490610d6c565b6004805460ff191685151517905550505050565b600060208284031215610b2057600080fd5b5035919050565b6001600160a01b0381168114610b3c57600080fd5b50565b60008060408385031215610b5257600080fd5b8235610b5d81610b27565b946020939093013593505050565b8015158114610b3c57600080fd5b600060208284031215610b8b57600080fd5b81356102b881610b6b565b600060208284031215610ba857600080fd5b81516102b881610b6b565b600060208284031215610bc557600080fd5b81516102b881610b27565b600060208284031215610be257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610c2257610c22610be9565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c5157610c51610be9565b604052919050565b60006020808385031215610c6c57600080fd5b825167ffffffffffffffff80821115610c8457600080fd5b9084019060c08287031215610c9857600080fd5b610ca0610bff565b8251815283830151610cb181610b6b565b81850152604083015182811115610cc757600080fd5b8301601f81018813610cd857600080fd5b805183811115610cea57610cea610be9565b610cfc601f8201601f19168701610c28565b93508084528886828401011115610d1257600080fd5b60005b81811015610d30578281018701518582018801528601610d15565b5060008682860101525050816040820152606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b6020808252600d908201526c1c5d595cdd081cdd185c9d1959609a1b60408201526060019056fea2646970667358221220b8606e92bcc4a34f85de6fd13e22b8598453d8d61d6ca5f1736149e3cfa65f8564736f6c6343000813003360806040523480156200001157600080fd5b50604051620028b6380380620028b6833981016040819052620000349162000228565b80600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c3919062000228565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055600080546001600160a01b03191633179055600355506200010f600580546001019055565b600780546001600160a01b031916331790556040805160c08101825260008082526020808301828152845191820185528282529383019081526060830182905242608084015260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551919290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4190910190620002009082620002ff565b50606082015181600301556080820151816004015560a08201518160050155505050620003cb565b6000602082840312156200023b57600080fd5b81516001600160a01b03811681146200025357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200028557607f821691505b602082108103620002a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fa57600081815260208120601f850160051c81016020861015620002d55750805b601f850160051c820191505b81811015620002f657828155600101620002e1565b5050505b505050565b81516001600160401b038111156200031b576200031b6200025a565b62000333816200032c845462000270565b84620002ac565b602080601f8311600181146200036b5760008415620003525750858301515b600019600386901b1c1916600185901b178555620002f6565b600085815260208120601f198616915b828110156200039c578886015182559484019460019091019084016200037b565b5085821015620003bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124db80620003db6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063bd45a0a911610097578063d401036111610071578063d40103611461038d578063d4a13175146103a0578063d5f39488146103b3578063f4f4d237146103c457600080fd5b8063bd45a0a914610354578063bda8768f14610367578063ca8836d21461037a57600080fd5b8063a1308f27116100d3578063a1308f27146102f8578063a134eb6014610301578063a4b986d814610321578063b699520f1461034157600080fd5b80638da5cb5b146102ca5780639465120b146102d257806395ecc642146102e557600080fd5b806339a5449b116101665780636974835011610140578063697483501461028b5780637fc573d21461029e57806382b35017146102a657806389f12ed9146102b957600080fd5b806339a5449b1461023557806341dcea91146102485780635bf14f2d1461027857600080fd5b806302a4dca0146101ae5780630b2c5834146101c35780630d39c1ec146101d657806322f3e2d4146101e95780632b13d6011461020b5780632fe7e4411461021e575b600080fd5b6101c16101bc366004611d6c565b6103e4565b005b6101c16101d1366004611d85565b610444565b6101c16101e4366004611e04565b610588565b6004546101f69060ff1681565b60405190151581526020015b60405180910390f35b6101f6610219366004611e3e565b610649565b61022760025481565b604051908152602001610202565b6101c1610243366004611d6c565b61068d565b6004546102609061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610202565b600754610260906001600160a01b031681565b6101c1610299366004611e78565b6107dc565b61022761098e565b6101c16102b4366004611f62565b6109aa565b6001546001600160a01b0316610260565b610260610c53565b6101c16102e0366004611fb2565b610cc9565b6101f66102f3366004611d6c565b610f1f565b61022760035481565b61022761030f366004611d6c565b600a6020526000908152604090205481565b61033461032f366004611d6c565b610fc0565b604051610202919061200a565b6101c161034f366004611d6c565b611046565b610227610362366004612059565b6111e4565b610227610375366004611e04565b611460565b6101f6610388366004611d6c565b611491565b61022761039b366004611e3e565b6114c1565b6101f66103ae366004611e3e565b61174f565b6000546001600160a01b0316610260565b6103d76103d2366004611d6c565b611781565b60405161020291906120f6565b60045461010090046001600160a01b0316331461043f5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190612152565b6104cc5760405162461bcd60e51b81526004016104369061216f565b826104d681611491565b6104f25760405162461bcd60e51b815260040161043690612196565b836104fc60055490565b101561051a5760405162461bcd60e51b8152600401610436906121bc565b60005b82811015610558576105468585858481811061053b5761053b6121e6565b9050604002016118c4565b8061055081612212565b91505061051d565b506040517f9d332a24eb432cdce98c51fd6189524fd2175f1ae19f450acad59e6b83dba95190600090a150505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612152565b6106105760405162461bcd60e51b81526004016104369061216f565b8061061a81611491565b6106365760405162461bcd60e51b815260040161043690612196565b506000918252600a602052604090912055565b6000818152600b602090815260408083206001600160a01b038616845290915281205460ff1680156106845750600061068284846114c1565b115b90505b92915050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa1580156106d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fa9190612152565b801561073c575080600a600060068481548110610719576107196121e6565b906000526020600020906006020160000154815260200190815260200160002054145b61077c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191690558051858152918201929092527f8c7cdad0d12a8db3e23561b42da6f10c8137914c97beff202213a410e1f520a391015b60405180910390a15050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190612152565b6108645760405162461bcd60e51b81526004016104369061216f565b600061086f82611781565b90508060a001516000036108af5760405162461bcd60e51b81526020600482015260076024820152664e6f5461736b7360c81b6044820152606401610436565b428160600151610e106108c2919061222b565b82608001516108d19190612242565b10156109075760405162461bcd60e51b8152602060048201526005602482015264115b99195960da1b6044820152606401610436565b82151560208201526006805482919084908110610926576109266121e6565b60009182526020918290208351600692909202019081559082015160018201805460ff19169115159190911790556040820151600282019061096890826122de565b50606082015160038201556080820151600482015560a090910151600590910155505050565b6000600161099b60055490565b6109a5919061239e565b905090565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190612152565b610a325760405162461bcd60e51b81526004016104369061216f565b82610a3c81611491565b610a585760405162461bcd60e51b815260040161043690612196565b6004805460405163e832df9160e01b81529182018590526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906123b1565b9050600081600001516001600160a01b0316630bb75b453360068981548110610af657610af66121e6565b9060005260206000209060060201600001548760068b81548110610b1c57610b1c6121e6565b906000526020600020906006020160040154610e1060068d81548110610b4457610b446121e6565b906000526020600020906006020160030154610b60919061222b565b60068d81548110610b7357610b736121e6565b906000526020600020906006020160040154610b8f9190612242565b6040518663ffffffff1660e01b8152600401610baf9594939291906123eb565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf29190612426565b9050610c12866040518060400160405280888152602001848152506119c5565b60408051878152602081018390527f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386910160405180910390a1505050505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a5919061243f565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612152565b610d515760405162461bcd60e51b81526004016104369061216f565b83610d5b81611491565b610d775760405162461bcd60e51b815260040161043690612196565b84610d8160055490565b1015610d9f5760405162461bcd60e51b8152600401610436906121bc565b60008411610ddf5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205f726f6c6560981b6044820152606401610436565b6000835111610e1f5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964205f75726960a01b6044820152606401610436565b60008211610e6f5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964205f6475726174696f6e496e486f75727300000000000000006044820152606401610436565b8260068681548110610e8357610e836121e6565b90600052602060002090600602016002019081610ea091906122de565b508160068681548110610eb557610eb56121e6565b9060005260206000209060060201600301819055508360068681548110610ede57610ede6121e6565b600091825260208220600690910201919091556040517f496fee2e9fe0bf40e689814f88d58305e2ed8e4650401d6bd0c4f7cfc53fae039190a15050505050565b600080610e1060068481548110610f3857610f386121e6565b906000526020600020906006020160030154610f54919061222b565b60068481548110610f6757610f676121e6565b906000526020600020906006020160040154610f839190612242565b905060068381548110610f9857610f986121e6565b9060005260206000209060060201600401544210158015610fb95750804211155b9392505050565b606060086000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561103b57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ff5565b505050509050919050565b600754604080516308bcf8b560e21b8152905183926001600160a01b0316916322f3e2d49160048083019260209291908290030181865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190612152565b80156110f5575080600a6000600684815481106110d2576110d26121e6565b906000526020600020906006020160000154815260200190815260200160002054145b6111355760405162461bcd60e51b815260206004820152601160248201527013db9b1e481858dd1a5d99481c5d595cdd607a1b6044820152606401610436565b61113e82610f1f565b8061114d575061114d82611491565b6111895760405162461bcd60e51b815260206004820152600d60248201526c195e1c1a5c9959081c5d595cdd609a1b6044820152606401610436565b6000828152600b602090815260408083203380855290835292819020805460ff191660011790558051858152918201929092527f8e536842b0bedb99bbe3d9b2f4d7cd3c1d89955698940f266371b4d4f5caa25791016107d0565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612152565b61126d5760405162461bcd60e51b81526004016104369061216f565b60008451116112ac5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b6044820152606401610436565b4283116112ef5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642073746172744461746560781b6044820152606401610436565b60006112fa60055490565b6040805160c081018252888152600060208201818152928201898152606083018890526080830189905260a083018290526006805460018101825592819052835192027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810192835593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d408501805491151560ff1990921691909117905551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4101906113ce90826122de565b50606082015160038201556080820151600482015560a0909101516005909101556000868152600a60205260408120549003611416576000868152600a602052604090208190555b611424600580546001019055565b6040518181527ff2376f43586d93a15b606c89747962a511dee47a8afacda035909ddd4460b1089060200160405180910390a195945050505050565b6009602052816000526040600020818154811061147c57600080fd5b90600052602060002001600091509150505481565b600042600683815481106114a7576114a76121e6565b906000526020600020906006020160040154119050919050565b60008181526008602052604081205481036114de57506000610687565b6000805b6000848152600860205260409020548110156117475760045460008581526008602052604081208054919261010090046001600160a01b03169163e832df91919085908110611533576115336121e6565b9060005260206000209060020201600001546040518263ffffffff1660e01b815260040161156391815260200190565b6040805180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906123b1565b51600086815260086020526040902080549192506001600160a01b0383169163973cdc78918991869081106115da576115da6121e6565b60009182526020909120600160029092020101546040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b9190612152565b1561172857600085815260086020526040812080546001600160a01b0384169163e31c007f9186908110611691576116916121e6565b906000526020600020906002020160010154896040518363ffffffff1660e01b81526004016116d39291909182526001600160a01b0316602082015260400190565b602060405180830381865afa1580156116f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117149190612426565b905083811115611722578093505b50611734565b60009350505050610687565b508061173f81612212565b9150506114e2565b509392505050565b6000818152600a602052604081205480820361176f576000915050610687565b6117798482610649565b949350505050565b6117bc6040518060c0016040528060008152602001600015158152602001606081526020016000815260200160008152602001600081525090565b600682815481106117cf576117cf6121e6565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201805461181d90612255565b80601f016020809104026020016040519081016040528092919081815260200182805461184990612255565b80156118965780601f1061186b57610100808354040283529160200191611896565b820191906000526020600020905b81548152906001019060200180831161187957829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815250509050919050565b60006118de836118d93685900385018561245c565b611cb0565b9050801961191d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b6044820152606401610436565b600083815260086020526040812080548390811061193d5761193d6121e6565b9060005260206000209060020201600101819055506000600860008581526020019081526020016000208281548110611978576119786121e6565b6000918252602090912060029091020155600680548490811061199d5761199d6121e6565b6000918252602082206005600690920201018054916119bb8361248e565b9190505550505050565b816119cf60055490565b10156119ed5760405162461bcd60e51b8152600401610436906121bc565b60048054825160405163e832df9160e01b8152928301526000916101009091046001600160a01b03169063e832df91906024016040805180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6091906123b1565b80519091506001600160a01b0316611aab5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21038363ab3b4b760911b6044820152606401610436565b6004546000906001600160a01b03610100909104166328077c1a611ad76001546001600160a01b031690565b60208501516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612152565b9050611b5d6001546001600160a01b031690565b6001600160a01b031682600001516001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcc919061243f565b6001600160a01b0316148015611bdf5750805b15611caa576000611bf08585611cb0565b90508019611ca85760008581526008602090815260408220805460018181018355918452928290208751600290940201928355908601519101556006805486908110611c3e57611c3e6121e6565b600091825260208220600560069092020101805491611c5c83612212565b91905055507f88b449d18952f159480a65f18ec32649f7be2d827faa2bec8741d200230c3386858560200151604051611c9f929190918252602082015260400190565b60405180910390a15b505b50505050565b6000805b600084815260086020526040902054811015611d615782516000858152600860205260409020805483908110611cec57611cec6121e6565b906000526020600020906002020160000154148015611d4357508260200151600860008681526020019081526020016000208281548110611d2f57611d2f6121e6565b906000526020600020906002020160010154145b15611d4f579050610687565b80611d5981612212565b915050611cb4565b506000199392505050565b600060208284031215611d7e57600080fd5b5035919050565b600080600060408486031215611d9a57600080fd5b83359250602084013567ffffffffffffffff80821115611db957600080fd5b818601915086601f830112611dcd57600080fd5b813581811115611ddc57600080fd5b8760208260061b8501011115611df157600080fd5b6020830194508093505050509250925092565b60008060408385031215611e1757600080fd5b50508035926020909101359150565b6001600160a01b0381168114611e3b57600080fd5b50565b60008060408385031215611e5157600080fd5b8235611e5c81611e26565b946020939093013593505050565b8015158114611e3b57600080fd5b60008060408385031215611e8b57600080fd5b8235611e5c81611e6a565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611ecf57611ecf611e96565b60405290565b600082601f830112611ee657600080fd5b813567ffffffffffffffff80821115611f0157611f01611e96565b604051601f8301601f19908116603f01168101908282118183101715611f2957611f29611e96565b81604052838152866020858801011115611f4257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611f7757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115611f9c57600080fd5b611fa886828701611ed5565b9150509250925092565b60008060008060808587031215611fc857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611fed57600080fd5b611ff987828801611ed5565b949793965093946060013593505050565b602080825282518282018190526000919060409081850190868401855b8281101561204c57815180518552860151868501529284019290850190600101612027565b5091979650505050505050565b6000806000806080858703121561206f57600080fd5b84359350602085013567ffffffffffffffff81111561208d57600080fd5b61209987828801611ed5565b949794965050505060408301359260600135919050565b6000815180845260005b818110156120d6576020818501810151868301820152016120ba565b506000602082860101526020601f19601f83011685010191505092915050565b60208152815160208201526020820151151560408201526000604083015160c0606084015261212860e08401826120b0565b905060608401516080840152608084015160a084015260a084015160c08401528091505092915050565b60006020828403121561216457600080fd5b8151610fb981611e6a565b6020808252600d908201526c2737ba1030b71030b236b4b71760991b604082015260600190565b6020808252600c908201526b4f6e6c792070656e64696e6760a01b604082015260600190565b60208082526010908201526f1a5b9d985b1a59081c5d595cdd081a5960821b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612224576122246121fc565b5060010190565b8082028115828204841417610687576106876121fc565b80820180821115610687576106876121fc565b600181811c9082168061226957607f821691505b60208210810361228957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156122d957600081815260208120601f850160051c810160208610156122b65750805b601f850160051c820191505b818110156122d5578281556001016122c2565b5050505b505050565b815167ffffffffffffffff8111156122f8576122f8611e96565b61230c816123068454612255565b8461228f565b602080601f83116001811461234157600084156123295750858301515b600019600386901b1c1916600185901b1785556122d5565b600085815260208120601f198616915b8281101561237057888601518255948401946001909101908401612351565b508582101561238e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610687576106876121fc565b6000604082840312156123c357600080fd5b6123cb611eac565b82516123d681611e26565b81526020928301519281019290925250919050565b60018060a01b038616815284602082015260a06040820152600061241260a08301866120b0565b606083019490945250608001529392505050565b60006020828403121561243857600080fd5b5051919050565b60006020828403121561245157600080fd5b8151610fb981611e26565b60006040828403121561246e57600080fd5b612476611eac565b82358152602083013560208201528091505092915050565b60008161249d5761249d6121fc565b50600019019056fea26469706673582212209b5a201ca27077b05c8bdca35109590999e0e5b81f37244b546f18f7d66b368264736f6c6343000813003360806040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000252565b81600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c391906200028a565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b031990811633178255600393909355600780548684169085161790556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a083018590526006805460018101825595819052835195027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810195865590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40820180549190971697169690961790945590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d418501559151919350917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4201906200020f908262000354565b506080820151600482015560a09091015160059182015580546001019055505062000420565b80516001600160a01b03811681146200024d57600080fd5b919050565b600080604083850312156200026657600080fd5b620002718362000235565b9150620002816020840162000235565b90509250929050565b6000602082840312156200029d57600080fd5b620002a88262000235565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b03811115620003705762000370620002af565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6115dd80620004306000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063bd45a0a91161007c578063bd45a0a9146102e0578063d5f39488146102f3578063daf9113714610304578063e31c007f14610317578063eb08ab281461034d578063f4f4d2371461035757600080fd5b80638da5cb5b1461024d578063969bb3a814610255578063973cdc7814610268578063a1308f271461027b578063afb9992814610284578063b206b5691461029757600080fd5b80632fe7e441116101155780632fe7e441146101d057806341dcea91146101d95780634fd9efc4146101675780635d63f6c61461020957806389f12ed9146102175780638d9776721461022857600080fd5b806302a4dca01461015257806305261aea146101675780630bb75b451461017a57806322f3e2d4146101a05780632b086648146101bd575b600080fd5b610165610160366004610fac565b610377565b005b610165610175366004610fac565b6103d7565b61018d610188366004611080565b6103f0565b6040519081526020015b60405180910390f35b6004546101ad9060ff1681565b6040519015158152602001610197565b6101656101cb3660046110eb565b6105c9565b61018d60025481565b6004546101f19061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610197565b610165610175366004611128565b6001546001600160a01b03166101f1565b61023b610236366004610fac565b610809565b604051610197969594939291906111ea565b6101f16108e7565b6007546101f1906001600160a01b031681565b6101ad61027636600461122c565b610962565b61018d60035481565b610165610292366004611258565b6109a8565b6102d36102a536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290206001015460ff1690565b60405161019791906112c2565b61018d6102ee3660046112ea565b610a52565b6000546001600160a01b03166101f1565b61016561031236600461127c565b610cb1565b61018d61032536600461127c565b60009182526008602090815260408084206001600160a01b0393909316845291905290205490565b60055461018d9081565b61036a610365366004610fac565b610e4e565b6040516101979190611341565b60045461010090046001600160a01b031633146103d25760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b60004282116104335760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b60008451116104545760405162461bcd60e51b81526004016103c9906113a3565b600061045f60055490565b6040805160c0810182524281526001600160a01b03808b16602083019081529282018a8152606083018a8152608084018a905260a08401899052600680546001810182556000829052855191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825595517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4087018054919095166001600160a01b03199091161790935590517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610568908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516105b792919061150c565b60405180910390a19695505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610635919061152d565b6106515760405162461bcd60e51b81526004016103c99061154f565b426006868154811061066557610665611574565b906000526020600020906006020160040154116106bb5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016103c9565b60008351116106dc5760405162461bcd60e51b81526004016103c9906113a3565b600554851061071c5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016103c9565b836006868154811061073057610730611574565b906000526020600020906006020160020181905550826006868154811061075957610759611574565b90600052602060002090600602016003019081610776919061144c565b50816006868154811061078b5761078b611574565b90600052602060002090600602016004018190555080600686815481106107b4576107b4611574565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a1685846040516107fa92919061150c565b60405180910390a15050505050565b6006818154811061081957600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190610858906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610884906113c3565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d919061158a565b905090565b6000600360008381526008602090815260408083206001600160a01b038816845290915290206001015460ff1660038111156109a0576109a06112ac565b149392505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a14919061152d565b610a305760405162461bcd60e51b81526004016103c99061154f565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf919061152d565b610adb5760405162461bcd60e51b81526004016103c99061154f565b428211610b1c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420656e644461746560881b60448201526064016103c9565b6000845111610b3d5760405162461bcd60e51b81526004016103c9906113a3565b6000610b4860055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a08301889052600680546001810182556000829052845191027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825594517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40860180546001600160a01b03929092166001600160a01b031990921691909117905591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4185015551939450909290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d420190610c51908261144c565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628186604051610ca092919061150c565b60405180910390a195945050505050565b6007546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c79206f6666636861696e2076657269666965722e00000000000000000060448201526064016103c9565b4260068381548110610d1f57610d1f611574565b9060005260206000209060060201600401541115610d715760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016103c9565b4260068381548110610d8557610d85611574565b9060005260206000209060060201600501541015610dda5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016103c9565b60008281526008602090815260408083206001600160a01b0385168085529083529281902060018101805460ff1916600317905542905580518581529182019290925281517fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da929181900390910190a15050565b610e906040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60068281548110610ea357610ea3611574565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054610f0f906113c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3b906113c3565b8015610f885780601f10610f5d57610100808354040283529160200191610f88565b820191906000526020600020905b815481529060010190602001808311610f6b57829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b600060208284031215610fbe57600080fd5b5035919050565b6001600160a01b0381168114610fda57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261100457600080fd5b813567ffffffffffffffff8082111561101f5761101f610fdd565b604051601f8301601f19908116603f0116810190828211818310171561104757611047610fdd565b8160405283815286602085880101111561106057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561109857600080fd5b85356110a381610fc5565b945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b6110d288828901610ff3565b9598949750949560608101359550608001359392505050565b600080600080600060a0868803121561110357600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156110c657600080fd5b60008060006040848603121561113d57600080fd5b83359250602084013567ffffffffffffffff8082111561115c57600080fd5b818601915086601f83011261117057600080fd5b81358181111561117f57600080fd5b87602082850101111561119157600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156111ca576020818501810151868301820152016111ae565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c06060820152600061121760c08301866111a4565b60808301949094525060a00152949350505050565b6000806040838503121561123f57600080fd5b823561124a81610fc5565b946020939093013593505050565b60006020828403121561126a57600080fd5b813561127581610fc5565b9392505050565b6000806040838503121561128f57600080fd5b8235915060208301356112a181610fc5565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600483106112e457634e487b7160e01b600052602160045260246000fd5b91905290565b6000806000806080858703121561130057600080fd5b84359350602085013567ffffffffffffffff81111561131e57600080fd5b61132a87828801610ff3565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c0608084015261138360e08401826111a4565b9050608084015160a084015260a084015160c08401528091505092915050565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806113d757607f821691505b6020821081036113f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144757600081815260208120601f850160051c810160208610156114245750805b601f850160051c820191505b8181101561144357828155600101611430565b5050505b505050565b815167ffffffffffffffff81111561146657611466610fdd565b61147a8161147484546113c3565b846113fd565b602080601f8311600181146114af57600084156114975750858301515b600019600386901b1c1916600185901b178555611443565b600085815260208120601f198616915b828110156114de578886015182559484019460019091019084016114bf565b50858210156114fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061152560408301846111a4565b949350505050565b60006020828403121561153f57600080fd5b8151801515811461127557600080fd5b6020808252600b908201526a27b7363c9030b236b4b71760a91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159c57600080fd5b815161127581610fc556fea264697066735822122096627b396844e9458314a8b23823d5141ce1c4fd426d2d50e94b4b0c8be46c6264736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4372656174656420706c7567696e20646566696e6974696e696f6e204944202d2d2d203a2020657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220b7ea2eefe9c91f30c37b1972f158bb7ca5df8ce79d9a361b3b0f368d44838b0b64736f6c63430008130033", + "sourceMap": "467:1832:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;696:869:129;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;1571:726:129:-;;;:::i;2592:140:72:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5504:14:134;;5497:22;5479:41;;5467:2;5452:18;1819:584:65;5339:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;5972:51:134;3476:66:127;;3487:3;;;;;:23;;5945:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;696:869:129:-;739:13;:11;:13::i;:::-;803:4;;769:40;;-1:-1:-1;;;;;803:4:129;;;;769:40;;;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;769:40:129;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;763:3:129;:46;;-1:-1:-1;;;;;;763:46:129;-1:-1:-1;;;;;763:46:129;;;;;;;;;819:47;;;-1:-1:-1;;;819:47:129;;;;;6528:51:134;;;;6595:18;;;6588:30;6654:2;6634:18;;;6627:30;-1:-1:-1;;;6673:18:134;;;6666:51;-1:-1:-1;;;;;;;;;;;819:8:129;;;6734:19:134;;819:47:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:3;;;;;;;;;-1:-1:-1;;;;;898:3:129;-1:-1:-1;;;;;898:26:129;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;877:6;:50;;-1:-1:-1;;;;;;877:50:129;-1:-1:-1;;;;;877:50:129;;;;;;;;;937:40;;;-1:-1:-1;;;937:40:129;;;;;6976:51:134;;;;7043:18;;;7036:30;7102:2;7082:18;;;7075:30;-1:-1:-1;;;7121:18:134;;;7114:41;-1:-1:-1;;;;;;;;;;;937:8:129;;;7172:19:134;;937:40:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1040:4:129;;1047:16;;1001:64;;-1:-1:-1;;;;;1040:4:129;;;;-1:-1:-1;1047:16:129;;;-1:-1:-1;1001:64:129;;;:::i;:::-;-1:-1:-1;;;;;7432:15:134;;;7414:34;;7484:15;;7479:2;7464:18;;7457:43;7364:2;7349:18;1001:64:129;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:10:129;:77;;-1:-1:-1;;;;;;988:77:129;-1:-1:-1;;;;;988:77:129;;;;;;;;;1075:44;;;-1:-1:-1;;;1075:44:129;;;;;7723:51:134;;;;7790:18;;;7783:30;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:134;;;7861:41;-1:-1:-1;;;;;;;;;;;1075:8:129;;;7919:19:134;;1075:44:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1176:2:129;;1167:12;;-1:-1:-1;;;1167:12:129;;-1:-1:-1;;;;;1176:2:129;;;1167:12;;;5972:51:134;1130:26:129;;-1:-1:-1;;;;;;;;;;;;1167:8:129;-1:-1:-1;1167:8:129;;5945:18:134;;1167:12:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1230:3:129;;1262:2;;1230:84;;-1:-1:-1;;;1230:84:129;;1189:26;;-1:-1:-1;;;;;;1230:3:129;;;;-1:-1:-1;1230:23:129;;:84;;1262:2;;1189:26;;1230:3;;1304:9;;1230:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1189:125;;1325:73;;;;;;;;;;;;;;;;;;1379:18;1325:11;:73::i;:::-;1417:2;;1408:12;;-1:-1:-1;;;1408:12:129;;-1:-1:-1;;;;;1417:2:129;;;1408:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1408:8:129;;;5945:18:134;;1408:12:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1430:3:129;;1457:10;;1430:59;;-1:-1:-1;;;1430:59:129;;-1:-1:-1;;;;;1457:10:129;;;1430:59;;;9462:51:134;9529:18;;;9522:34;;;1430:3:129;;;-1:-1:-1;1430:18:129;;-1:-1:-1;9435:18:134;;1430:59:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1515:3:129;;1546:10;;1515:43;;-1:-1:-1;;;1515:43:129;;-1:-1:-1;;;;;1546:10:129;;;1515:43;;;5972:51:134;1515:3:129;;;-1:-1:-1;1515:22:129;;-1:-1:-1;5945:18:134;;1515:43:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1500:12;:58;-1:-1:-1;;696:869:129:o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:726:129;1626:2;;1617:12;;-1:-1:-1;;;1617:12:129;;-1:-1:-1;;;;;1626:2:129;;;1617:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1617:8:129;;;5945:18:134;;1617:12:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1639:32:129;;-1:-1:-1;;;1639:32:129;;10153:2:134;1639:32:129;;;10135:21:134;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:134;;;10204:43;-1:-1:-1;;;;;;;;;;;1639:15:129;-1:-1:-1;1639:15:129;;-1:-1:-1;10264:18:134;;1639:32:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1681:3:129;;:19;;-1:-1:-1;;;1681:19:129;;:3;:19;;;5479:41:134;-1:-1:-1;;;;;1681:3:129;;;;-1:-1:-1;1681:13:129;;-1:-1:-1;5452:18:134;;1681:19:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1725:2:129;;1711:17;;-1:-1:-1;;;1711:17:129;;-1:-1:-1;;;;;1725:2:129;;;1711:17;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1711:13:129;-1:-1:-1;1711:13:129;;-1:-1:-1;5945:18:134;;1711:17:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1758:9;1763:3;1758:4;:9::i;:::-;1778:57;;-1:-1:-1;;;1778:57:129;;10494:2:134;1778:57:129;;;10476:21:134;10533:2;10513:18;;;10506:30;10572:34;10552:18;;;10545:62;-1:-1:-1;;;10623:18:134;;;10616:36;-1:-1:-1;;;;;;;;;;;1778:15:129;;;10669:19:134;;1778:57:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1845:3:129;;:19;;-1:-1:-1;;;1845:19:129;;:3;:19;;;5479:41:134;-1:-1:-1;;;;;1845:3:129;;;;-1:-1:-1;1845:13:129;;-1:-1:-1;5452:18:134;;1845:19:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1893:6:129;;1875:15;;-1:-1:-1;;;;;;1893:6:129;;-1:-1:-1;1893:13:129;:6;1920:20;:15;1938:2;1920:20;:::i;:::-;1893:51;;-1:-1:-1;;;;;;1893:51:129;;;;;;;;;;11210:25:134;;;;11271:3;11251:18;;;11244:31;11312:1;11291:19;;;11284:30;-1:-1:-1;;;11330:19:134;;;11323:37;11412:18;;;11405:34;1942:1:129;11455:18:134;;;11448:34;11377:19;;1893:51:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1875:69;;1954:39;1965:7;1976:1;1965:12;;1954:39;;;;;;;;;;;;;-1:-1:-1;;;1954:39:129;;;:10;:39::i;:::-;2004:53;;-1:-1:-1;;;2004:53:129;;11694:2:134;2004:53:129;;;11676:21:134;11733:2;11713:18;;;11706:30;11772:34;11752:18;;;11745:62;-1:-1:-1;;;11823:18:134;;;11816:32;-1:-1:-1;;;;;;;;;;;2004:15:129;;;11865:19:134;;2004:53:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2067:3:129;;:19;;-1:-1:-1;;;2067:19:129;;:3;:19;;;5479:41:134;-1:-1:-1;;;;;2067:3:129;;;;-1:-1:-1;2067:13:129;;-1:-1:-1;5452:18:134;;2067:19:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2097:25;2109:12;;2097:11;:25::i;:::-;2132:6;;2159:12;;2132:59;;-1:-1:-1;;;2132:59:129;;;;;12135:25:134;;;12176:18;;;12169:34;;;;12239:2;12219:18;;;12212:30;12278:2;12258:18;;;12251:30;-1:-1:-1;;;12297:19:134;;;12290:46;-1:-1:-1;;;;;2132:6:129;;;;:17;;12353:19:134;;2132:59:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2202:3:129;;:19;;-1:-1:-1;;;2202:19:129;;:3;:19;;;5479:41:134;-1:-1:-1;;;;;2202:3:129;;;;-1:-1:-1;2202:13:129;;-1:-1:-1;5452:18:134;;2202:19:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2255:6:129;;:35;;-1:-1:-1;;;2255:35:129;;:6;:35;;;12551:41:134;12608:18;;;12601:34;;;-1:-1:-1;;;;;2255:6:129;;;;-1:-1:-1;2255:20:129;;-1:-1:-1;12524:18:134;;2255:35:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:690;1571:726::o;2592:140:72:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;9462:51:134;;;-1:-1:-1;;;9529:18:134;;;9522:34;2196:43:65;;;;;;;;;9435:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;14269:51:134;;;;14336:18;;;14329:30;14395:1;14375:18;;;14368:29;-1:-1:-1;;;14413:18:134;;;14406:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;14461:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;14703:51:134;;;;14770:18;;;14763:30;14829:1;14809:18;;;14802:29;-1:-1:-1;;;14847:18:134;;;14840:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;14895:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;15137:51:134;;;;15204:18;;;15197:30;15263:1;15243:18;;;15236:29;-1:-1:-1;;;15281:18:134;;;15274:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;15329:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;15571:51:134;15638:18;;;15631:30;15697:2;15677:18;;;15670:30;-1:-1:-1;;;15716:18:134;;;15709:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;15768:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;5945:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;16010:51:134;;;;16077:18;;;16070:30;16136:2;16116:18;;;16109:30;-1:-1:-1;;;16155:18:134;;;16148:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;16205:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;16447:51:134;;;;16514:18;;;16507:30;16573:1;16553:18;;;16546:29;-1:-1:-1;;;16591:18:134;;;16584:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;16640:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;5972:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;5945:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;16882:51:134;;;;16949:18;;;16942:30;17008:1;16988:18;;;16981:29;-1:-1:-1;;;17026:18:134;;;17019:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;17072:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;17314:51:134;;;;17381:18;;;17374:30;17440:2;17420:18;;;17413:30;-1:-1:-1;;;17459:18:134;;;17452:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;17509:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;17751:51:134;;;;17818:18;;;17811:30;17877:2;17857:18;;;17850:30;-1:-1:-1;;;17896:18:134;;;17889:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;17951:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;18193:51:134;;;;18260:18;;;18253:30;18319:2;18299:18;;;18292:30;-1:-1:-1;;;18338:18:134;;;18331:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;18393:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;5972:51:134;;;;2573:3:127;;;;:22;;5945:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;18710:15:134;;;18692:34;;18762:15;;;18757:2;18742:18;;18735:43;18814:15;;;18809:2;18794:18;;18787:43;18866:15;;;18861:2;18846:18;;18839:43;18641:3;18626:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;19105:51:134;;;;19172:18;;;19165:30;19231:2;19211:18;;;19204:30;-1:-1:-1;;;19250:18:134;;;19243:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;19303:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;19589:25:134;;;19650:2;19630:18;;;19623:30;19689:2;19669:18;;;19662:30;-1:-1:-1;;;19708:19:134;;;19701:42;19795:18;;;19788:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;19760:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;6548:139:80;6612:68;6672:2;6676;6628:51;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6628:51:80;;;;;;;;;;;;;;-1:-1:-1;;;;;6628:51:80;-1:-1:-1;;;6628:51:80;;;6612:15;:68::i;24604:93:70:-;-1:-1:-1;;;;;;;;;;;24659:7:70;24667:22;24685:4;24667:15;:22;:::i;:::-;24659:31;;;;;;;;;;;;;20275:25:134;;20263:2;20248:18;;20129:177;5514:110:80;5560:57;5613:2;5576:40;;;;;;20275:25:134;;20263:2;20248:18;;20129:177;5576:40:80;;;;-1:-1:-1;;5576:40:80;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:40:80;-1:-1:-1;;;5576:40:80;;;5560:15;:57::i;:::-;5514:110;:::o;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;20513:2:134;20495:21;;;20552:2;20532:18;;;20525:30;20591:25;20586:2;20571:18;;20564:53;20649:2;20634:18;;20311:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;181:376:80:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;2409:432:65:-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;20865:51:134;;;-1:-1:-1;;;20932:18:134;;;20925:34;;;;2712:4:65;20975:18:134;;;20968:34;2489:11:65;;1671:64;2586:43;;20838:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:134;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:134:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;7949:1145;8360:1;8356;8351:3;8347:11;8343:19;8335:6;8331:32;8320:9;8313:51;8294:4;8383:2;8421:3;8416:2;8405:9;8401:18;8394:31;8462:2;8456:3;8445:9;8441:19;8434:31;8502:26;8496:3;8485:9;8481:19;8474:55;8564:3;8553:9;8549:19;8604:6;8599:2;8588:9;8584:18;8577:34;8661:6;8654:14;8647:22;8642:2;8631:9;8627:18;8620:50;8707:3;8701;8690:9;8686:19;8679:32;8731:3;8763:6;8757:13;8791:6;8786:3;8779:19;8829:3;8818:9;8814:19;8807:26;;8868:2;8860:6;8856:15;8842:29;;8889:1;8899:169;8913:6;8910:1;8907:13;8899:169;;;8974:13;;8962:26;;9043:15;;;;9008:12;;;;8935:1;8928:9;8899:169;;;-1:-1:-1;9085:3:134;;7949:1145;-1:-1:-1;;;;;;;;;7949:1145:134:o;9099:184::-;9169:6;9222:2;9210:9;9201:7;9197:23;9193:32;9190:52;;;9238:1;9235;9228:12;9190:52;-1:-1:-1;9261:16:134;;9099:184;-1:-1:-1;9099:184:134:o;9567:380::-;9646:1;9642:12;;;;9689;;;9710:61;;9764:4;9756:6;9752:17;9742:27;;9710:61;9817:2;9809:6;9806:14;9786:18;9783:38;9780:161;;9863:10;9858:3;9854:20;9851:1;9844:31;9898:4;9895:1;9888:15;9926:4;9923:1;9916:15;9780:161;;9567:380;;;:::o;10699:222::-;10764:9;;;10785:10;;;10782:133;;;10837:10;10832:3;10828:20;10825:1;10818:31;10872:4;10869:1;10862:15;10900:4;10897:1;10890:15;10782:133;10699:222;;;;:::o;12925:384::-;-1:-1:-1;;;;;;13110:33:134;;13098:46;;13167:13;;13080:3;;13189:74;13167:13;13252:1;13243:11;;13236:4;13224:17;;13189:74;:::i;:::-;13283:16;;;;13301:1;13279:24;;12925:384;-1:-1:-1;;;12925:384:134:o;13314:287::-;13443:3;13481:6;13475:13;13497:66;13556:6;13551:3;13544:4;13536:6;13532:17;13497:66;:::i;:::-;13579:16;;;;;13314:287;-1:-1:-1;;13314:287:134:o;13606:446::-;13856:2;13845:9;13838:21;13895:1;13890:2;13879:9;13875:18;13868:29;-1:-1:-1;;;13928:2:134;13917:9;13913:18;13906:35;13979:3;13972:4;13961:9;13957:20;13950:33;13819:4;14000:46;14041:3;14030:9;14026:19;14018:6;14000:46;:::i;19833:291::-;20010:2;19999:9;19992:21;19973:4;20030:45;20071:2;20060:9;20056:18;20048:6;20030:45;:::i;:::-;20022:53;;20111:6;20106:2;20095:9;20091:18;20084:34;19833:291;;;;;:::o", "linkReferences": {} }, "methodIdentifiers": { @@ -591,7 +591,7 @@ "testActivateQuest()": "6c719a02", "testAreDeployedContracts()": "00036032" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testActivateQuest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/QuestOnboardPlugin.t.sol\":\"TestQuestPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/quests/QuestsModule.sol\":{\"keccak256\":\"0xa4ac7312158965b3017c398895f754e5b8c8694b5611cc1121a7e961f5a1fd31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d9f35617c7657dcf06cdd732a16fade644a2f4603448b45460dad7e6a0d0458\",\"dweb:/ipfs/QmbkbTn71NKhgeE7pNzFtvtoHMpTxp3rZ84XkjkfaPjSgp\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/onboarding/QuestOnboardingPlugin.sol\":{\"keccak256\":\"0xbf9edbc2de07394a121b867dd3a0dc9ba1a527b9b44b07a948bceec415bda9ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af33e911246451057e3ecb43601d4bdecb1943e436b95ef6b7569e4c91c97258\",\"dweb:/ipfs/QmahBMB1VyLLHnR7BGPsMY3XGEor5nsREsjJK5L6XfCMFd\"]},\"contracts/plugins/quests/QuestPlugin.sol\":{\"keccak256\":\"0xd8c774ced9e28d3021133da06b23c82680bf81eafd2ebddd2737c23d7738a5f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://894fc9884e3140270342885c4a6e1fcd2e167322f07f695dcd7b6aced0674435\",\"dweb:/ipfs/QmTTzjm1hBU2wbC2HopBXynPVav1tbzbdqF8RyD2pbqwAn\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol\":{\"keccak256\":\"0xe1629227456959c713bc4f50cfbe6b433ec18d4bfc61777670a2d883d7d21323\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d34b0ae318417551e8e855129d93e2f430645b8e0c2ee2d552e1f9dc169292\",\"dweb:/ipfs/QmVqp1U5P13LEEMsrRooeAsv2C8cLpUPzzXt9YcEmEuDLa\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/QuestOnboardPlugin.t.sol\":{\"keccak256\":\"0x1bb7540b68e80b160d486413ae54ea5da6b0d44abe41991dae1a7a9160842f9e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a6833c83eb045c6109ce59f98615778947940902a2049adcdc2a9d02c78d3557\",\"dweb:/ipfs/QmdXo9MrHdkxvPNFA3Hx1FFDEzFXsbF7GkucAnnVX7TG5o\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testActivateQuest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/QuestOnboardPlugin.t.sol\":\"TestQuestPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/quests/QuestsModule.sol\":{\"keccak256\":\"0xa4ac7312158965b3017c398895f754e5b8c8694b5611cc1121a7e961f5a1fd31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d9f35617c7657dcf06cdd732a16fade644a2f4603448b45460dad7e6a0d0458\",\"dweb:/ipfs/QmbkbTn71NKhgeE7pNzFtvtoHMpTxp3rZ84XkjkfaPjSgp\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/onboarding/QuestOnboardingPlugin.sol\":{\"keccak256\":\"0xbf9edbc2de07394a121b867dd3a0dc9ba1a527b9b44b07a948bceec415bda9ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af33e911246451057e3ecb43601d4bdecb1943e436b95ef6b7569e4c91c97258\",\"dweb:/ipfs/QmahBMB1VyLLHnR7BGPsMY3XGEor5nsREsjJK5L6XfCMFd\"]},\"contracts/plugins/quests/QuestPlugin.sol\":{\"keccak256\":\"0xd8c774ced9e28d3021133da06b23c82680bf81eafd2ebddd2737c23d7738a5f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://894fc9884e3140270342885c4a6e1fcd2e167322f07f695dcd7b6aced0674435\",\"dweb:/ipfs/QmTTzjm1hBU2wbC2HopBXynPVav1tbzbdqF8RyD2pbqwAn\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol\":{\"keccak256\":\"0xe1629227456959c713bc4f50cfbe6b433ec18d4bfc61777670a2d883d7d21323\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71d34b0ae318417551e8e855129d93e2f430645b8e0c2ee2d552e1f9dc169292\",\"dweb:/ipfs/QmVqp1U5P13LEEMsrRooeAsv2C8cLpUPzzXt9YcEmEuDLa\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/QuestOnboardPlugin.t.sol\":{\"keccak256\":\"0x1bb7540b68e80b160d486413ae54ea5da6b0d44abe41991dae1a7a9160842f9e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a6833c83eb045c6109ce59f98615778947940902a2049adcdc2a9d02c78d3557\",\"dweb:/ipfs/QmdXo9MrHdkxvPNFA3Hx1FFDEzFXsbF7GkucAnnVX7TG5o\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1234,6 +1234,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1298,6 +1306,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1427,10 +1443,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1975,34 +1991,34 @@ }, "ast": { "absolutePath": "test/QuestOnboardPlugin.t.sol", - "id": 71359, + "id": 72145, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "OffchainVerifiedTaskPlugin": [ - 9356 + 10107 ], "QuestOnboardingPlugin": [ - 7643 + 8394 ], "QuestPlugin": [ - 8675 + 9426 ], "TestQuestPlugin": [ - 71358 + 72144 ], "console": [ - 32435 + 33186 ] }, "nodeType": "SourceUnit", - "src": "39:2261:116", + "src": "39:2261:129", "nodes": [ { - "id": 71096, + "id": 71882, "nodeType": "PragmaDirective", - "src": "39:23:116", + "src": "39:23:129", "nodes": [], "literals": [ "solidity", @@ -2011,24 +2027,24 @@ ] }, { - "id": 71098, + "id": 71884, "nodeType": "ImportDirective", - "src": "64:48:116", + "src": "64:48:129", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 71359, - "sourceUnit": 70241, + "scope": 72145, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 71097, + "id": 71883, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:116", + "referencedDeclaration": 71026, + "src": "72:11:129", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2037,24 +2053,24 @@ "unitAlias": "" }, { - "id": 71100, + "id": 71886, "nodeType": "ImportDirective", - "src": "114:96:116", + "src": "114:96:129", "nodes": [], "absolutePath": "contracts/plugins/onboarding/QuestOnboardingPlugin.sol", "file": "../contracts/plugins/onboarding/QuestOnboardingPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 71359, - "sourceUnit": 7644, + "scope": 72145, + "sourceUnit": 8395, "symbolAliases": [ { "foreign": { - "id": 71099, + "id": 71885, "name": "QuestOnboardingPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7643, - "src": "122:21:116", + "referencedDeclaration": 8394, + "src": "122:21:129", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2063,24 +2079,24 @@ "unitAlias": "" }, { - "id": 71102, + "id": 71888, "nodeType": "ImportDirective", - "src": "211:72:116", + "src": "211:72:129", "nodes": [], "absolutePath": "contracts/plugins/quests/QuestPlugin.sol", "file": "../contracts/plugins/quests/QuestPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 71359, - "sourceUnit": 8676, + "scope": 72145, + "sourceUnit": 9427, "symbolAliases": [ { "foreign": { - "id": 71101, + "id": 71887, "name": "QuestPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8675, - "src": "219:11:116", + "referencedDeclaration": 9426, + "src": "219:11:129", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2089,24 +2105,24 @@ "unitAlias": "" }, { - "id": 71104, + "id": 71890, "nodeType": "ImportDirective", - "src": "285:101:116", + "src": "285:101:129", "nodes": [], "absolutePath": "contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol", "file": "../contracts/plugins/tasks/OffchainVerifiedTaskPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 71359, - "sourceUnit": 9357, + "scope": 72145, + "sourceUnit": 10108, "symbolAliases": [ { "foreign": { - "id": 71103, + "id": 71889, "name": "OffchainVerifiedTaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 9356, - "src": "293:26:116", + "referencedDeclaration": 10107, + "src": "293:26:129", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2115,147 +2131,147 @@ "unitAlias": "" }, { - "id": 71105, + "id": 71891, "nodeType": "ImportDirective", - "src": "387:31:116", + "src": "387:31:129", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 71359, - "sourceUnit": 32436, + "scope": 72145, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 71358, + "id": 72144, "nodeType": "ContractDefinition", - "src": "467:1832:116", + "src": "467:1832:129", "nodes": [ { - "id": 71110, + "id": 71896, "nodeType": "VariableDeclaration", - "src": "513:25:116", + "src": "513:25:129", "nodes": [], "constant": false, "mutability": "mutable", "name": "QOP", - "nameLocation": "535:3:116", - "scope": 71358, + "nameLocation": "535:3:129", + "scope": 72144, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" }, "typeName": { - "id": 71109, + "id": 71895, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71108, + "id": 71894, "name": "QuestOnboardingPlugin", "nameLocations": [ - "513:21:116" + "513:21:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7643, - "src": "513:21:116" + "referencedDeclaration": 8394, + "src": "513:21:129" }, - "referencedDeclaration": 7643, - "src": "513:21:116", + "referencedDeclaration": 8394, + "src": "513:21:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, "visibility": "internal" }, { - "id": 71113, + "id": 71899, "nodeType": "VariableDeclaration", - "src": "544:18:116", + "src": "544:18:129", "nodes": [], "constant": false, "mutability": "mutable", "name": "QuestP", - "nameLocation": "556:6:116", - "scope": 71358, + "nameLocation": "556:6:129", + "scope": 72144, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" }, "typeName": { - "id": 71112, + "id": 71898, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71111, + "id": 71897, "name": "QuestPlugin", "nameLocations": [ - "544:11:116" + "544:11:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 8675, - "src": "544:11:116" + "referencedDeclaration": 9426, + "src": "544:11:129" }, - "referencedDeclaration": 8675, - "src": "544:11:116", + "referencedDeclaration": 9426, + "src": "544:11:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, "visibility": "internal" }, { - "id": 71116, + "id": 71902, "nodeType": "VariableDeclaration", - "src": "568:37:116", + "src": "568:37:129", "nodes": [], "constant": false, "mutability": "mutable", "name": "TaskPlugin", - "nameLocation": "595:10:116", - "scope": 71358, + "nameLocation": "595:10:129", + "scope": 72144, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" }, "typeName": { - "id": 71115, + "id": 71901, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71114, + "id": 71900, "name": "OffchainVerifiedTaskPlugin", "nameLocations": [ - "568:26:116" + "568:26:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 9356, - "src": "568:26:116" + "referencedDeclaration": 10107, + "src": "568:26:129" }, - "referencedDeclaration": 9356, - "src": "568:26:116", + "referencedDeclaration": 10107, + "src": "568:26:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } }, "visibility": "internal" }, { - "id": 71122, + "id": 71908, "nodeType": "VariableDeclaration", - "src": "612:51:116", + "src": "612:51:129", "nodes": [], "constant": false, "mutability": "mutable", "name": "offchainVerifier", - "nameLocation": "620:16:116", - "scope": 71358, + "nameLocation": "620:16:129", + "scope": 72144, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2263,10 +2279,10 @@ "typeString": "address" }, "typeName": { - "id": 71117, + "id": 71903, "name": "address", "nodeType": "ElementaryTypeName", - "src": "612:7:116", + "src": "612:7:129", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2277,14 +2293,14 @@ "arguments": [ { "hexValue": "323536313238323536313238303030", - "id": 71120, + "id": 71906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "647:15:116", + "src": "647:15:129", "typeDescriptions": { "typeIdentifier": "t_rational_256128256128000_by_1", "typeString": "int_const 256128256128000" @@ -2299,26 +2315,26 @@ "typeString": "int_const 256128256128000" } ], - "id": 71119, + "id": 71905, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "639:7:116", + "src": "639:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71118, + "id": 71904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "639:7:116", + "src": "639:7:129", "typeDescriptions": {} } }, - "id": 71121, + "id": 71907, "isConstant": false, "isLValue": false, "isPure": true, @@ -2327,7 +2343,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "639:24:116", + "src": "639:24:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2337,15 +2353,15 @@ "visibility": "internal" }, { - "id": 71124, + "id": 71910, "nodeType": "VariableDeclaration", - "src": "669:20:116", + "src": "669:20:129", "nodes": [], "constant": false, "mutability": "mutable", "name": "taskPluginId", - "nameLocation": "677:12:116", - "scope": 71358, + "nameLocation": "677:12:129", + "scope": 72144, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2353,10 +2369,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71123, + "id": 71909, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "669:7:116", + "src": "669:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2365,14 +2381,14 @@ "visibility": "internal" }, { - "id": 71254, + "id": 72040, "nodeType": "FunctionDefinition", - "src": "696:869:116", + "src": "696:869:129", "nodes": [], "body": { - "id": 71253, + "id": 72039, "nodeType": "Block", - "src": "729:836:116", + "src": "729:836:129", "nodes": [], "statements": [ { @@ -2381,33 +2397,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71128, + "id": 71914, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "739:5:116", + "src": "739:5:129", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_TestQuestPlugin_$71358_$", + "typeIdentifier": "t_type$_t_super$_TestQuestPlugin_$72144_$", "typeString": "type(contract super TestQuestPlugin)" } }, - "id": 71130, + "id": 71916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "745:5:116", + "memberLocation": "745:5:129", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "739:11:116", + "referencedDeclaration": 70929, + "src": "739:11:129", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 71131, + "id": 71917, "isConstant": false, "isLValue": false, "isPure": false, @@ -2416,33 +2432,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "739:13:116", + "src": "739:13:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71132, + "id": 71918, "nodeType": "ExpressionStatement", - "src": "739:13:116" + "src": "739:13:129" }, { "expression": { - "id": 71142, + "id": 71928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71133, + "id": 71919, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "763:3:116", + "referencedDeclaration": 71896, + "src": "763:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, @@ -2453,14 +2469,14 @@ { "arguments": [ { - "id": 71139, + "id": 71925, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "803:4:116", + "referencedDeclaration": 70573, + "src": "803:4:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2468,30 +2484,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71138, + "id": 71924, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "795:7:116", + "src": "795:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71137, + "id": 71923, "name": "address", "nodeType": "ElementaryTypeName", - "src": "795:7:116", + "src": "795:7:129", "typeDescriptions": {} } }, - "id": 71140, + "id": 71926, "isConstant": false, "isLValue": false, "isPure": false, @@ -2500,7 +2516,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "795:13:116", + "src": "795:13:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2515,39 +2531,39 @@ "typeString": "address" } ], - "id": 71136, + "id": 71922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "769:25:116", + "src": "769:25:129", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_QuestOnboardingPlugin_$7643_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_QuestOnboardingPlugin_$8394_$", "typeString": "function (address) returns (contract QuestOnboardingPlugin)" }, "typeName": { - "id": 71135, + "id": 71921, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71134, + "id": 71920, "name": "QuestOnboardingPlugin", "nameLocations": [ - "773:21:116" + "773:21:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7643, - "src": "773:21:116" + "referencedDeclaration": 8394, + "src": "773:21:129" }, - "referencedDeclaration": 7643, - "src": "773:21:116", + "referencedDeclaration": 8394, + "src": "773:21:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } } }, - "id": 71141, + "id": 71927, "isConstant": false, "isLValue": false, "isPure": false, @@ -2556,22 +2572,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "769:40:116", + "src": "769:40:129", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "src": "763:46:116", + "src": "763:46:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71143, + "id": 71929, "nodeType": "ExpressionStatement", - "src": "763:46:116" + "src": "763:46:129" }, { "expression": { @@ -2579,14 +2595,14 @@ { "arguments": [ { - "id": 71149, + "id": 71935, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "836:3:116", + "referencedDeclaration": 71896, + "src": "836:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } } @@ -2594,30 +2610,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } ], - "id": 71148, + "id": 71934, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "828:7:116", + "src": "828:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71147, + "id": 71933, "name": "address", "nodeType": "ElementaryTypeName", - "src": "828:7:116", + "src": "828:7:129", "typeDescriptions": {} } }, - "id": 71150, + "id": 71936, "isConstant": false, "isLValue": false, "isPure": false, @@ -2626,7 +2642,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "828:12:116", + "src": "828:12:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2635,14 +2651,14 @@ }, { "hexValue": "51756573744f6e626f617264696e67506c7567696e", - "id": 71151, + "id": 71937, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "842:23:116", + "src": "842:23:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6ebb1a14885cf45a6aa379daa6f3c0dd54dd39a109718b3256a7999e1ced1344", "typeString": "literal_string \"QuestOnboardingPlugin\"" @@ -2662,33 +2678,33 @@ } ], "expression": { - "id": 71144, + "id": 71930, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "819:2:116", + "referencedDeclaration": 13541, + "src": "819:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71146, + "id": 71932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "822:5:116", + "memberLocation": "822:5:129", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "819:8:116", + "referencedDeclaration": 23909, + "src": "819:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71152, + "id": 71938, "isConstant": false, "isLValue": false, "isPure": false, @@ -2697,33 +2713,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "819:47:116", + "src": "819:47:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71153, + "id": 71939, "nodeType": "ExpressionStatement", - "src": "819:47:116" + "src": "819:47:129" }, { "expression": { - "id": 71160, + "id": 71946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71154, + "id": 71940, "name": "QuestP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71113, - "src": "877:6:116", + "referencedDeclaration": 71899, + "src": "877:6:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, @@ -2736,33 +2752,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71156, + "id": 71942, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "898:3:116", + "referencedDeclaration": 71896, + "src": "898:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71157, + "id": 71943, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "902:22:116", + "memberLocation": "902:22:129", "memberName": "getQuestsPluginAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7628, - "src": "898:26:116", + "referencedDeclaration": 8379, + "src": "898:26:129", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 71158, + "id": 71944, "isConstant": false, "isLValue": false, "isPure": false, @@ -2771,7 +2787,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "898:28:116", + "src": "898:28:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2786,18 +2802,18 @@ "typeString": "address" } ], - "id": 71155, + "id": 71941, "name": "QuestPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8675, - "src": "886:11:116", + "referencedDeclaration": 9426, + "src": "886:11:129", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_QuestPlugin_$8675_$", + "typeIdentifier": "t_type$_t_contract$_QuestPlugin_$9426_$", "typeString": "type(contract QuestPlugin)" } }, - "id": 71159, + "id": 71945, "isConstant": false, "isLValue": false, "isPure": false, @@ -2806,22 +2822,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "886:41:116", + "src": "886:41:129", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, - "src": "877:50:116", + "src": "877:50:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, - "id": 71161, + "id": 71947, "nodeType": "ExpressionStatement", - "src": "877:50:116" + "src": "877:50:129" }, { "expression": { @@ -2829,14 +2845,14 @@ { "arguments": [ { - "id": 71167, + "id": 71953, "name": "QuestP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71113, - "src": "954:6:116", + "referencedDeclaration": 71899, + "src": "954:6:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } } @@ -2844,30 +2860,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } ], - "id": 71166, + "id": 71952, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "946:7:116", + "src": "946:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71165, + "id": 71951, "name": "address", "nodeType": "ElementaryTypeName", - "src": "946:7:116", + "src": "946:7:129", "typeDescriptions": {} } }, - "id": 71168, + "id": 71954, "isConstant": false, "isLValue": false, "isPure": false, @@ -2876,7 +2892,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "946:15:116", + "src": "946:15:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2885,14 +2901,14 @@ }, { "hexValue": "5175657374506c7567696e", - "id": 71169, + "id": 71955, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "963:13:116", + "src": "963:13:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5e7af78a797a9bc7d35fc97dd751f098e5c970a4c133337766f308cdd8dbfb43", "typeString": "literal_string \"QuestPlugin\"" @@ -2912,33 +2928,33 @@ } ], "expression": { - "id": 71162, + "id": 71948, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "937:2:116", + "referencedDeclaration": 13541, + "src": "937:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71164, + "id": 71950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "940:5:116", + "memberLocation": "940:5:129", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "937:8:116", + "referencedDeclaration": 23909, + "src": "937:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71170, + "id": 71956, "isConstant": false, "isLValue": false, "isPure": false, @@ -2947,33 +2963,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "937:40:116", + "src": "937:40:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71171, + "id": 71957, "nodeType": "ExpressionStatement", - "src": "937:40:116" + "src": "937:40:129" }, { "expression": { - "id": 71182, + "id": 71968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71172, + "id": 71958, "name": "TaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71116, - "src": "988:10:116", + "referencedDeclaration": 71902, + "src": "988:10:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } }, @@ -2984,14 +3000,14 @@ { "arguments": [ { - "id": 71178, + "id": 71964, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1040:4:116", + "referencedDeclaration": 70573, + "src": "1040:4:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2999,30 +3015,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71177, + "id": 71963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1032:7:116", + "src": "1032:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71176, + "id": 71962, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1032:7:116", + "src": "1032:7:129", "typeDescriptions": {} } }, - "id": 71179, + "id": 71965, "isConstant": false, "isLValue": false, "isPure": false, @@ -3031,7 +3047,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1032:13:116", + "src": "1032:13:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3039,12 +3055,12 @@ } }, { - "id": 71180, + "id": 71966, "name": "offchainVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71122, - "src": "1047:16:116", + "referencedDeclaration": 71908, + "src": "1047:16:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3062,39 +3078,39 @@ "typeString": "address" } ], - "id": 71175, + "id": 71961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1001:30:116", + "src": "1001:30:129", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_OffchainVerifiedTaskPlugin_$9356_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_OffchainVerifiedTaskPlugin_$10107_$", "typeString": "function (address,address) returns (contract OffchainVerifiedTaskPlugin)" }, "typeName": { - "id": 71174, + "id": 71960, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71173, + "id": 71959, "name": "OffchainVerifiedTaskPlugin", "nameLocations": [ - "1005:26:116" + "1005:26:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 9356, - "src": "1005:26:116" + "referencedDeclaration": 10107, + "src": "1005:26:129" }, - "referencedDeclaration": 9356, - "src": "1005:26:116", + "referencedDeclaration": 10107, + "src": "1005:26:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } } }, - "id": 71181, + "id": 71967, "isConstant": false, "isLValue": false, "isPure": false, @@ -3103,22 +3119,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1001:64:116", + "src": "1001:64:129", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } }, - "src": "988:77:116", + "src": "988:77:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } }, - "id": 71183, + "id": 71969, "nodeType": "ExpressionStatement", - "src": "988:77:116" + "src": "988:77:129" }, { "expression": { @@ -3126,14 +3142,14 @@ { "arguments": [ { - "id": 71189, + "id": 71975, "name": "TaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71116, - "src": "1092:10:116", + "referencedDeclaration": 71902, + "src": "1092:10:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } } @@ -3141,30 +3157,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } ], - "id": 71188, + "id": 71974, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1084:7:116", + "src": "1084:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71187, + "id": 71973, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1084:7:116", + "src": "1084:7:129", "typeDescriptions": {} } }, - "id": 71190, + "id": 71976, "isConstant": false, "isLValue": false, "isPure": false, @@ -3173,7 +3189,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1084:19:116", + "src": "1084:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3182,14 +3198,14 @@ }, { "hexValue": "5461736b73506c7567696e", - "id": 71191, + "id": 71977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1105:13:116", + "src": "1105:13:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4e092f3235023fae958c57225ffc497b469f68bd6724c07615478a5052c378c3", "typeString": "literal_string \"TasksPlugin\"" @@ -3209,33 +3225,33 @@ } ], "expression": { - "id": 71184, + "id": 71970, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1075:2:116", + "referencedDeclaration": 13541, + "src": "1075:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71186, + "id": 71972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1078:5:116", + "memberLocation": "1078:5:129", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1075:8:116", + "referencedDeclaration": 23909, + "src": "1075:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71192, + "id": 71978, "isConstant": false, "isLValue": false, "isPure": false, @@ -3244,31 +3260,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1075:44:116", + "src": "1075:44:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71193, + "id": 71979, "nodeType": "ExpressionStatement", - "src": "1075:44:116" + "src": "1075:44:129" }, { "assignments": [ - 71198 + 71984 ], "declarations": [ { "constant": false, - "id": 71198, + "id": 71984, "mutability": "mutable", "name": "depmodrek", - "nameLocation": "1147:9:116", + "nameLocation": "1147:9:129", "nodeType": "VariableDeclaration", - "scope": 71253, - "src": "1130:26:116", + "scope": 72039, + "src": "1130:26:129", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3277,18 +3293,18 @@ }, "typeName": { "baseType": { - "id": 71196, + "id": 71982, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1130:7:116", + "src": "1130:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71197, + "id": 71983, "nodeType": "ArrayTypeName", - "src": "1130:9:116", + "src": "1130:9:129", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -3297,20 +3313,20 @@ "visibility": "internal" } ], - "id": 71199, + "id": 71985, "nodeType": "VariableDeclarationStatement", - "src": "1130:26:116" + "src": "1130:26:129" }, { "expression": { "arguments": [ { - "id": 71203, + "id": 71989, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1176:2:116", + "referencedDeclaration": 70587, + "src": "1176:2:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3325,33 +3341,33 @@ } ], "expression": { - "id": 71200, + "id": 71986, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1167:2:116", + "referencedDeclaration": 13541, + "src": "1167:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71202, + "id": 71988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1170:5:116", + "memberLocation": "1170:5:129", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1167:8:116", + "referencedDeclaration": 24720, + "src": "1167:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71204, + "id": 71990, "isConstant": false, "isLValue": false, "isPure": false, @@ -3360,31 +3376,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1167:12:116", + "src": "1167:12:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71205, + "id": 71991, "nodeType": "ExpressionStatement", - "src": "1167:12:116" + "src": "1167:12:129" }, { "assignments": [ - 71207 + 71993 ], "declarations": [ { "constant": false, - "id": 71207, + "id": 71993, "mutability": "mutable", "name": "pluginDefinitionID", - "nameLocation": "1197:18:116", + "nameLocation": "1197:18:129", "nodeType": "VariableDeclaration", - "scope": 71253, - "src": "1189:26:116", + "scope": 72039, + "src": "1189:26:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3392,10 +3408,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71206, + "id": 71992, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1189:7:116", + "src": "1189:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3404,18 +3420,18 @@ "visibility": "internal" } ], - "id": 71219, + "id": 72005, "initialValue": { "arguments": [ { "arguments": [ { - "id": 71212, + "id": 71998, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1262:2:116", + "referencedDeclaration": 70589, + "src": "1262:2:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3429,27 +3445,27 @@ "typeString": "address" } ], - "id": 71211, + "id": 71997, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1254:8:116", + "src": "1254:8:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 71210, + "id": 71996, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1254:8:116", + "src": "1254:8:129", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 71213, + "id": 71999, "isConstant": false, "isLValue": false, "isPure": false, @@ -3458,7 +3474,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1254:11:116", + "src": "1254:11:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3467,14 +3483,14 @@ }, { "hexValue": "6f776e65722063616e2073706f6f66206d65746164617461", - "id": 71214, + "id": 72000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1267:26:116", + "src": "1267:26:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4c13ebec01b44a9ccdb306618e8038e6656dfd9a7b9226e7b71b62062b044365", "typeString": "literal_string \"owner can spoof metadata\"" @@ -3483,14 +3499,14 @@ }, { "hexValue": "30", - "id": 71215, + "id": 72001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1295:1:116", + "src": "1295:1:129", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3499,14 +3515,14 @@ }, { "hexValue": "74727565", - "id": 71216, + "id": 72002, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1298:4:116", + "src": "1298:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3514,12 +3530,12 @@ "value": "true" }, { - "id": 71217, + "id": 72003, "name": "depmodrek", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71198, - "src": "1304:9:116", + "referencedDeclaration": 71984, + "src": "1304:9:129", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -3550,33 +3566,33 @@ } ], "expression": { - "id": 71208, + "id": 71994, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1230:3:116", + "referencedDeclaration": 70555, + "src": "1230:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71209, + "id": 71995, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1234:19:116", + "memberLocation": "1234:19:129", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1230:23:116", + "referencedDeclaration": 9556, + "src": "1230:23:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 71218, + "id": 72004, "isConstant": false, "isLValue": false, "isPure": false, @@ -3585,7 +3601,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1230:84:116", + "src": "1230:84:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3593,21 +3609,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1189:125:116" + "src": "1189:125:129" }, { "expression": { "arguments": [ { "hexValue": "4372656174656420706c7567696e20646566696e6974696e696f6e204944202d2d2d203a2020", - "id": 71223, + "id": 72009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1337:40:116", + "src": "1337:40:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_348964a7594322c30fb81fffac289a96eaf9e25de3b2191715d44106cef883e1", "typeString": "literal_string \"Created plugin definitinion ID --- : \"" @@ -3615,12 +3631,12 @@ "value": "Created plugin definitinion ID --- : " }, { - "id": 71224, + "id": 72010, "name": "pluginDefinitionID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71207, - "src": "1379:18:116", + "referencedDeclaration": 71993, + "src": "1379:18:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3639,33 +3655,33 @@ } ], "expression": { - "id": 71220, + "id": 72006, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "1325:7:116", + "referencedDeclaration": 33186, + "src": "1325:7:129", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 71222, + "id": 72008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1333:3:116", + "memberLocation": "1333:3:129", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25079, - "src": "1325:11:116", + "referencedDeclaration": 25830, + "src": "1325:11:129", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$__$", "typeString": "function (string memory,uint256) view" } }, - "id": 71225, + "id": 72011, "isConstant": false, "isLValue": false, "isPure": false, @@ -3674,27 +3690,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1325:73:116", + "src": "1325:73:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71226, + "id": 72012, "nodeType": "ExpressionStatement", - "src": "1325:73:116" + "src": "1325:73:129" }, { "expression": { "arguments": [ { - "id": 71230, + "id": 72016, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1417:2:116", + "referencedDeclaration": 70587, + "src": "1417:2:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3709,33 +3725,33 @@ } ], "expression": { - "id": 71227, + "id": 72013, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1408:2:116", + "referencedDeclaration": 13541, + "src": "1408:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71229, + "id": 72015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1411:5:116", + "memberLocation": "1411:5:129", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1408:8:116", + "referencedDeclaration": 24720, + "src": "1408:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71231, + "id": 72017, "isConstant": false, "isLValue": false, "isPure": false, @@ -3744,16 +3760,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1408:12:116", + "src": "1408:12:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71232, + "id": 72018, "nodeType": "ExpressionStatement", - "src": "1408:12:116" + "src": "1408:12:129" }, { "expression": { @@ -3761,14 +3777,14 @@ { "arguments": [ { - "id": 71238, + "id": 72024, "name": "TaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71116, - "src": "1457:10:116", + "referencedDeclaration": 71902, + "src": "1457:10:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } } @@ -3776,30 +3792,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } ], - "id": 71237, + "id": 72023, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1449:7:116", + "src": "1449:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71236, + "id": 72022, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1449:7:116", + "src": "1449:7:129", "typeDescriptions": {} } }, - "id": 71239, + "id": 72025, "isConstant": false, "isLValue": false, "isPure": false, @@ -3808,7 +3824,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1449:19:116", + "src": "1449:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3816,12 +3832,12 @@ } }, { - "id": 71240, + "id": 72026, "name": "pluginDefinitionID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71207, - "src": "1470:18:116", + "referencedDeclaration": 71993, + "src": "1470:18:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3840,33 +3856,33 @@ } ], "expression": { - "id": 71233, + "id": 72019, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1430:3:116", + "referencedDeclaration": 70555, + "src": "1430:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71235, + "id": 72021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1434:14:116", + "memberLocation": "1434:14:129", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1430:18:116", + "referencedDeclaration": 9533, + "src": "1430:18:129", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 71241, + "id": 72027, "isConstant": false, "isLValue": false, "isPure": false, @@ -3875,31 +3891,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1430:59:116", + "src": "1430:59:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71242, + "id": 72028, "nodeType": "ExpressionStatement", - "src": "1430:59:116" + "src": "1430:59:129" }, { "expression": { - "id": 71251, + "id": 72037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71243, + "id": 72029, "name": "taskPluginId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71124, - "src": "1500:12:116", + "referencedDeclaration": 71910, + "src": "1500:12:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3912,14 +3928,14 @@ { "arguments": [ { - "id": 71248, + "id": 72034, "name": "TaskPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71116, - "src": "1546:10:116", + "referencedDeclaration": 71902, + "src": "1546:10:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } } @@ -3927,30 +3943,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$9356", + "typeIdentifier": "t_contract$_OffchainVerifiedTaskPlugin_$10107", "typeString": "contract OffchainVerifiedTaskPlugin" } ], - "id": 71247, + "id": 72033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1538:7:116", + "src": "1538:7:129", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71246, + "id": 72032, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1538:7:116", + "src": "1538:7:129", "typeDescriptions": {} } }, - "id": 71249, + "id": 72035, "isConstant": false, "isLValue": false, "isPure": false, @@ -3959,7 +3975,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1538:19:116", + "src": "1538:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3975,33 +3991,33 @@ } ], "expression": { - "id": 71244, + "id": 72030, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1515:3:116", + "referencedDeclaration": 70555, + "src": "1515:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71245, + "id": 72031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1519:18:116", + "memberLocation": "1519:18:129", "memberName": "tokenIdFromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8789, - "src": "1515:22:116", + "referencedDeclaration": 9540, + "src": "1515:22:129", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 71250, + "id": 72036, "isConstant": false, "isLValue": false, "isPure": false, @@ -4010,78 +4026,78 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1515:43:116", + "src": "1515:43:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1500:58:116", + "src": "1500:58:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71252, + "id": 72038, "nodeType": "ExpressionStatement", - "src": "1500:58:116" + "src": "1500:58:129" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "705:5:116", + "nameLocation": "705:5:129", "overrides": { - "id": 71126, + "id": 71912, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "720:8:116" + "src": "720:8:129" }, "parameters": { - "id": 71125, + "id": 71911, "nodeType": "ParameterList", "parameters": [], - "src": "710:2:116" + "src": "710:2:129" }, "returnParameters": { - "id": 71127, + "id": 71913, "nodeType": "ParameterList", "parameters": [], - "src": "729:0:116" + "src": "729:0:129" }, - "scope": 71358, + "scope": 72144, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71357, + "id": 72143, "nodeType": "FunctionDefinition", - "src": "1571:726:116", + "src": "1571:726:129", "nodes": [], "body": { - "id": 71356, + "id": 72142, "nodeType": "Block", - "src": "1607:690:116", + "src": "1607:690:129", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 71260, + "id": 72046, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1626:2:116", + "referencedDeclaration": 70589, + "src": "1626:2:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4096,33 +4112,33 @@ } ], "expression": { - "id": 71257, + "id": 72043, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1617:2:116", + "referencedDeclaration": 13541, + "src": "1617:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71259, + "id": 72045, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1620:5:116", + "memberLocation": "1620:5:129", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1617:8:116", + "referencedDeclaration": 24720, + "src": "1617:8:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71261, + "id": 72047, "isConstant": false, "isLValue": false, "isPure": false, @@ -4131,30 +4147,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1617:12:116", + "src": "1617:12:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71262, + "id": 72048, "nodeType": "ExpressionStatement", - "src": "1617:12:116" + "src": "1617:12:129" }, { "expression": { "arguments": [ { "hexValue": "4e6f7420616e2061646d696e2e", - "id": 71266, + "id": 72052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1655:15:116", + "src": "1655:15:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_194cdd552b6458a32ff665efb85cb4d7c0c27b1fc9eb323b462a32931b0ee57e", "typeString": "literal_string \"Not an admin.\"" @@ -4170,33 +4186,33 @@ } ], "expression": { - "id": 71263, + "id": 72049, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1639:2:116", + "referencedDeclaration": 13541, + "src": "1639:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71265, + "id": 72051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1642:12:116", + "memberLocation": "1642:12:129", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "1639:15:116", + "referencedDeclaration": 24776, + "src": "1639:15:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 71267, + "id": 72053, "isConstant": false, "isLValue": false, "isPure": false, @@ -4205,30 +4221,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1639:32:116", + "src": "1639:32:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71268, + "id": 72054, "nodeType": "ExpressionStatement", - "src": "1639:32:116" + "src": "1639:32:129" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71272, + "id": 72058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1695:4:116", + "src": "1695:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4244,33 +4260,33 @@ } ], "expression": { - "id": 71269, + "id": 72055, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "1681:3:116", + "referencedDeclaration": 71896, + "src": "1681:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71271, + "id": 72057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1685:9:116", + "memberLocation": "1685:9:129", "memberName": "setActive", "nodeType": "MemberAccess", - "referencedDeclaration": 7598, - "src": "1681:13:116", + "referencedDeclaration": 8349, + "src": "1681:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 71273, + "id": 72059, "isConstant": false, "isLValue": false, "isPure": false, @@ -4279,27 +4295,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1681:19:116", + "src": "1681:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71274, + "id": 72060, "nodeType": "ExpressionStatement", - "src": "1681:19:116" + "src": "1681:19:129" }, { "expression": { "arguments": [ { - "id": 71278, + "id": 72064, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1725:2:116", + "referencedDeclaration": 70587, + "src": "1725:2:129", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4314,33 +4330,33 @@ } ], "expression": { - "id": 71275, + "id": 72061, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1711:2:116", + "referencedDeclaration": 13541, + "src": "1711:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71277, + "id": 72063, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1714:10:116", + "memberLocation": "1714:10:129", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "1711:13:116", + "referencedDeclaration": 24725, + "src": "1711:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71279, + "id": 72065, "isConstant": false, "isLValue": false, "isPure": false, @@ -4349,30 +4365,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1711:17:116", + "src": "1711:17:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71280, + "id": 72066, "nodeType": "ExpressionStatement", - "src": "1711:17:116" + "src": "1711:17:129" }, { "expression": { "arguments": [ { "hexValue": "313030", - "id": 71282, + "id": 72068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1763:3:116", + "src": "1763:3:129", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" @@ -4387,18 +4403,18 @@ "typeString": "int_const 100" } ], - "id": 71281, + "id": 72067, "name": "skip", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 17105, - "src": "1758:4:116", + "referencedDeclaration": 17856, + "src": "1758:4:129", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 71283, + "id": 72069, "isConstant": false, "isLValue": false, "isPure": false, @@ -4407,30 +4423,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1758:9:116", + "src": "1758:9:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71284, + "id": 72070, "nodeType": "ExpressionStatement", - "src": "1758:9:116" + "src": "1758:9:129" }, { "expression": { "arguments": [ { "hexValue": "6174206c65617374206f6e65207175657374206e6565647320746f20626520646566696e6564", - "id": 71288, + "id": 72074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1794:40:116", + "src": "1794:40:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7eb94220b902dbda41dee9fd2306a76f4aa76564dfd97ea84ec7f71013fc83ad", "typeString": "literal_string \"at least one quest needs to be defined\"" @@ -4446,33 +4462,33 @@ } ], "expression": { - "id": 71285, + "id": 72071, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1778:2:116", + "referencedDeclaration": 13541, + "src": "1778:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71287, + "id": 72073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1781:12:116", + "memberLocation": "1781:12:129", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "1778:15:116", + "referencedDeclaration": 24776, + "src": "1778:15:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 71289, + "id": 72075, "isConstant": false, "isLValue": false, "isPure": false, @@ -4481,30 +4497,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1778:57:116", + "src": "1778:57:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71290, + "id": 72076, "nodeType": "ExpressionStatement", - "src": "1778:57:116" + "src": "1778:57:129" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71294, + "id": 72080, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1859:4:116", + "src": "1859:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4520,33 +4536,33 @@ } ], "expression": { - "id": 71291, + "id": 72077, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "1845:3:116", + "referencedDeclaration": 71896, + "src": "1845:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71293, + "id": 72079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1849:9:116", + "memberLocation": "1849:9:129", "memberName": "setActive", "nodeType": "MemberAccess", - "referencedDeclaration": 7598, - "src": "1845:13:116", + "referencedDeclaration": 8349, + "src": "1845:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 71295, + "id": 72081, "isConstant": false, "isLValue": false, "isPure": false, @@ -4555,31 +4571,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1845:19:116", + "src": "1845:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71296, + "id": 72082, "nodeType": "ExpressionStatement", - "src": "1845:19:116" + "src": "1845:19:129" }, { "assignments": [ - 71298 + 72084 ], "declarations": [ { "constant": false, - "id": 71298, + "id": 72084, "mutability": "mutable", "name": "questID", - "nameLocation": "1883:7:116", + "nameLocation": "1883:7:129", "nodeType": "VariableDeclaration", - "scope": 71356, - "src": "1875:15:116", + "scope": 72142, + "src": "1875:15:129", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4587,10 +4603,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71297, + "id": 72083, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1875:7:116", + "src": "1875:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4599,19 +4615,19 @@ "visibility": "internal" } ], - "id": 71309, + "id": 72095, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 71301, + "id": 72087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1907:1:116", + "src": "1907:1:129", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4620,14 +4636,14 @@ }, { "hexValue": "757269434944", - "id": 71302, + "id": 72088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1910:8:116", + "src": "1910:8:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_72aa7f396fd1e607cc2a324e43fef63c4e7343335cab7d4989955563896a2f26", "typeString": "literal_string \"uriCID\"" @@ -4639,33 +4655,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71306, + "id": 72092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71303, + "id": 72089, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "1920:5:116", + "src": "1920:5:129", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 71304, + "id": 72090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1926:9:116", + "memberLocation": "1926:9:129", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "1920:15:116", + "src": "1920:15:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4675,21 +4691,21 @@ "operator": "+", "rightExpression": { "hexValue": "3130", - "id": 71305, + "id": 72091, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1938:2:116", + "src": "1938:2:129", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, - "src": "1920:20:116", + "src": "1920:20:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4697,14 +4713,14 @@ }, { "hexValue": "31", - "id": 71307, + "id": 72093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1942:1:116", + "src": "1942:1:129", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4732,33 +4748,33 @@ } ], "expression": { - "id": 71299, + "id": 72085, "name": "QuestP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71113, - "src": "1893:6:116", + "referencedDeclaration": 71899, + "src": "1893:6:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, - "id": 71300, + "id": 72086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1900:6:116", + "memberLocation": "1900:6:129", "memberName": "create", "nodeType": "MemberAccess", - "referencedDeclaration": 8007, - "src": "1893:13:116", + "referencedDeclaration": 8758, + "src": "1893:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,string memory,uint256,uint256) external returns (uint256)" } }, - "id": 71308, + "id": 72094, "isConstant": false, "isLValue": false, "isPure": false, @@ -4767,7 +4783,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1893:51:116", + "src": "1893:51:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4775,7 +4791,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1875:69:116" + "src": "1875:69:129" }, { "expression": { @@ -4785,18 +4801,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71313, + "id": 72099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 71311, + "id": 72097, "name": "questID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71298, - "src": "1965:7:116", + "referencedDeclaration": 72084, + "src": "1965:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4806,21 +4822,21 @@ "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 71312, + "id": 72098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1976:1:116", + "src": "1976:1:129", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "1965:12:116", + "src": "1965:12:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4828,14 +4844,14 @@ }, { "hexValue": "6578706563746564206964", - "id": 71314, + "id": 72100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1979:13:116", + "src": "1979:13:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7853641059ed13f261ebac09105f53d3b743feede2a238716487af68edf0592d", "typeString": "literal_string \"expected id\"" @@ -4854,21 +4870,21 @@ "typeString": "literal_string \"expected id\"" } ], - "id": 71310, + "id": 72096, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1954:10:116", + "referencedDeclaration": 11481, + "src": "1954:10:129", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71315, + "id": 72101, "isConstant": false, "isLValue": false, "isPure": false, @@ -4877,30 +4893,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1954:39:116", + "src": "1954:39:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71316, + "id": 72102, "nodeType": "ExpressionStatement", - "src": "1954:39:116" + "src": "1954:39:129" }, { "expression": { "arguments": [ { "hexValue": "6174206c65617374206f6e65207175657374206d7573742068617665207461736b73", - "id": 71320, + "id": 72106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2020:36:116", + "src": "2020:36:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9b76a34509d28767fc4497ec53e40dada8115ec68e9675b123e55bcc38b3be7c", "typeString": "literal_string \"at least one quest must have tasks\"" @@ -4916,33 +4932,33 @@ } ], "expression": { - "id": 71317, + "id": 72103, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2004:2:116", + "referencedDeclaration": 13541, + "src": "2004:2:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71319, + "id": 72105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2007:12:116", + "memberLocation": "2007:12:129", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24025, - "src": "2004:15:116", + "referencedDeclaration": 24776, + "src": "2004:15:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, - "id": 71321, + "id": 72107, "isConstant": false, "isLValue": false, "isPure": false, @@ -4951,30 +4967,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2004:53:116", + "src": "2004:53:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71322, + "id": 72108, "nodeType": "ExpressionStatement", - "src": "2004:53:116" + "src": "2004:53:129" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71326, + "id": 72112, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2081:4:116", + "src": "2081:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4990,33 +5006,33 @@ } ], "expression": { - "id": 71323, + "id": 72109, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "2067:3:116", + "referencedDeclaration": 71896, + "src": "2067:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71325, + "id": 72111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2071:9:116", + "memberLocation": "2071:9:129", "memberName": "setActive", "nodeType": "MemberAccess", - "referencedDeclaration": 7598, - "src": "2067:13:116", + "referencedDeclaration": 8349, + "src": "2067:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 71327, + "id": 72113, "isConstant": false, "isLValue": false, "isPure": false, @@ -5025,27 +5041,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2067:19:116", + "src": "2067:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71328, + "id": 72114, "nodeType": "ExpressionStatement", - "src": "2067:19:116" + "src": "2067:19:129" }, { "expression": { "arguments": [ { - "id": 71332, + "id": 72118, "name": "taskPluginId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71124, - "src": "2109:12:116", + "referencedDeclaration": 71910, + "src": "2109:12:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5060,33 +5076,33 @@ } ], "expression": { - "id": 71329, + "id": 72115, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "2097:7:116", + "referencedDeclaration": 33186, + "src": "2097:7:129", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 71331, + "id": 72117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2105:3:116", + "memberLocation": "2105:3:129", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24952, - "src": "2097:11:116", + "referencedDeclaration": 25703, + "src": "2097:11:129", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view" } }, - "id": 71333, + "id": 72119, "isConstant": false, "isLValue": false, "isPure": false, @@ -5095,39 +5111,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2097:25:116", + "src": "2097:25:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71334, + "id": 72120, "nodeType": "ExpressionStatement", - "src": "2097:25:116" + "src": "2097:25:129" }, { "expression": { "arguments": [ { - "id": 71338, + "id": 72124, "name": "questID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71298, - "src": "2150:7:116", + "referencedDeclaration": 72084, + "src": "2150:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 71339, + "id": 72125, "name": "taskPluginId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71124, - "src": "2159:12:116", + "referencedDeclaration": 71910, + "src": "2159:12:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5135,14 +5151,14 @@ }, { "hexValue": "7461736b5572694d65746164617461", - "id": 71340, + "id": 72126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2173:17:116", + "src": "2173:17:129", "typeDescriptions": { "typeIdentifier": "t_stringliteral_eca65626cede0dd28948d88912ee1cd94910bda9827fdcaea819bf6cb261a556", "typeString": "literal_string \"taskUriMetadata\"" @@ -5166,33 +5182,33 @@ } ], "expression": { - "id": 71335, + "id": 72121, "name": "QuestP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71113, - "src": "2132:6:116", + "referencedDeclaration": 71899, + "src": "2132:6:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, - "id": 71337, + "id": 72123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2139:10:116", + "memberLocation": "2139:10:129", "memberName": "createTask", "nodeType": "MemberAccess", - "referencedDeclaration": 8079, - "src": "2132:17:116", + "referencedDeclaration": 8830, + "src": "2132:17:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,uint256,string memory) external" } }, - "id": 71341, + "id": 72127, "isConstant": false, "isLValue": false, "isPure": false, @@ -5201,30 +5217,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2132:59:116", + "src": "2132:59:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71342, + "id": 72128, "nodeType": "ExpressionStatement", - "src": "2132:59:116" + "src": "2132:59:129" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71346, + "id": 72132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2216:4:116", + "src": "2216:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5240,33 +5256,33 @@ } ], "expression": { - "id": 71343, + "id": 72129, "name": "QOP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71110, - "src": "2202:3:116", + "referencedDeclaration": 71896, + "src": "2202:3:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$7643", + "typeIdentifier": "t_contract$_QuestOnboardingPlugin_$8394", "typeString": "contract QuestOnboardingPlugin" } }, - "id": 71345, + "id": 72131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2206:9:116", + "memberLocation": "2206:9:129", "memberName": "setActive", "nodeType": "MemberAccess", - "referencedDeclaration": 7598, - "src": "2202:13:116", + "referencedDeclaration": 8349, + "src": "2202:13:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 71347, + "id": 72133, "isConstant": false, "isLValue": false, "isPure": false, @@ -5275,30 +5291,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2202:19:116", + "src": "2202:19:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71348, + "id": 72134, "nodeType": "ExpressionStatement", - "src": "2202:19:116" + "src": "2202:19:129" }, { "expression": { "arguments": [ { "hexValue": "74727565", - "id": 71352, + "id": 72138, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2276:4:116", + "src": "2276:4:129", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5306,12 +5322,12 @@ "value": "true" }, { - "id": 71353, + "id": 72139, "name": "questID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71298, - "src": "2282:7:116", + "referencedDeclaration": 72084, + "src": "2282:7:129", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5330,33 +5346,33 @@ } ], "expression": { - "id": 71349, + "id": 72135, "name": "QuestP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71113, - "src": "2255:6:116", + "referencedDeclaration": 71899, + "src": "2255:6:129", "typeDescriptions": { - "typeIdentifier": "t_contract$_QuestPlugin_$8675", + "typeIdentifier": "t_contract$_QuestPlugin_$9426", "typeString": "contract QuestPlugin" } }, - "id": 71351, + "id": 72137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2262:13:116", + "memberLocation": "2262:13:129", "memberName": "setQuestState", "nodeType": "MemberAccess", - "referencedDeclaration": 7928, - "src": "2255:20:116", + "referencedDeclaration": 8679, + "src": "2255:20:129", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$_t_uint256_$returns$__$", "typeString": "function (bool,uint256) external" } }, - "id": 71354, + "id": 72140, "isConstant": false, "isLValue": false, "isPure": false, @@ -5365,16 +5381,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2255:35:116", + "src": "2255:35:129", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71355, + "id": 72141, "nodeType": "ExpressionStatement", - "src": "2255:35:116" + "src": "2255:35:129" } ] }, @@ -5383,20 +5399,20 @@ "kind": "function", "modifiers": [], "name": "testActivateQuest", - "nameLocation": "1580:17:116", + "nameLocation": "1580:17:129", "parameters": { - "id": 71255, + "id": 72041, "nodeType": "ParameterList", "parameters": [], - "src": "1597:2:116" + "src": "1597:2:129" }, "returnParameters": { - "id": 71256, + "id": 72042, "nodeType": "ParameterList", "parameters": [], - "src": "1607:0:116" + "src": "1607:0:129" }, - "scope": 71358, + "scope": 72144, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -5406,56 +5422,56 @@ "baseContracts": [ { "baseName": { - "id": 71106, + "id": 71892, "name": "DeploysInit", "nameLocations": [ - "495:11:116" + "495:11:129" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "495:11:116" + "referencedDeclaration": 71026, + "src": "495:11:129" }, - "id": 71107, + "id": 71893, "nodeType": "InheritanceSpecifier", - "src": "495:11:116" + "src": "495:11:129" } ], "canonicalName": "TestQuestPlugin", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 7643, - 9356, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 8394, + 10107, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 71358, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 72144, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "TestQuestPlugin", - "nameLocation": "476:15:116", - "scope": 71359, + "nameLocation": "476:15:129", + "scope": 72145, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 116 + "id": 129 } \ No newline at end of file diff --git a/out/SampleInteractionPlugin.t.sol/TestSampleInteractionPlugin.json b/out/SampleInteractionPlugin.t.sol/TestSampleInteractionPlugin.json index 9c7df2f9..47fbc81a 100644 --- a/out/SampleInteractionPlugin.t.sol/TestSampleInteractionPlugin.json +++ b/out/SampleInteractionPlugin.t.sol/TestSampleInteractionPlugin.json @@ -636,13 +636,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201811180620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001745760003560e01c80637a6afc6311620000d3578063e20c9f711162000086578063e20c9f711462000285578063e770e407146200028f578063efe074781462000299578063f11ec75d14620002a3578063fa7626d414620002ad578063fabeb26014620002bb57600080fd5b80637a6afc63146200022957806385226c811462000233578063916a17c6146200024c578063b5508aa91462000256578063ba414fa61462000260578063cf0aee08146200027b57600080fd5b80633e5e3c23116200012c5780633e5e3c2314620001de5780633f7286f414620001e85780635b1ee7e114620001f257806366d9a9a014620001fc5780636dcd8a901462000215578063766a5d8d146200021f57600080fd5b806203603214620001795780630a9254e41462000185578063134d9ed4146200018f5780631ed7831c1462000199578063209a06a514620001bb5780632ade388014620001c5575b600080fd5b62000183620002c5565b005b6200018362000659565b6200018362000fc0565b620001a36200120a565b604051620001b2919062006a10565b60405180910390f35b620001836200126e565b620001cf62001754565b604051620001b2919062006a80565b620001a3620018a2565b620001a362001904565b6200018362001966565b6200020662001c20565b604051620001b2919062006b46565b6200018362001d0a565b620001836200210d565b6200018362002985565b6200023d6200381f565b604051620001b2919062006bfd565b62000206620038f9565b6200023d620039e3565b6200026a62003abd565b6040519015158152602001620001b2565b6200018362003bea565b620001a362004351565b62000183620043b3565b6200018362004720565b6200018362004de2565b6007546200026a9060ff1681565b6200018362005488565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062005b4e565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062005b4e565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062005b4e565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062005b4e565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062005b4e565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062006c7b565b6001600160a01b031614604051806060016040528060288152602001620180b46028913962005b4e565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062006c99565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062005b4e565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062006c7b565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062005b4e565b565b600042156200066957426200066f565b636553f0ff5b90506000805160206201805383398151915263e5d6bf026200069383600162006cd3565b6040518263ffffffff1660e01b8152600401620006b291815260200190565b600060405180830381600087803b158015620006cd57600080fd5b505af1158015620006e2573d6000803e3d6000fd5b50505050620006f062005b98565b604051620006fe906200694c565b604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062018053833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200081e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000844919062006c7b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200088657600080fd5b505af11580156200089b573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b158015620008e957600080fd5b505af1158015620008fe573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097c919062006c7b565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562000a0a57600080fd5b505af115801562000a1f573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562000a7857600080fd5b505af115801562000a8d573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000acc92600192600492911690820162006cef565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000b1d91506200695a565b6001600160a01b039091168152602001604051809103906000f08015801562000b4a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562000bdb57600080fd5b505af115801562000bf0573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018053833981519152915063ca669fa790602401600060405180830381600087803b15801562000c4c57600080fd5b505af115801562000c61573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000ca49216908590600190889060040162006d55565b6020604051808303816000875af115801562000cc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cea919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562000d4257600080fd5b505af115801562000d57573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000dac57600080fd5b505af115801562000dc1573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062006df2565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b8152600481019390935262000f069316916324d7806c91016020604051808303816000875af115801562000ea4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eca919062006c99565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062005b4e565b60248054602f5460405163288c314960e21b81526001600160a01b03918216600482015262000fbb93919092169163a230c5249101602060405180830381865afa15801562000f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7f919062006c99565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d62657200000000000000008152506200670a565b505050565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001038919062006f84565b905062001079816060015161ffff16601e146040518060400160405280601081526020016f06b206e6f742064656661756c742033360841b81525062005b4e565b620010c28160c0015163ffffffff1662278d0014604051806040016040528060168152602001756d696e20706572696f64206e6f74203330206461797360501b81525062005b4e565b620011094282600001516001600160401b03161015604051806040016040528060138152602001721b185cdd081c195c9a591bdb881d5b9a5b9a5d606a1b81525062005b4e565b60245460408051637c0f6b3560e01b815290516000926001600160a01b031691637c0f6b3591600480830192869291908290030181865afa15801562001153573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200117d919081019062007079565b9050620011bd8151600114604051806040016040528060168152602001753737ba1036b7b932903a3430b710189036b2b6b132b960511b81525062005b4e565b6200120682602001516001600160401b031660041460405180604001604052806015815260200174031206d656d6265722074636c20696e20736574757605c1b81525062005b4e565b5050565b606060148054806020026020016040519081016040528092919081815260200182805480156200126457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001245575b5050505050905090565b6200127862001966565b6000805160206201805383398151915263e5d6bf026200129a42600162006cd3565b6040518263ffffffff1660e01b8152600401620012b991815260200190565b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b50506022546024805460405163436ca71360e11b81526001600160a01b039182166004820152600095508594509216916386d94e2691016040805180830381865afa1580156200133d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001363919062007121565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015620013bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620013e7919081019062007079565b601c54602454604051600162965c6f60e01b031981529293506000926001600160a01b039283169263ff69a39192620014299287929091169060040162007146565b600060405180830381865afa15801562001447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001471919081019062007172565b9050620014b881518351146040518060400160405280601981526020017f6d656d62657220636f6d6d2e206c656e206d69736d617463680000000000000081525062005b4e565b6200153581600281518110620014d257620014d262007200565b602002602001015182600181518110620014f057620014f062007200565b6020026020010151146040518060400160405280601881526020017f616c6c20686176652073616d6520636f6d6d69746d656e74000000000000000081525062005b4e565b62001572662386f26fc100008410156040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015af678ac7230489e8000084106040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015eb8460041460405180604001604052806015815260200174185b1b081a185d99480d0b08195e1c1958d959080d605a1b81525062005b4e565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa1580156200163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001662919062007216565b9050620016a86001826000015160030b1360405180604001604052806016815260200175195e1c081b595b58995c9cc81dd95c9948185919195960521b81525062005b4e565b620016c08351826020015163ffffffff161462006717565b620017108482604001516001600160401b0316146040518060400160405280601881526020017f73686f756c642062652073616d65206c6966656379636c65000000000000000081525062005b4e565b6200174d8582606001516001600160401b0316146040518060400160405280600a815260200169185b1b081dd95c99480d60b21b81525062005b4e565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200189957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001881578382906000526020600020018054620017ed9062007235565b80601f01602080910402602001604051908101604052809291908181526020018280546200181b9062007235565b80156200186c5780601f1062001840576101008083540402835291602001916200186c565b820191906000526020600020905b8154815290600101906020018083116200184e57829003601f168201915b505050505081526020019060010190620017cb565b50505050815250508152602001906001019062001778565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6200197062003bea565b604051630618f58760e51b81526313a67ce960e31b6004820152600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b158015620019bf57600080fd5b505af1158015620019d4573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b0391821660048201526000955092169250636e09f59c91016000604051808303816000875af115801562001a97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac1919081019062007172565b90506000805160206201805383398151915263e5d6bf0262001ae74262278d0062006cd3565b6040518263ffffffff1660e01b815260040162001b0691815260200190565b600060405180830381600087803b15801562001b2157600080fd5b505af115801562001b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562001b8f57600080fd5b505af115801562001ba4573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001bf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001206919081019062007172565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001cf157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001cb25790505b5050505050815250508152602001906001019062001c44565b6000805160206201805383398151915263e5d6bf0262001d2e426283d60062006cd3565b6040518263ffffffff1660e01b815260040162001d4d91815260200190565b600060405180830381600087803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050505062001d8b62003bea565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001ddd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e03919062006f84565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562001e5b57600080fd5b505af115801562001e70573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600095509216925063083ad23b91016020604051808303816000875af115801562001ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eeb919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562001f4357600080fd5b505af115801562001f58573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd4919081019062007172565b5060225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562002027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204d919062006f84565b90508060c0015163ffffffff1681600001516200206b919062007271565b6001600160401b03169150620020ac428310156040518060400160405280600f81526020016e39b437bab632103132903630ba32b960891b81525062005b4e565b62000fbb8360c0015163ffffffff168460000151620020cc919062007271565b6001600160401b0316831015604051806040016040528060168152602001751c195c9a5bd9081a5b98dc995b595b9d0819985d5b1d60521b81525062005b4e565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200212557505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062002199576200219962007200565b602002602001018190525063a3c9eb4360e01b604051602401620021bd906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062002206576200220662007200565b602002602001018190525060058160008151811062002229576200222962007200565b602002602001019061ffff16908161ffff168152505060098160018151811062002257576200225762007200565b61ffff9290921660209283029190910190910152604051630618f58760e51b8152634755657960e01b6004820152600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e93506200230e929091169086908690600401620072c6565b600060405180830381600087803b1580156200232957600080fd5b505af11580156200233e573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200239757600080fd5b505af1158015620023ac573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e9350620023eb929091169086908690600401620072c6565b600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002499919062006df2565b50620024a4620043b3565b602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251e919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa1580156200257f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025a5919062007379565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b158015620025fd57600080fd5b505af115801562002612573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200266c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002692919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620026f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002719919062007379565b90506200275e600082602001516001600160401b0316116040518060400160405280600f81526020016e68617320736f6d6520706f696e747360881b81525062005b4e565b620027ae81602001516001600160401b031683602001516001600160401b0316106040518060400160405280601081526020016f1b9bc81c1bda5b9d1cc819d85a5b995960821b81525062005b4e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200280357600080fd5b505af115801562002818573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb4391506200284c906004016200729b565b6020604051808303816000875af11580156200286c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002892919062006df2565b5060225460265460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620028f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002919919062007379565b90506200296d600982602001516001600160401b031610156040518060400160405280601c81526020017f66756e6374696f6e2061726720706f696e7473206d69736d617463680000000081525062005b4e565b6200174d81602001516001600160401b031662006792565b6200298f6200126e565b60015b606481101562002eb95760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b158015620029ed57600080fd5b505af115801562002a02573d6000803e3d6000fd5b5050505060028162002a159190620073f2565b1562002a9757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002a4b906004016200729b565b6020604051808303816000875af115801562002a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a91919062006df2565b62002b13565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b13919062006df2565b5062002b21600282620073f2565b1562002ba357602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002b57906004016200729b565b6020604051808303816000875af115801562002b77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9d919062006df2565b62002c1f565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002bf9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c1f919062006df2565b5062002c2d600282620073f2565b1562002caf57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002c63906004016200729b565b6020604051808303816000875af115801562002c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca9919062006df2565b62002d2b565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2b919062006df2565b5062002d39600282620073f2565b1562002dbb57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002d6f906004016200729b565b6020604051808303816000875af115801562002d8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db5919062006df2565b62002e37565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e37919062006df2565b506000805160206201805383398151915263e5d6bf0262002e5a42600162006cd3565b6040518263ffffffff1660e01b815260040162002e7991815260200190565b600060405180830381600087803b15801562002e9457600080fd5b505af115801562002ea9573d6000803e3d6000fd5b5050505080600101905062002992565b6000805160206201805383398151915263e5d6bf0262002edd426228de8062006cd3565b6040518263ffffffff1660e01b815260040162002efc91815260200190565b600060405180830381600087803b15801562002f1757600080fd5b505af115801562002f2c573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f8557600080fd5b505af115801562002f9a573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562002fec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003016919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa15801562003068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308e919062007216565b9050620030a881608001516001600160401b031662006792565b6080810151600192505b6064831015620035db5760405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200310d57600080fd5b505af115801562003122573d6000803e3d6000fd5b50505050600283620031359190620073f2565b15620031b757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb43906200316b906004016200729b565b6020604051808303816000875af11580156200318b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031b1919062006df2565b62003233565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200320d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003233919062006df2565b5062003241600284620073f2565b600003620032c557602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003279906004016200729b565b6020604051808303816000875af115801562003299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032bf919062006df2565b62003341565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200331b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003341919062006df2565b506200334f600284620073f2565b15620033d157602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003385906004016200729b565b6020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062006df2565b6200344d565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200344d919062006df2565b506200345b600284620073f2565b15620034dd57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003491906004016200729b565b6020604051808303816000875af1158015620034b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034d7919062006df2565b62003559565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003559919062006df2565b506000805160206201805383398151915263e5d6bf026200357c42600162006cd3565b6040518263ffffffff1660e01b81526004016200359b91815260200190565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b50505050826001019250620030b2565b6000805160206201805383398151915263e5d6bf02620035ff426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200361e91815260200190565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620036a757600080fd5b505af1158015620036bc573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af11580156200370e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003738919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b03918216600482015292169163318e3d8c910160a060405180830381865afa15801562003785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037ab919062007216565b9150620037c582608001516001600160401b031662006792565b60008260800151905062003819826001600160401b0316826001600160401b0316141560405180604001604052806012815260200171195c5d585b1b1e481c195c999bdc9b585b9d60721b81525062005b4e565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001899578382906000526020600020018054620038659062007235565b80601f0160208091040260200160405190810160405280929190818152602001828054620038939062007235565b8015620038e45780601f10620038b857610100808354040283529160200191620038e4565b820191906000526020600020905b815481529060010190602001808311620038c657829003601f168201915b50505050508152602001906001019062003843565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620039ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200398b5790505b505050505081525050815260200190600101906200391d565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200189957838290600052602060002001805462003a299062007235565b80601f016020809104026020016040519081016040528092919081815260200182805462003a579062007235565b801562003aa85780601f1062003a7c5761010080835404028352916020019162003aa8565b820191906000526020600020905b81548152906001019060200180831162003a8a57829003601f168201915b50505050508152602001906001019062003a07565b600754600090610100900460ff161562003ae05750600754610100900460ff1690565b6000600080516020620180538339815191523b1562003be5576040805160008051602062018053833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162003b67917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007415565b60408051601f198184030181529082905262003b839162007448565b6000604051808303816000865af19150503d806000811462003bc2576040519150601f19603f3d011682016040523d82523d6000602084013e62003bc7565b606091505b509150508080602001905181019062003be1919062006c99565b9150505b919050565b6040805160028082526060820190925260039160019160059160009190816020015b606081526020019060019003908162003c0c57505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062003c805762003c8062007200565b602002602001018190525063a3c9eb4360e01b60405160240162003ca4906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062003ced5762003ced62007200565b6020026020010181905250838160008151811062003d0f5762003d0f62007200565b602002602001019061ffff16908161ffff1681525050828160018151811062003d3c5762003d3c62007200565b61ffff9290921660209283029190910190910152602f5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562003da557600080fd5b505af115801562003dba573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e935062003df9929091169086908690600401620072c6565b600060405180830381600087803b15801562003e1457600080fd5b505af115801562003e29573d6000803e3d6000fd5b506001925050505b6064811015620042845760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562003e8c57600080fd5b505af115801562003ea1573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201805383398151915290636900a3ae90602401600060405180830381865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f30919081019062007466565b6024546040516001600160e01b031960e085901b16815262003f6592916001916004916001600160a01b031690820162007504565b600060405180830381600087803b15801562003f8057600080fd5b505af115801562003f95573d6000803e3d6000fd5b5060008051602062018053833981519152925063e5d6bf02915062003fbe905042600162006cd3565b6040518263ffffffff1660e01b815260040162003fdd91815260200190565b600060405180830381600087803b15801562003ff857600080fd5b505af11580156200400d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200406257600080fd5b505af115801562004077573d6000803e3d6000fd5b505050506002816200408a9190620073f2565b156200410c57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb4390620040c0906004016200729b565b6020604051808303816000875af1158015620040e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004106919062006df2565b62004188565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562004162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004188919062006df2565b506000805160206201805383398151915263e5d6bf02620041ab42600162006cd3565b6040518263ffffffff1660e01b8152600401620041ca91815260200190565b600060405180830381600087803b158015620041e557600080fd5b505af1158015620041fa573d6000803e3d6000fd5b50506022546024805460405163343bce3b60e01b81526001600160a01b039182166004820152600196909601959216935063343bce3b9250016000604051808303816000875af115801562004253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200427d919081019062007172565b5062003e31565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152620043499360019392169163f1e0fa7891016101c060405180830381865afa158015620042d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042ff919062006f84565b600001516001600160401b0316116040518060400160405280601e81526020017f6c617374506572696f64206e6f7420626c6f636b2e74696d657374616d70000081525062005b4e565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6026546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062018053833981519152906306447d5690602401600060405180830381600087803b1580156200440857600080fd5b505af11580156200441d573d6000803e3d6000fd5b505050506000602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200449d919062006df2565b602d5460405163a3c9eb4360e01b815260206004820152600060248201529192506001600160a01b03169063a3c9eb43906044016020604051808303816000875af1158015620044f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004517919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa15801562004563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004589919062006df2565b602d5460405163a3c9eb4360e01b81529192506001600160a01b03169063a3c9eb4390620045ba906004016200729b565b6020604051808303816000875af1158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004600919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa1580156200464c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004672919062006df2565b9050620046b48162004685848662006cd3565b146040518060400160405280600f81526020016e139bdd08125b98dc995b595b9d1959608a1b81525062005b4e565b6000805160206201809483398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200470257600080fd5b505af115801562004717573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b8152636bd1573560e11b6004820152600590600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b1580156200477257600080fd5b505af115801562004787573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0387811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af1158015620047e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200480f919062006df2565b604051630618f58760e51b81526318dc243b60e31b6004820152909150600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b1580156200486157600080fd5b505af115801562004876573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b03888116600483015291821692810192909252909116925063df3e30f091506044016020604051808303816000875af115801562004943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004969919062006df2565b9050620049af816000146040518060400160405280601881526020017f4e6f207570646174652073636f726520697320626c616e6b000000000000000081525062005b4e565b620049b962003bea565b6000805160206201805383398151915263e5d6bf02620049dd426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620049fc91815260200190565b600060405180830381600087803b15801562004a1757600080fd5b505af115801562004a2c573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201805383398151915292506306447d569150602401600060405180830381600087803b15801562004a8557600080fd5b505af115801562004a9a573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0388811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af115801562004afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b22919062006df2565b905062004b56600182116040518060400160405280600b81526020016a1b9bdd081d5c19185d195960aa1b81525062005b4e565b6022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600093919091169163083ad23b91016020604051808303816000875af115801562004ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bcf919062006df2565b90506000805160206201805383398151915263e5d6bf0262004bf383600162006cd3565b6040518263ffffffff1660e01b815260040162004c1291815260200190565b600060405180830381600087803b15801562004c2d57600080fd5b505af115801562004c42573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b0391821660048201529216935063083ad23b9250016020604051808303816000875af115801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba919062006df2565b5060225460248054604051630df3e30f60e41b81526001600160a01b038881166004830152918216928101929092529091169063df3e30f0906044016020604051808303816000875af115801562004d16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d3c919062006df2565b915062004d75600183116040518060400160405280601081526020016f6861732061637475616c2073636f726560801b81525062005b4e565b6000805160206201809483398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004dc357600080fd5b505af115801562004dd8573d6000803e3d6000fd5b5050505050505050565b62004dec62005488565b601c5460248054604051632ca62cd560e01b81526001600160a01b0391821660048201526000939190911691632ca62cd59101600060405180830381865afa15801562004e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004e67919081019062007079565b905060055b8151811015620050aa5762004e83600282620073f2565b600003620050a1576000805160206201809483398151915260001c6001600160a01b031663ca669fa783838151811062004ec15762004ec162007200565b60200260200101516040518263ffffffff1660e01b815260040162004ef591906001600160a01b0391909116815260200190565b600060405180830381600087803b15801562004f1057600080fd5b505af115801562004f25573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb43915062004f59906004016200729b565b6020604051808303816000875af115801562004f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9f919062006df2565b506000805160206201809483398151915260001c6001600160a01b031663ca669fa783838151811062004fd65762004fd662007200565b60200260200101516040518263ffffffff1660e01b81526004016200500a91906001600160a01b0391909116815260200190565b600060405180830381600087803b1580156200502557600080fd5b505af11580156200503a573d6000803e3d6000fd5b5050601c54602480546040516351cff8d960e01b81526001600160a01b039182166004820152921693506351cff8d9925001600060405180830381600087803b1580156200508757600080fd5b505af11580156200509c573d6000803e3d6000fd5b505050505b60010162004e6c565b6000805160206201805383398151915263e5d6bf02620050ce426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620050ed91815260200190565b600060405180830381600087803b1580156200510857600080fd5b505af11580156200511d573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200517657600080fd5b505af11580156200518b573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af1158015620051dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005207919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa15801562005258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200527e919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa158015620052d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052fb919062007216565b601c5460248054604051632ca62cd560e01b81526001600160a01b039182166004820152939450600093921691632ca62cd59101600060405180830381865afa1580156200534d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005377919081019062007079565b9050620053a86000836000015160030b12604051806060016040528060218152602001620180736021913962005b4e565b620053ed81518751116040518060400160405280601e81526020017f6d656d62657273206c65667420666f72206e656761746976652064696666000081525062005b4e565b815186518251620054379260030b91620054079162007564565b60070b146040518060400160405280600d81526020016c32bc3832b1ba32b2103234b33360991b81525062005b4e565b62004349600083608001516001600160401b0316116040518060400160405280601a81526020017f657870656374656420706572666f726d616e63652073636f726500000000000081525062005b4e565b6200549262001966565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa158015620054e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005509919062007216565b9050661f9465b8ab8e385b661f9465b8ab8e74811015620058045760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200557557600080fd5b505af11580156200558a573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201805383398151915290636900a3ae90602401600060405180830381865afa158015620055ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005619919081019062007466565b6024546040516001600160e01b031960e085901b1681526200564f92916001916009916001600160a01b03169060040162007596565b600060405180830381600087803b1580156200566a57600080fd5b505af11580156200567f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620056d457600080fd5b505af1158015620056e9573d6000803e3d6000fd5b50505050600281620056fc9190620073f2565b156200577e57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062005732906004016200729b565b6020604051808303816000875af115801562005752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005778919062006df2565b620057fa565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620057d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057fa919062006df2565b5060010162005514565b6000805160206201805383398151915263e5d6bf0262005828426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200584791815260200190565b600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620058d057600080fd5b505af1158015620058e5573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562005937573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005961919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa158015620059b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059d8919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa15801562005a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a55919062007216565b905062005a936064826000015160030b126040518060400160405280600e81526020016d064696666207374696c6c203130360941b81525062005b4e565b62005aa5816020015160030b620067da565b62005abd81604001516001600160401b031662006792565b62005b02606482604001516001600160401b031611604051806040016040528060118152602001701b595b58995c9cc81b9bdd081859191959607a1b81525062005b4e565b6200174d600482606001516001600160401b0316116040518060400160405280601781526020017f73616d65206176657261676520636f6d6d69746d656e740000000000000000008152505b8162001206577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162005b859190620075f2565b60405180910390a1620012068262006717565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005c2957600080fd5b505af115801562005c3e573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018053833981519152925063c657c7189150608401600060405180830381600087803b15801562005cd357600080fd5b505af115801562005ce8573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018053833981519152925063c657c7189150608401600060405180830381600087803b15801562005d7d57600080fd5b505af115801562005d92573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005e3357600080fd5b505af115801562005e48573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201805383398151915292506306447d569150602401600060405180830381600087803b15801562005ea157600080fd5b505af115801562005eb6573d6000803e3d6000fd5b5050505060405162005ec89062006968565b604051809103906000f08015801562005ee5573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005f6f57600080fd5b505af115801562005f84573d6000803e3d6000fd5b5050505060405162005f969062006976565b604051809103906000f08015801562005fb3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200603c57600080fd5b505af115801562006051573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200609f57600080fd5b505af1158015620060b4573d6000803e3d6000fd5b50505050604051620060c69062006984565b604051809103906000f080158015620060e3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200616957600080fd5b505af11580156200617e573d6000803e3d6000fd5b50505050604051620061909062006992565b604051809103906000f080158015620061ad573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200623757600080fd5b505af11580156200624c573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200626d9150620069a0565b6001600160a01b039091168152602001604051809103906000f0801580156200629a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200632957600080fd5b505af11580156200633e573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200635f9150620069ae565b6001600160a01b039091168152602001604051809103906000f0801580156200638c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200641b57600080fd5b505af115801562006430573d6000803e3d6000fd5b5050505060405162006442906200694c565b604051809103906000f0801580156200645f573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620064bf57600080fd5b505af1158015620064d4573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200650590620069bc565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200654a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b158015620065d757600080fd5b505af1158015620065ec573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562006668573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200668e919062006c7b565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018053833981519152916390c5013b9160048082019260009290919082900301818387803b158015620066f557600080fd5b505af11580156200174d573d6000803e3d6000fd5b6200120682158262005b4e565b806200678f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200677d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200678f62006822565b50565b6200678f81604051602401620067aa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b1790526200692b565b6200678f81604051602401620067f291815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316634e0c1d1d60e01b1790526200692b565b600080516020620180538339815191523b156200691a576040805160008051602062018053833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620068b5929160200162007415565b60408051601f1981840301815290829052620068d19162007448565b6000604051808303816000865af19150503d806000811462006910576040519150601f19603f3d011682016040523d82523d6000602084013e62006915565b606091505b505050505b6007805461ff001916610100179055565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6137d5806200762483390190565b610926806200adf983390190565b610120806200b71f83390190565b610c72806200b83f83390190565b613723806200c4b183390190565b6123c2806200fbd483390190565b6110db8062011f9683390190565b613043806201307183390190565b611f9f80620160b483390190565b600081518084526020808501945080840160005b8381101562006a055781516001600160a01b031687529582019590820190600101620069de565b509495945050505050565b60208152600062006a256020830184620069ca565b9392505050565b60005b8381101562006a4957818101518382015260200162006a2f565b50506000910152565b6000815180845262006a6c81602086016020860162006a2c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b3657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1f57605f1989850301835262006b0c84865162006a52565b948e01949350918d019160010162006aed565b505050978a01979450509188019160010162006aa7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006bee57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006bd85783516001600160e01b0319168252928b019260019290920191908b019062006bac565b50978a0197955050509187019160010162006b6e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006c5657603f1988860301845262006c4385835162006a52565b9450928501929085019060010162006c24565b5092979650505050505050565b80516001600160a01b038116811462003be557600080fd5b60006020828403121562006c8e57600080fd5b62006a258262006c63565b60006020828403121562006cac57600080fd5b8151801515811462006a2557600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111562006ce95762006ce962006cbd565b92915050565b60a08152600660a08201526561204e616d6560d01b60c082015260e06020820152600062006d3260e0830160058152641d5c9b1b1b60da1b602082015260400190565b60408301959095525060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562006de35783518352928401929184019160010162006dc5565b50909998505050505050505050565b60006020828403121562006e0557600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171562006e485762006e4862006e0c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562006e795762006e7962006e0c565b604052919050565b80516001600160401b038116811462003be557600080fd5b805161ffff8116811462003be557600080fd5b805160ff8116811462003be557600080fd5b805163ffffffff8116811462003be557600080fd5b8051600381900b811462003be557600080fd5b600060a0828403121562006ef957600080fd5b60405160a081018181106001600160401b038211171562006f1e5762006f1e62006e0c565b60405290508062006f2f8362006ed3565b815262006f3f6020840162006ed3565b602082015262006f526040840162006e81565b604082015262006f656060840162006e81565b606082015262006f786080840162006e81565b60808201525092915050565b60006101c0828403121562006f9857600080fd5b62006fa262006e22565b62006fad8362006e81565b815262006fbd6020840162006e81565b602082015262006fd06040840162006e81565b604082015262006fe36060840162006e99565b606082015262006ff66080840162006eac565b60808201526200700960a0840162006eac565b60a08201526200701c60c0840162006ebe565b60c082015260e083015160e0820152610100808401518183015250610120620070488582860162006ee6565b908201529392505050565b60006001600160401b038211156200706f576200706f62006e0c565b5060051b60200190565b600060208083850312156200708d57600080fd5b82516001600160401b03811115620070a457600080fd5b8301601f81018513620070b657600080fd5b8051620070cd620070c78262007053565b62006e4e565b81815260059190911b82018301908381019087831115620070ed57600080fd5b928401925b828410156200711657620071068462006c63565b82529284019290840190620070f2565b979650505050505050565b600080604083850312156200713557600080fd5b505080516020909101519092909150565b6040815260006200715b6040830185620069ca565b905060018060a01b03831660208301529392505050565b600060208083850312156200718657600080fd5b82516001600160401b038111156200719d57600080fd5b8301601f81018513620071af57600080fd5b8051620071c0620070c78262007053565b81815260059190911b82018301908381019087831115620071e057600080fd5b928401925b828410156200711657835182529284019290840190620071e5565b634e487b7160e01b600052603260045260246000fd5b600060a082840312156200722957600080fd5b62006a25838362006ee6565b600181811c908216806200724a57607f821691505b6020821081036200726b57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160401b0381811683821601908082111562007294576200729462006cbd565b5092915050565b602080825260119082015270617665727972616e646f6d737472696e6760781b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156200732e57607f198887030184526200731b86835162006a52565b95509284019290840190600101620072fc565b50505050838203604085015284518083528186019282019060005b818110156200736b57845161ffff168352938301939183019160010162007349565b509098975050505050505050565b6000608082840312156200738c57600080fd5b604051608081018181106001600160401b0382111715620073b157620073b162006e0c565b604052620073bf8362006e81565b8152620073cf6020840162006e81565b602082015260408301516040820152606083015160608201528091505092915050565b6000826200741057634e487b7160e01b600052601260045260246000fd5b500690565b6001600160e01b03198316815281516000906200743a81600485016020870162006a2c565b919091016004019392505050565b600082516200745c81846020870162006a2c565b9190910192915050565b6000602082840312156200747957600080fd5b81516001600160401b03808211156200749157600080fd5b818401915084601f830112620074a657600080fd5b815181811115620074bb57620074bb62006e0c565b620074d0601f8201601f191660200162006e4e565b9150808252856020828501011115620074e857600080fd5b620074fb81602084016020860162006a2c565b50949350505050565b60a0815260006200751960a083018762006a52565b82810360208401526200753e8160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b0316608090910152919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171562006ce95762006ce962006cbd565b60a081526000620075ab60a083018762006a52565b8281036020840152600881526768747470733a2f2f60c01b60208201526040810191505084604083015283606083015260018060a01b038316608083015295945050505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062006a25608083018462006a5256fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d6578706563746564206e65676174697665206f6e206c6f7374206d656d62657273885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e7ffafdaf8339683a1f18b65f7644128ad6a18098b03a9b33796c2b37d356e9b64736f6c63430008130033", - "sourceMap": "353:13334:117:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;353:13334:117;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b50620182f280620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001745760003560e01c80637a6afc6311620000d3578063e20c9f711162000086578063e20c9f711462000285578063e770e407146200028f578063efe074781462000299578063f11ec75d14620002a3578063fa7626d414620002ad578063fabeb26014620002bb57600080fd5b80637a6afc63146200022957806385226c811462000233578063916a17c6146200024c578063b5508aa91462000256578063ba414fa61462000260578063cf0aee08146200027b57600080fd5b80633e5e3c23116200012c5780633e5e3c2314620001de5780633f7286f414620001e85780635b1ee7e114620001f257806366d9a9a014620001fc5780636dcd8a901462000215578063766a5d8d146200021f57600080fd5b806203603214620001795780630a9254e41462000185578063134d9ed4146200018f5780631ed7831c1462000199578063209a06a514620001bb5780632ade388014620001c5575b600080fd5b62000183620002c5565b005b6200018362000659565b6200018362000fc0565b620001a36200120a565b604051620001b2919062006a10565b60405180910390f35b620001836200126e565b620001cf62001754565b604051620001b2919062006a80565b620001a3620018a2565b620001a362001904565b6200018362001966565b6200020662001c20565b604051620001b2919062006b46565b6200018362001d0a565b620001836200210d565b6200018362002985565b6200023d6200381f565b604051620001b2919062006bfd565b62000206620038f9565b6200023d620039e3565b6200026a62003abd565b6040519015158152602001620001b2565b6200018362003bea565b620001a362004351565b62000183620043b3565b6200018362004720565b6200018362004de2565b6007546200026a9060ff1681565b6200018362005488565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062005b4e565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062005b4e565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062005b4e565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062005b4e565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062005b4e565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062006c7b565b6001600160a01b031614604051806060016040528060288152602001620182956028913962005b4e565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062006c99565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062005b4e565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062006c7b565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062005b4e565b565b600042156200066957426200066f565b636553f0ff5b90506000805160206201823483398151915263e5d6bf026200069383600162006cd3565b6040518263ffffffff1660e01b8152600401620006b291815260200190565b600060405180830381600087803b158015620006cd57600080fd5b505af1158015620006e2573d6000803e3d6000fd5b50505050620006f062005b98565b604051620006fe906200694c565b604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062018234833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200081e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000844919062006c7b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200088657600080fd5b505af11580156200089b573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b158015620008e957600080fd5b505af1158015620008fe573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097c919062006c7b565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562000a0a57600080fd5b505af115801562000a1f573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562000a7857600080fd5b505af115801562000a8d573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000acc92600192600492911690820162006cef565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000b1d91506200695a565b6001600160a01b039091168152602001604051809103906000f08015801562000b4a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562000bdb57600080fd5b505af115801562000bf0573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018234833981519152915063ca669fa790602401600060405180830381600087803b15801562000c4c57600080fd5b505af115801562000c61573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000ca49216908590600190889060040162006d55565b6020604051808303816000875af115801562000cc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cea919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562000d4257600080fd5b505af115801562000d57573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000dac57600080fd5b505af115801562000dc1573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062006df2565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b8152600481019390935262000f069316916324d7806c91016020604051808303816000875af115801562000ea4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eca919062006c99565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062005b4e565b60248054602f5460405163288c314960e21b81526001600160a01b03918216600482015262000fbb93919092169163a230c5249101602060405180830381865afa15801562000f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7f919062006c99565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d62657200000000000000008152506200670a565b505050565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001038919062006f84565b905062001079816060015161ffff16601e146040518060400160405280601081526020016f06b206e6f742064656661756c742033360841b81525062005b4e565b620010c28160c0015163ffffffff1662278d0014604051806040016040528060168152602001756d696e20706572696f64206e6f74203330206461797360501b81525062005b4e565b620011094282600001516001600160401b03161015604051806040016040528060138152602001721b185cdd081c195c9a591bdb881d5b9a5b9a5d606a1b81525062005b4e565b60245460408051637c0f6b3560e01b815290516000926001600160a01b031691637c0f6b3591600480830192869291908290030181865afa15801562001153573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200117d919081019062007079565b9050620011bd8151600114604051806040016040528060168152602001753737ba1036b7b932903a3430b710189036b2b6b132b960511b81525062005b4e565b6200120682602001516001600160401b031660041460405180604001604052806015815260200174031206d656d6265722074636c20696e20736574757605c1b81525062005b4e565b5050565b606060148054806020026020016040519081016040528092919081815260200182805480156200126457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001245575b5050505050905090565b6200127862001966565b6000805160206201823483398151915263e5d6bf026200129a42600162006cd3565b6040518263ffffffff1660e01b8152600401620012b991815260200190565b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b50506022546024805460405163436ca71360e11b81526001600160a01b039182166004820152600095508594509216916386d94e2691016040805180830381865afa1580156200133d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001363919062007121565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015620013bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620013e7919081019062007079565b601c54602454604051600162965c6f60e01b031981529293506000926001600160a01b039283169263ff69a39192620014299287929091169060040162007146565b600060405180830381865afa15801562001447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001471919081019062007172565b9050620014b881518351146040518060400160405280601981526020017f6d656d62657220636f6d6d2e206c656e206d69736d617463680000000000000081525062005b4e565b6200153581600281518110620014d257620014d262007200565b602002602001015182600181518110620014f057620014f062007200565b6020026020010151146040518060400160405280601881526020017f616c6c20686176652073616d6520636f6d6d69746d656e74000000000000000081525062005b4e565b62001572662386f26fc100008410156040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015af678ac7230489e8000084106040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015eb8460041460405180604001604052806015815260200174185b1b081a185d99480d0b08195e1c1958d959080d605a1b81525062005b4e565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa1580156200163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001662919062007216565b9050620016a86001826000015160030b1360405180604001604052806016815260200175195e1c081b595b58995c9cc81dd95c9948185919195960521b81525062005b4e565b620016c08351826020015163ffffffff161462006717565b620017108482604001516001600160401b0316146040518060400160405280601881526020017f73686f756c642062652073616d65206c6966656379636c65000000000000000081525062005b4e565b6200174d8582606001516001600160401b0316146040518060400160405280600a815260200169185b1b081dd95c99480d60b21b81525062005b4e565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200189957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001881578382906000526020600020018054620017ed9062007235565b80601f01602080910402602001604051908101604052809291908181526020018280546200181b9062007235565b80156200186c5780601f1062001840576101008083540402835291602001916200186c565b820191906000526020600020905b8154815290600101906020018083116200184e57829003601f168201915b505050505081526020019060010190620017cb565b50505050815250508152602001906001019062001778565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6200197062003bea565b604051630618f58760e51b81526313a67ce960e31b6004820152600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b158015620019bf57600080fd5b505af1158015620019d4573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b0391821660048201526000955092169250636e09f59c91016000604051808303816000875af115801562001a97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac1919081019062007172565b90506000805160206201823483398151915263e5d6bf0262001ae74262278d0062006cd3565b6040518263ffffffff1660e01b815260040162001b0691815260200190565b600060405180830381600087803b15801562001b2157600080fd5b505af115801562001b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562001b8f57600080fd5b505af115801562001ba4573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001bf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001206919081019062007172565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001cf157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001cb25790505b5050505050815250508152602001906001019062001c44565b6000805160206201823483398151915263e5d6bf0262001d2e426283d60062006cd3565b6040518263ffffffff1660e01b815260040162001d4d91815260200190565b600060405180830381600087803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050505062001d8b62003bea565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001ddd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e03919062006f84565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562001e5b57600080fd5b505af115801562001e70573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600095509216925063083ad23b91016020604051808303816000875af115801562001ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eeb919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562001f4357600080fd5b505af115801562001f58573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd4919081019062007172565b5060225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562002027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204d919062006f84565b90508060c0015163ffffffff1681600001516200206b919062007271565b6001600160401b03169150620020ac428310156040518060400160405280600f81526020016e39b437bab632103132903630ba32b960891b81525062005b4e565b62000fbb8360c0015163ffffffff168460000151620020cc919062007271565b6001600160401b0316831015604051806040016040528060168152602001751c195c9a5bd9081a5b98dc995b595b9d0819985d5b1d60521b81525062005b4e565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200212557505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062002199576200219962007200565b602002602001018190525063a3c9eb4360e01b604051602401620021bd906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062002206576200220662007200565b602002602001018190525060058160008151811062002229576200222962007200565b602002602001019061ffff16908161ffff168152505060098160018151811062002257576200225762007200565b61ffff9290921660209283029190910190910152604051630618f58760e51b8152634755657960e01b6004820152600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e93506200230e929091169086908690600401620072c6565b600060405180830381600087803b1580156200232957600080fd5b505af11580156200233e573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200239757600080fd5b505af1158015620023ac573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e9350620023eb929091169086908690600401620072c6565b600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002499919062006df2565b50620024a4620043b3565b602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251e919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa1580156200257f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025a5919062007379565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b158015620025fd57600080fd5b505af115801562002612573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200266c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002692919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620026f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002719919062007379565b90506200275e600082602001516001600160401b0316116040518060400160405280600f81526020016e68617320736f6d6520706f696e747360881b81525062005b4e565b620027ae81602001516001600160401b031683602001516001600160401b0316106040518060400160405280601081526020016f1b9bc81c1bda5b9d1cc819d85a5b995960821b81525062005b4e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200280357600080fd5b505af115801562002818573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb4391506200284c906004016200729b565b6020604051808303816000875af11580156200286c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002892919062006df2565b5060225460265460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620028f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002919919062007379565b90506200296d600982602001516001600160401b031610156040518060400160405280601c81526020017f66756e6374696f6e2061726720706f696e7473206d69736d617463680000000081525062005b4e565b6200174d81602001516001600160401b031662006792565b6200298f6200126e565b60015b606481101562002eb95760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b158015620029ed57600080fd5b505af115801562002a02573d6000803e3d6000fd5b5050505060028162002a159190620073f2565b1562002a9757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002a4b906004016200729b565b6020604051808303816000875af115801562002a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a91919062006df2565b62002b13565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b13919062006df2565b5062002b21600282620073f2565b1562002ba357602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002b57906004016200729b565b6020604051808303816000875af115801562002b77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9d919062006df2565b62002c1f565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002bf9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c1f919062006df2565b5062002c2d600282620073f2565b1562002caf57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002c63906004016200729b565b6020604051808303816000875af115801562002c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca9919062006df2565b62002d2b565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2b919062006df2565b5062002d39600282620073f2565b1562002dbb57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002d6f906004016200729b565b6020604051808303816000875af115801562002d8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db5919062006df2565b62002e37565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e37919062006df2565b506000805160206201823483398151915263e5d6bf0262002e5a42600162006cd3565b6040518263ffffffff1660e01b815260040162002e7991815260200190565b600060405180830381600087803b15801562002e9457600080fd5b505af115801562002ea9573d6000803e3d6000fd5b5050505080600101905062002992565b6000805160206201823483398151915263e5d6bf0262002edd426228de8062006cd3565b6040518263ffffffff1660e01b815260040162002efc91815260200190565b600060405180830381600087803b15801562002f1757600080fd5b505af115801562002f2c573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f8557600080fd5b505af115801562002f9a573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562002fec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003016919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa15801562003068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308e919062007216565b9050620030a881608001516001600160401b031662006792565b6080810151600192505b6064831015620035db5760405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200310d57600080fd5b505af115801562003122573d6000803e3d6000fd5b50505050600283620031359190620073f2565b15620031b757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb43906200316b906004016200729b565b6020604051808303816000875af11580156200318b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031b1919062006df2565b62003233565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200320d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003233919062006df2565b5062003241600284620073f2565b600003620032c557602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003279906004016200729b565b6020604051808303816000875af115801562003299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032bf919062006df2565b62003341565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200331b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003341919062006df2565b506200334f600284620073f2565b15620033d157602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003385906004016200729b565b6020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062006df2565b6200344d565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200344d919062006df2565b506200345b600284620073f2565b15620034dd57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003491906004016200729b565b6020604051808303816000875af1158015620034b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034d7919062006df2565b62003559565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003559919062006df2565b506000805160206201823483398151915263e5d6bf026200357c42600162006cd3565b6040518263ffffffff1660e01b81526004016200359b91815260200190565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b50505050826001019250620030b2565b6000805160206201823483398151915263e5d6bf02620035ff426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200361e91815260200190565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620036a757600080fd5b505af1158015620036bc573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af11580156200370e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003738919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b03918216600482015292169163318e3d8c910160a060405180830381865afa15801562003785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037ab919062007216565b9150620037c582608001516001600160401b031662006792565b60008260800151905062003819826001600160401b0316826001600160401b0316141560405180604001604052806012815260200171195c5d585b1b1e481c195c999bdc9b585b9d60721b81525062005b4e565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001899578382906000526020600020018054620038659062007235565b80601f0160208091040260200160405190810160405280929190818152602001828054620038939062007235565b8015620038e45780601f10620038b857610100808354040283529160200191620038e4565b820191906000526020600020905b815481529060010190602001808311620038c657829003601f168201915b50505050508152602001906001019062003843565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620039ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200398b5790505b505050505081525050815260200190600101906200391d565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200189957838290600052602060002001805462003a299062007235565b80601f016020809104026020016040519081016040528092919081815260200182805462003a579062007235565b801562003aa85780601f1062003a7c5761010080835404028352916020019162003aa8565b820191906000526020600020905b81548152906001019060200180831162003a8a57829003601f168201915b50505050508152602001906001019062003a07565b600754600090610100900460ff161562003ae05750600754610100900460ff1690565b6000600080516020620182348339815191523b1562003be5576040805160008051602062018234833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162003b67917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007415565b60408051601f198184030181529082905262003b839162007448565b6000604051808303816000865af19150503d806000811462003bc2576040519150601f19603f3d011682016040523d82523d6000602084013e62003bc7565b606091505b509150508080602001905181019062003be1919062006c99565b9150505b919050565b6040805160028082526060820190925260039160019160059160009190816020015b606081526020019060019003908162003c0c57505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062003c805762003c8062007200565b602002602001018190525063a3c9eb4360e01b60405160240162003ca4906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062003ced5762003ced62007200565b6020026020010181905250838160008151811062003d0f5762003d0f62007200565b602002602001019061ffff16908161ffff1681525050828160018151811062003d3c5762003d3c62007200565b61ffff9290921660209283029190910190910152602f5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562003da557600080fd5b505af115801562003dba573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e935062003df9929091169086908690600401620072c6565b600060405180830381600087803b15801562003e1457600080fd5b505af115801562003e29573d6000803e3d6000fd5b506001925050505b6064811015620042845760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562003e8c57600080fd5b505af115801562003ea1573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201823483398151915290636900a3ae90602401600060405180830381865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f30919081019062007466565b6024546040516001600160e01b031960e085901b16815262003f6592916001916004916001600160a01b031690820162007504565b600060405180830381600087803b15801562003f8057600080fd5b505af115801562003f95573d6000803e3d6000fd5b5060008051602062018234833981519152925063e5d6bf02915062003fbe905042600162006cd3565b6040518263ffffffff1660e01b815260040162003fdd91815260200190565b600060405180830381600087803b15801562003ff857600080fd5b505af11580156200400d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200406257600080fd5b505af115801562004077573d6000803e3d6000fd5b505050506002816200408a9190620073f2565b156200410c57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb4390620040c0906004016200729b565b6020604051808303816000875af1158015620040e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004106919062006df2565b62004188565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562004162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004188919062006df2565b506000805160206201823483398151915263e5d6bf02620041ab42600162006cd3565b6040518263ffffffff1660e01b8152600401620041ca91815260200190565b600060405180830381600087803b158015620041e557600080fd5b505af1158015620041fa573d6000803e3d6000fd5b50506022546024805460405163343bce3b60e01b81526001600160a01b039182166004820152600196909601959216935063343bce3b9250016000604051808303816000875af115801562004253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200427d919081019062007172565b5062003e31565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152620043499360019392169163f1e0fa7891016101c060405180830381865afa158015620042d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042ff919062006f84565b600001516001600160401b0316116040518060400160405280601e81526020017f6c617374506572696f64206e6f7420626c6f636b2e74696d657374616d70000081525062005b4e565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6026546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062018234833981519152906306447d5690602401600060405180830381600087803b1580156200440857600080fd5b505af11580156200441d573d6000803e3d6000fd5b505050506000602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200449d919062006df2565b602d5460405163a3c9eb4360e01b815260206004820152600060248201529192506001600160a01b03169063a3c9eb43906044016020604051808303816000875af1158015620044f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004517919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa15801562004563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004589919062006df2565b602d5460405163a3c9eb4360e01b81529192506001600160a01b03169063a3c9eb4390620045ba906004016200729b565b6020604051808303816000875af1158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004600919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa1580156200464c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004672919062006df2565b9050620046b48162004685848662006cd3565b146040518060400160405280600f81526020016e139bdd08125b98dc995b595b9d1959608a1b81525062005b4e565b6000805160206201827583398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200470257600080fd5b505af115801562004717573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b8152636bd1573560e11b6004820152600590600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b1580156200477257600080fd5b505af115801562004787573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0387811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af1158015620047e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200480f919062006df2565b604051630618f58760e51b81526318dc243b60e31b6004820152909150600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b1580156200486157600080fd5b505af115801562004876573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b03888116600483015291821692810192909252909116925063df3e30f091506044016020604051808303816000875af115801562004943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004969919062006df2565b9050620049af816000146040518060400160405280601881526020017f4e6f207570646174652073636f726520697320626c616e6b000000000000000081525062005b4e565b620049b962003bea565b6000805160206201823483398151915263e5d6bf02620049dd426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620049fc91815260200190565b600060405180830381600087803b15801562004a1757600080fd5b505af115801562004a2c573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201823483398151915292506306447d569150602401600060405180830381600087803b15801562004a8557600080fd5b505af115801562004a9a573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0388811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af115801562004afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b22919062006df2565b905062004b56600182116040518060400160405280600b81526020016a1b9bdd081d5c19185d195960aa1b81525062005b4e565b6022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600093919091169163083ad23b91016020604051808303816000875af115801562004ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bcf919062006df2565b90506000805160206201823483398151915263e5d6bf0262004bf383600162006cd3565b6040518263ffffffff1660e01b815260040162004c1291815260200190565b600060405180830381600087803b15801562004c2d57600080fd5b505af115801562004c42573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b0391821660048201529216935063083ad23b9250016020604051808303816000875af115801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba919062006df2565b5060225460248054604051630df3e30f60e41b81526001600160a01b038881166004830152918216928101929092529091169063df3e30f0906044016020604051808303816000875af115801562004d16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d3c919062006df2565b915062004d75600183116040518060400160405280601081526020016f6861732061637475616c2073636f726560801b81525062005b4e565b6000805160206201827583398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004dc357600080fd5b505af115801562004dd8573d6000803e3d6000fd5b5050505050505050565b62004dec62005488565b601c5460248054604051632ca62cd560e01b81526001600160a01b0391821660048201526000939190911691632ca62cd59101600060405180830381865afa15801562004e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004e67919081019062007079565b905060055b8151811015620050aa5762004e83600282620073f2565b600003620050a1576000805160206201827583398151915260001c6001600160a01b031663ca669fa783838151811062004ec15762004ec162007200565b60200260200101516040518263ffffffff1660e01b815260040162004ef591906001600160a01b0391909116815260200190565b600060405180830381600087803b15801562004f1057600080fd5b505af115801562004f25573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb43915062004f59906004016200729b565b6020604051808303816000875af115801562004f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9f919062006df2565b506000805160206201827583398151915260001c6001600160a01b031663ca669fa783838151811062004fd65762004fd662007200565b60200260200101516040518263ffffffff1660e01b81526004016200500a91906001600160a01b0391909116815260200190565b600060405180830381600087803b1580156200502557600080fd5b505af11580156200503a573d6000803e3d6000fd5b5050601c54602480546040516351cff8d960e01b81526001600160a01b039182166004820152921693506351cff8d9925001600060405180830381600087803b1580156200508757600080fd5b505af11580156200509c573d6000803e3d6000fd5b505050505b60010162004e6c565b6000805160206201823483398151915263e5d6bf02620050ce426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620050ed91815260200190565b600060405180830381600087803b1580156200510857600080fd5b505af11580156200511d573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200517657600080fd5b505af11580156200518b573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af1158015620051dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005207919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa15801562005258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200527e919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa158015620052d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052fb919062007216565b601c5460248054604051632ca62cd560e01b81526001600160a01b039182166004820152939450600093921691632ca62cd59101600060405180830381865afa1580156200534d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005377919081019062007079565b9050620053a86000836000015160030b12604051806060016040528060218152602001620182546021913962005b4e565b620053ed81518751116040518060400160405280601e81526020017f6d656d62657273206c65667420666f72206e656761746976652064696666000081525062005b4e565b815186518251620054379260030b91620054079162007564565b60070b146040518060400160405280600d81526020016c32bc3832b1ba32b2103234b33360991b81525062005b4e565b62004349600083608001516001600160401b0316116040518060400160405280601a81526020017f657870656374656420706572666f726d616e63652073636f726500000000000081525062005b4e565b6200549262001966565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa158015620054e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005509919062007216565b9050661f9465b8ab8e385b661f9465b8ab8e74811015620058045760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200557557600080fd5b505af11580156200558a573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201823483398151915290636900a3ae90602401600060405180830381865afa158015620055ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005619919081019062007466565b6024546040516001600160e01b031960e085901b1681526200564f92916001916009916001600160a01b03169060040162007596565b600060405180830381600087803b1580156200566a57600080fd5b505af11580156200567f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620056d457600080fd5b505af1158015620056e9573d6000803e3d6000fd5b50505050600281620056fc9190620073f2565b156200577e57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062005732906004016200729b565b6020604051808303816000875af115801562005752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005778919062006df2565b620057fa565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620057d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057fa919062006df2565b5060010162005514565b6000805160206201823483398151915263e5d6bf0262005828426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200584791815260200190565b600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620058d057600080fd5b505af1158015620058e5573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562005937573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005961919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa158015620059b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059d8919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa15801562005a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a55919062007216565b905062005a936064826000015160030b126040518060400160405280600e81526020016d064696666207374696c6c203130360941b81525062005b4e565b62005aa5816020015160030b620067da565b62005abd81604001516001600160401b031662006792565b62005b02606482604001516001600160401b031611604051806040016040528060118152602001701b595b58995c9cc81b9bdd081859191959607a1b81525062005b4e565b6200174d600482606001516001600160401b0316116040518060400160405280601781526020017f73616d65206176657261676520636f6d6d69746d656e740000000000000000008152505b8162001206577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162005b859190620075f2565b60405180910390a1620012068262006717565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005c2957600080fd5b505af115801562005c3e573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018234833981519152925063c657c7189150608401600060405180830381600087803b15801562005cd357600080fd5b505af115801562005ce8573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018234833981519152925063c657c7189150608401600060405180830381600087803b15801562005d7d57600080fd5b505af115801562005d92573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005e3357600080fd5b505af115801562005e48573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201823483398151915292506306447d569150602401600060405180830381600087803b15801562005ea157600080fd5b505af115801562005eb6573d6000803e3d6000fd5b5050505060405162005ec89062006968565b604051809103906000f08015801562005ee5573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005f6f57600080fd5b505af115801562005f84573d6000803e3d6000fd5b5050505060405162005f969062006976565b604051809103906000f08015801562005fb3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200603c57600080fd5b505af115801562006051573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200609f57600080fd5b505af1158015620060b4573d6000803e3d6000fd5b50505050604051620060c69062006984565b604051809103906000f080158015620060e3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200616957600080fd5b505af11580156200617e573d6000803e3d6000fd5b50505050604051620061909062006992565b604051809103906000f080158015620061ad573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200623757600080fd5b505af11580156200624c573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200626d9150620069a0565b6001600160a01b039091168152602001604051809103906000f0801580156200629a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200632957600080fd5b505af11580156200633e573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200635f9150620069ae565b6001600160a01b039091168152602001604051809103906000f0801580156200638c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200641b57600080fd5b505af115801562006430573d6000803e3d6000fd5b5050505060405162006442906200694c565b604051809103906000f0801580156200645f573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620064bf57600080fd5b505af1158015620064d4573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200650590620069bc565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200654a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b158015620065d757600080fd5b505af1158015620065ec573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562006668573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200668e919062006c7b565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018234833981519152916390c5013b9160048082019260009290919082900301818387803b158015620066f557600080fd5b505af11580156200174d573d6000803e3d6000fd5b6200120682158262005b4e565b806200678f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200677d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200678f62006822565b50565b6200678f81604051602401620067aa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b1790526200692b565b6200678f81604051602401620067f291815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316634e0c1d1d60e01b1790526200692b565b600080516020620182348339815191523b156200691a576040805160008051602062018234833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620068b5929160200162007415565b60408051601f1981840301815290829052620068d19162007448565b6000604051808303816000865af19150503d806000811462006910576040519150601f19603f3d011682016040523d82523d6000602084013e62006915565b606091505b505050505b6007805461ff001916610100179055565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6137d5806200762483390190565b610926806200adf983390190565b610120806200b71f83390190565b610c72806200b83f83390190565b613723806200c4b183390190565b6125a3806200fbd483390190565b6110db806201217783390190565b613043806201325283390190565b611f9f806201629583390190565b600081518084526020808501945080840160005b8381101562006a055781516001600160a01b031687529582019590820190600101620069de565b509495945050505050565b60208152600062006a256020830184620069ca565b9392505050565b60005b8381101562006a4957818101518382015260200162006a2f565b50506000910152565b6000815180845262006a6c81602086016020860162006a2c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b3657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1f57605f1989850301835262006b0c84865162006a52565b948e01949350918d019160010162006aed565b505050978a01979450509188019160010162006aa7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006bee57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006bd85783516001600160e01b0319168252928b019260019290920191908b019062006bac565b50978a0197955050509187019160010162006b6e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006c5657603f1988860301845262006c4385835162006a52565b9450928501929085019060010162006c24565b5092979650505050505050565b80516001600160a01b038116811462003be557600080fd5b60006020828403121562006c8e57600080fd5b62006a258262006c63565b60006020828403121562006cac57600080fd5b8151801515811462006a2557600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111562006ce95762006ce962006cbd565b92915050565b60a08152600660a08201526561204e616d6560d01b60c082015260e06020820152600062006d3260e0830160058152641d5c9b1b1b60da1b602082015260400190565b60408301959095525060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562006de35783518352928401929184019160010162006dc5565b50909998505050505050505050565b60006020828403121562006e0557600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171562006e485762006e4862006e0c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562006e795762006e7962006e0c565b604052919050565b80516001600160401b038116811462003be557600080fd5b805161ffff8116811462003be557600080fd5b805160ff8116811462003be557600080fd5b805163ffffffff8116811462003be557600080fd5b8051600381900b811462003be557600080fd5b600060a0828403121562006ef957600080fd5b60405160a081018181106001600160401b038211171562006f1e5762006f1e62006e0c565b60405290508062006f2f8362006ed3565b815262006f3f6020840162006ed3565b602082015262006f526040840162006e81565b604082015262006f656060840162006e81565b606082015262006f786080840162006e81565b60808201525092915050565b60006101c0828403121562006f9857600080fd5b62006fa262006e22565b62006fad8362006e81565b815262006fbd6020840162006e81565b602082015262006fd06040840162006e81565b604082015262006fe36060840162006e99565b606082015262006ff66080840162006eac565b60808201526200700960a0840162006eac565b60a08201526200701c60c0840162006ebe565b60c082015260e083015160e0820152610100808401518183015250610120620070488582860162006ee6565b908201529392505050565b60006001600160401b038211156200706f576200706f62006e0c565b5060051b60200190565b600060208083850312156200708d57600080fd5b82516001600160401b03811115620070a457600080fd5b8301601f81018513620070b657600080fd5b8051620070cd620070c78262007053565b62006e4e565b81815260059190911b82018301908381019087831115620070ed57600080fd5b928401925b828410156200711657620071068462006c63565b82529284019290840190620070f2565b979650505050505050565b600080604083850312156200713557600080fd5b505080516020909101519092909150565b6040815260006200715b6040830185620069ca565b905060018060a01b03831660208301529392505050565b600060208083850312156200718657600080fd5b82516001600160401b038111156200719d57600080fd5b8301601f81018513620071af57600080fd5b8051620071c0620070c78262007053565b81815260059190911b82018301908381019087831115620071e057600080fd5b928401925b828410156200711657835182529284019290840190620071e5565b634e487b7160e01b600052603260045260246000fd5b600060a082840312156200722957600080fd5b62006a25838362006ee6565b600181811c908216806200724a57607f821691505b6020821081036200726b57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160401b0381811683821601908082111562007294576200729462006cbd565b5092915050565b602080825260119082015270617665727972616e646f6d737472696e6760781b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156200732e57607f198887030184526200731b86835162006a52565b95509284019290840190600101620072fc565b50505050838203604085015284518083528186019282019060005b818110156200736b57845161ffff168352938301939183019160010162007349565b509098975050505050505050565b6000608082840312156200738c57600080fd5b604051608081018181106001600160401b0382111715620073b157620073b162006e0c565b604052620073bf8362006e81565b8152620073cf6020840162006e81565b602082015260408301516040820152606083015160608201528091505092915050565b6000826200741057634e487b7160e01b600052601260045260246000fd5b500690565b6001600160e01b03198316815281516000906200743a81600485016020870162006a2c565b919091016004019392505050565b600082516200745c81846020870162006a2c565b9190910192915050565b6000602082840312156200747957600080fd5b81516001600160401b03808211156200749157600080fd5b818401915084601f830112620074a657600080fd5b815181811115620074bb57620074bb62006e0c565b620074d0601f8201601f191660200162006e4e565b9150808252856020828501011115620074e857600080fd5b620074fb81602084016020860162006a2c565b50949350505050565b60a0815260006200751960a083018762006a52565b82810360208401526200753e8160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b0316608090910152919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171562006ce95762006ce962006cbd565b60a081526000620075ab60a083018762006a52565b8281036020840152600881526768747470733a2f2f60c01b60208201526040810191505084604083015283606083015260018060a01b038316608083015295945050505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062006a25608083018462006a5256fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d6578706563746564206e65676174697665206f6e206c6f7374206d656d62657273885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e4c16e783794118043c45d1e2727291775891f37e6ccf6959e0d273c848d13f264736f6c63430008130033", + "sourceMap": "353:13334:130:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;353:13334:130;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001745760003560e01c80637a6afc6311620000d3578063e20c9f711162000086578063e20c9f711462000285578063e770e407146200028f578063efe074781462000299578063f11ec75d14620002a3578063fa7626d414620002ad578063fabeb26014620002bb57600080fd5b80637a6afc63146200022957806385226c811462000233578063916a17c6146200024c578063b5508aa91462000256578063ba414fa61462000260578063cf0aee08146200027b57600080fd5b80633e5e3c23116200012c5780633e5e3c2314620001de5780633f7286f414620001e85780635b1ee7e114620001f257806366d9a9a014620001fc5780636dcd8a901462000215578063766a5d8d146200021f57600080fd5b806203603214620001795780630a9254e41462000185578063134d9ed4146200018f5780631ed7831c1462000199578063209a06a514620001bb5780632ade388014620001c5575b600080fd5b62000183620002c5565b005b6200018362000659565b6200018362000fc0565b620001a36200120a565b604051620001b2919062006a10565b60405180910390f35b620001836200126e565b620001cf62001754565b604051620001b2919062006a80565b620001a3620018a2565b620001a362001904565b6200018362001966565b6200020662001c20565b604051620001b2919062006b46565b6200018362001d0a565b620001836200210d565b6200018362002985565b6200023d6200381f565b604051620001b2919062006bfd565b62000206620038f9565b6200023d620039e3565b6200026a62003abd565b6040519015158152602001620001b2565b6200018362003bea565b620001a362004351565b62000183620043b3565b6200018362004720565b6200018362004de2565b6007546200026a9060ff1681565b6200018362005488565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062005b4e565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062005b4e565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062005b4e565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062005b4e565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062005b4e565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062006c7b565b6001600160a01b031614604051806060016040528060288152602001620180b46028913962005b4e565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062006c99565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062005b4e565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062006c7b565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062005b4e565b565b600042156200066957426200066f565b636553f0ff5b90506000805160206201805383398151915263e5d6bf026200069383600162006cd3565b6040518263ffffffff1660e01b8152600401620006b291815260200190565b600060405180830381600087803b158015620006cd57600080fd5b505af1158015620006e2573d6000803e3d6000fd5b50505050620006f062005b98565b604051620006fe906200694c565b604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062018053833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200081e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000844919062006c7b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200088657600080fd5b505af11580156200089b573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b158015620008e957600080fd5b505af1158015620008fe573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097c919062006c7b565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562000a0a57600080fd5b505af115801562000a1f573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562000a7857600080fd5b505af115801562000a8d573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000acc92600192600492911690820162006cef565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000b1d91506200695a565b6001600160a01b039091168152602001604051809103906000f08015801562000b4a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562000bdb57600080fd5b505af115801562000bf0573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018053833981519152915063ca669fa790602401600060405180830381600087803b15801562000c4c57600080fd5b505af115801562000c61573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000ca49216908590600190889060040162006d55565b6020604051808303816000875af115801562000cc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cea919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562000d4257600080fd5b505af115801562000d57573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000dac57600080fd5b505af115801562000dc1573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062006df2565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b8152600481019390935262000f069316916324d7806c91016020604051808303816000875af115801562000ea4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eca919062006c99565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062005b4e565b60248054602f5460405163288c314960e21b81526001600160a01b03918216600482015262000fbb93919092169163a230c5249101602060405180830381865afa15801562000f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7f919062006c99565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d62657200000000000000008152506200670a565b505050565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001038919062006f84565b905062001079816060015161ffff16601e146040518060400160405280601081526020016f06b206e6f742064656661756c742033360841b81525062005b4e565b620010c28160c0015163ffffffff1662278d0014604051806040016040528060168152602001756d696e20706572696f64206e6f74203330206461797360501b81525062005b4e565b620011094282600001516001600160401b03161015604051806040016040528060138152602001721b185cdd081c195c9a591bdb881d5b9a5b9a5d606a1b81525062005b4e565b60245460408051637c0f6b3560e01b815290516000926001600160a01b031691637c0f6b3591600480830192869291908290030181865afa15801562001153573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200117d919081019062007079565b9050620011bd8151600114604051806040016040528060168152602001753737ba1036b7b932903a3430b710189036b2b6b132b960511b81525062005b4e565b6200120682602001516001600160401b031660041460405180604001604052806015815260200174031206d656d6265722074636c20696e20736574757605c1b81525062005b4e565b5050565b606060148054806020026020016040519081016040528092919081815260200182805480156200126457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001245575b5050505050905090565b6200127862001966565b6000805160206201805383398151915263e5d6bf026200129a42600162006cd3565b6040518263ffffffff1660e01b8152600401620012b991815260200190565b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b50506022546024805460405163436ca71360e11b81526001600160a01b039182166004820152600095508594509216916386d94e2691016040805180830381865afa1580156200133d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001363919062007121565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015620013bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620013e7919081019062007079565b601c54602454604051600162965c6f60e01b031981529293506000926001600160a01b039283169263ff69a39192620014299287929091169060040162007146565b600060405180830381865afa15801562001447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001471919081019062007172565b9050620014b881518351146040518060400160405280601981526020017f6d656d62657220636f6d6d2e206c656e206d69736d617463680000000000000081525062005b4e565b6200153581600281518110620014d257620014d262007200565b602002602001015182600181518110620014f057620014f062007200565b6020026020010151146040518060400160405280601881526020017f616c6c20686176652073616d6520636f6d6d69746d656e74000000000000000081525062005b4e565b62001572662386f26fc100008410156040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015af678ac7230489e8000084106040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015eb8460041460405180604001604052806015815260200174185b1b081a185d99480d0b08195e1c1958d959080d605a1b81525062005b4e565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa1580156200163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001662919062007216565b9050620016a86001826000015160030b1360405180604001604052806016815260200175195e1c081b595b58995c9cc81dd95c9948185919195960521b81525062005b4e565b620016c08351826020015163ffffffff161462006717565b620017108482604001516001600160401b0316146040518060400160405280601881526020017f73686f756c642062652073616d65206c6966656379636c65000000000000000081525062005b4e565b6200174d8582606001516001600160401b0316146040518060400160405280600a815260200169185b1b081dd95c99480d60b21b81525062005b4e565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200189957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001881578382906000526020600020018054620017ed9062007235565b80601f01602080910402602001604051908101604052809291908181526020018280546200181b9062007235565b80156200186c5780601f1062001840576101008083540402835291602001916200186c565b820191906000526020600020905b8154815290600101906020018083116200184e57829003601f168201915b505050505081526020019060010190620017cb565b50505050815250508152602001906001019062001778565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6200197062003bea565b604051630618f58760e51b81526313a67ce960e31b6004820152600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b158015620019bf57600080fd5b505af1158015620019d4573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b0391821660048201526000955092169250636e09f59c91016000604051808303816000875af115801562001a97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac1919081019062007172565b90506000805160206201805383398151915263e5d6bf0262001ae74262278d0062006cd3565b6040518263ffffffff1660e01b815260040162001b0691815260200190565b600060405180830381600087803b15801562001b2157600080fd5b505af115801562001b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562001b8f57600080fd5b505af115801562001ba4573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001bf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001206919081019062007172565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001cf157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001cb25790505b5050505050815250508152602001906001019062001c44565b6000805160206201805383398151915263e5d6bf0262001d2e426283d60062006cd3565b6040518263ffffffff1660e01b815260040162001d4d91815260200190565b600060405180830381600087803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050505062001d8b62003bea565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001ddd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e03919062006f84565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562001e5b57600080fd5b505af115801562001e70573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600095509216925063083ad23b91016020604051808303816000875af115801562001ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eeb919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562001f4357600080fd5b505af115801562001f58573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd4919081019062007172565b5060225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562002027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204d919062006f84565b90508060c0015163ffffffff1681600001516200206b919062007271565b6001600160401b03169150620020ac428310156040518060400160405280600f81526020016e39b437bab632103132903630ba32b960891b81525062005b4e565b62000fbb8360c0015163ffffffff168460000151620020cc919062007271565b6001600160401b0316831015604051806040016040528060168152602001751c195c9a5bd9081a5b98dc995b595b9d0819985d5b1d60521b81525062005b4e565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200212557505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062002199576200219962007200565b602002602001018190525063a3c9eb4360e01b604051602401620021bd906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062002206576200220662007200565b602002602001018190525060058160008151811062002229576200222962007200565b602002602001019061ffff16908161ffff168152505060098160018151811062002257576200225762007200565b61ffff9290921660209283029190910190910152604051630618f58760e51b8152634755657960e01b6004820152600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e93506200230e929091169086908690600401620072c6565b600060405180830381600087803b1580156200232957600080fd5b505af11580156200233e573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200239757600080fd5b505af1158015620023ac573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e9350620023eb929091169086908690600401620072c6565b600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002499919062006df2565b50620024a4620043b3565b602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251e919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa1580156200257f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025a5919062007379565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b158015620025fd57600080fd5b505af115801562002612573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200266c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002692919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620026f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002719919062007379565b90506200275e600082602001516001600160401b0316116040518060400160405280600f81526020016e68617320736f6d6520706f696e747360881b81525062005b4e565b620027ae81602001516001600160401b031683602001516001600160401b0316106040518060400160405280601081526020016f1b9bc81c1bda5b9d1cc819d85a5b995960821b81525062005b4e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200280357600080fd5b505af115801562002818573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb4391506200284c906004016200729b565b6020604051808303816000875af11580156200286c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002892919062006df2565b5060225460265460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620028f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002919919062007379565b90506200296d600982602001516001600160401b031610156040518060400160405280601c81526020017f66756e6374696f6e2061726720706f696e7473206d69736d617463680000000081525062005b4e565b6200174d81602001516001600160401b031662006792565b6200298f6200126e565b60015b606481101562002eb95760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b158015620029ed57600080fd5b505af115801562002a02573d6000803e3d6000fd5b5050505060028162002a159190620073f2565b1562002a9757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002a4b906004016200729b565b6020604051808303816000875af115801562002a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a91919062006df2565b62002b13565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b13919062006df2565b5062002b21600282620073f2565b1562002ba357602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002b57906004016200729b565b6020604051808303816000875af115801562002b77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9d919062006df2565b62002c1f565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002bf9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c1f919062006df2565b5062002c2d600282620073f2565b1562002caf57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002c63906004016200729b565b6020604051808303816000875af115801562002c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca9919062006df2565b62002d2b565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2b919062006df2565b5062002d39600282620073f2565b1562002dbb57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002d6f906004016200729b565b6020604051808303816000875af115801562002d8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db5919062006df2565b62002e37565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e37919062006df2565b506000805160206201805383398151915263e5d6bf0262002e5a42600162006cd3565b6040518263ffffffff1660e01b815260040162002e7991815260200190565b600060405180830381600087803b15801562002e9457600080fd5b505af115801562002ea9573d6000803e3d6000fd5b5050505080600101905062002992565b6000805160206201805383398151915263e5d6bf0262002edd426228de8062006cd3565b6040518263ffffffff1660e01b815260040162002efc91815260200190565b600060405180830381600087803b15801562002f1757600080fd5b505af115801562002f2c573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f8557600080fd5b505af115801562002f9a573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562002fec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003016919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa15801562003068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308e919062007216565b9050620030a881608001516001600160401b031662006792565b6080810151600192505b6064831015620035db5760405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200310d57600080fd5b505af115801562003122573d6000803e3d6000fd5b50505050600283620031359190620073f2565b15620031b757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb43906200316b906004016200729b565b6020604051808303816000875af11580156200318b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031b1919062006df2565b62003233565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200320d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003233919062006df2565b5062003241600284620073f2565b600003620032c557602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003279906004016200729b565b6020604051808303816000875af115801562003299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032bf919062006df2565b62003341565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200331b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003341919062006df2565b506200334f600284620073f2565b15620033d157602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003385906004016200729b565b6020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062006df2565b6200344d565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200344d919062006df2565b506200345b600284620073f2565b15620034dd57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003491906004016200729b565b6020604051808303816000875af1158015620034b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034d7919062006df2565b62003559565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003559919062006df2565b506000805160206201805383398151915263e5d6bf026200357c42600162006cd3565b6040518263ffffffff1660e01b81526004016200359b91815260200190565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b50505050826001019250620030b2565b6000805160206201805383398151915263e5d6bf02620035ff426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200361e91815260200190565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620036a757600080fd5b505af1158015620036bc573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af11580156200370e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003738919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b03918216600482015292169163318e3d8c910160a060405180830381865afa15801562003785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037ab919062007216565b9150620037c582608001516001600160401b031662006792565b60008260800151905062003819826001600160401b0316826001600160401b0316141560405180604001604052806012815260200171195c5d585b1b1e481c195c999bdc9b585b9d60721b81525062005b4e565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001899578382906000526020600020018054620038659062007235565b80601f0160208091040260200160405190810160405280929190818152602001828054620038939062007235565b8015620038e45780601f10620038b857610100808354040283529160200191620038e4565b820191906000526020600020905b815481529060010190602001808311620038c657829003601f168201915b50505050508152602001906001019062003843565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620039ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200398b5790505b505050505081525050815260200190600101906200391d565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200189957838290600052602060002001805462003a299062007235565b80601f016020809104026020016040519081016040528092919081815260200182805462003a579062007235565b801562003aa85780601f1062003a7c5761010080835404028352916020019162003aa8565b820191906000526020600020905b81548152906001019060200180831162003a8a57829003601f168201915b50505050508152602001906001019062003a07565b600754600090610100900460ff161562003ae05750600754610100900460ff1690565b6000600080516020620180538339815191523b1562003be5576040805160008051602062018053833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162003b67917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007415565b60408051601f198184030181529082905262003b839162007448565b6000604051808303816000865af19150503d806000811462003bc2576040519150601f19603f3d011682016040523d82523d6000602084013e62003bc7565b606091505b509150508080602001905181019062003be1919062006c99565b9150505b919050565b6040805160028082526060820190925260039160019160059160009190816020015b606081526020019060019003908162003c0c57505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062003c805762003c8062007200565b602002602001018190525063a3c9eb4360e01b60405160240162003ca4906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062003ced5762003ced62007200565b6020026020010181905250838160008151811062003d0f5762003d0f62007200565b602002602001019061ffff16908161ffff1681525050828160018151811062003d3c5762003d3c62007200565b61ffff9290921660209283029190910190910152602f5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562003da557600080fd5b505af115801562003dba573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e935062003df9929091169086908690600401620072c6565b600060405180830381600087803b15801562003e1457600080fd5b505af115801562003e29573d6000803e3d6000fd5b506001925050505b6064811015620042845760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b15801562003e8c57600080fd5b505af115801562003ea1573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201805383398151915290636900a3ae90602401600060405180830381865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f30919081019062007466565b6024546040516001600160e01b031960e085901b16815262003f6592916001916004916001600160a01b031690820162007504565b600060405180830381600087803b15801562003f8057600080fd5b505af115801562003f95573d6000803e3d6000fd5b5060008051602062018053833981519152925063e5d6bf02915062003fbe905042600162006cd3565b6040518263ffffffff1660e01b815260040162003fdd91815260200190565b600060405180830381600087803b15801562003ff857600080fd5b505af11580156200400d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200406257600080fd5b505af115801562004077573d6000803e3d6000fd5b505050506002816200408a9190620073f2565b156200410c57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb4390620040c0906004016200729b565b6020604051808303816000875af1158015620040e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004106919062006df2565b62004188565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562004162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004188919062006df2565b506000805160206201805383398151915263e5d6bf02620041ab42600162006cd3565b6040518263ffffffff1660e01b8152600401620041ca91815260200190565b600060405180830381600087803b158015620041e557600080fd5b505af1158015620041fa573d6000803e3d6000fd5b50506022546024805460405163343bce3b60e01b81526001600160a01b039182166004820152600196909601959216935063343bce3b9250016000604051808303816000875af115801562004253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200427d919081019062007172565b5062003e31565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152620043499360019392169163f1e0fa7891016101c060405180830381865afa158015620042d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042ff919062006f84565b600001516001600160401b0316116040518060400160405280601e81526020017f6c617374506572696f64206e6f7420626c6f636b2e74696d657374616d70000081525062005b4e565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6026546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062018053833981519152906306447d5690602401600060405180830381600087803b1580156200440857600080fd5b505af11580156200441d573d6000803e3d6000fd5b505050506000602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200449d919062006df2565b602d5460405163a3c9eb4360e01b815260206004820152600060248201529192506001600160a01b03169063a3c9eb43906044016020604051808303816000875af1158015620044f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004517919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa15801562004563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004589919062006df2565b602d5460405163a3c9eb4360e01b81529192506001600160a01b03169063a3c9eb4390620045ba906004016200729b565b6020604051808303816000875af1158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004600919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa1580156200464c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004672919062006df2565b9050620046b48162004685848662006cd3565b146040518060400160405280600f81526020016e139bdd08125b98dc995b595b9d1959608a1b81525062005b4e565b6000805160206201809483398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200470257600080fd5b505af115801562004717573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b8152636bd1573560e11b6004820152600590600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b1580156200477257600080fd5b505af115801562004787573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0387811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af1158015620047e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200480f919062006df2565b604051630618f58760e51b81526318dc243b60e31b6004820152909150600080516020620180538339815191529063c31eb0e090602401600060405180830381600087803b1580156200486157600080fd5b505af115801562004876573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b03888116600483015291821692810192909252909116925063df3e30f091506044016020604051808303816000875af115801562004943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004969919062006df2565b9050620049af816000146040518060400160405280601881526020017f4e6f207570646174652073636f726520697320626c616e6b000000000000000081525062005b4e565b620049b962003bea565b6000805160206201805383398151915263e5d6bf02620049dd426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620049fc91815260200190565b600060405180830381600087803b15801562004a1757600080fd5b505af115801562004a2c573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201805383398151915292506306447d569150602401600060405180830381600087803b15801562004a8557600080fd5b505af115801562004a9a573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0388811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af115801562004afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b22919062006df2565b905062004b56600182116040518060400160405280600b81526020016a1b9bdd081d5c19185d195960aa1b81525062005b4e565b6022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600093919091169163083ad23b91016020604051808303816000875af115801562004ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bcf919062006df2565b90506000805160206201805383398151915263e5d6bf0262004bf383600162006cd3565b6040518263ffffffff1660e01b815260040162004c1291815260200190565b600060405180830381600087803b15801562004c2d57600080fd5b505af115801562004c42573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b0391821660048201529216935063083ad23b9250016020604051808303816000875af115801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba919062006df2565b5060225460248054604051630df3e30f60e41b81526001600160a01b038881166004830152918216928101929092529091169063df3e30f0906044016020604051808303816000875af115801562004d16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d3c919062006df2565b915062004d75600183116040518060400160405280601081526020016f6861732061637475616c2073636f726560801b81525062005b4e565b6000805160206201809483398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004dc357600080fd5b505af115801562004dd8573d6000803e3d6000fd5b5050505050505050565b62004dec62005488565b601c5460248054604051632ca62cd560e01b81526001600160a01b0391821660048201526000939190911691632ca62cd59101600060405180830381865afa15801562004e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004e67919081019062007079565b905060055b8151811015620050aa5762004e83600282620073f2565b600003620050a1576000805160206201809483398151915260001c6001600160a01b031663ca669fa783838151811062004ec15762004ec162007200565b60200260200101516040518263ffffffff1660e01b815260040162004ef591906001600160a01b0391909116815260200190565b600060405180830381600087803b15801562004f1057600080fd5b505af115801562004f25573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb43915062004f59906004016200729b565b6020604051808303816000875af115801562004f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9f919062006df2565b506000805160206201809483398151915260001c6001600160a01b031663ca669fa783838151811062004fd65762004fd662007200565b60200260200101516040518263ffffffff1660e01b81526004016200500a91906001600160a01b0391909116815260200190565b600060405180830381600087803b1580156200502557600080fd5b505af11580156200503a573d6000803e3d6000fd5b5050601c54602480546040516351cff8d960e01b81526001600160a01b039182166004820152921693506351cff8d9925001600060405180830381600087803b1580156200508757600080fd5b505af11580156200509c573d6000803e3d6000fd5b505050505b60010162004e6c565b6000805160206201805383398151915263e5d6bf02620050ce426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620050ed91815260200190565b600060405180830381600087803b1580156200510857600080fd5b505af11580156200511d573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b1580156200517657600080fd5b505af11580156200518b573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af1158015620051dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005207919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa15801562005258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200527e919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa158015620052d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052fb919062007216565b601c5460248054604051632ca62cd560e01b81526001600160a01b039182166004820152939450600093921691632ca62cd59101600060405180830381865afa1580156200534d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005377919081019062007079565b9050620053a86000836000015160030b12604051806060016040528060218152602001620180736021913962005b4e565b620053ed81518751116040518060400160405280601e81526020017f6d656d62657273206c65667420666f72206e656761746976652064696666000081525062005b4e565b815186518251620054379260030b91620054079162007564565b60070b146040518060400160405280600d81526020016c32bc3832b1ba32b2103234b33360991b81525062005b4e565b62004349600083608001516001600160401b0316116040518060400160405280601a81526020017f657870656374656420706572666f726d616e63652073636f726500000000000081525062005b4e565b6200549262001966565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa158015620054e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005509919062007216565b9050661f9465b8ab8e385b661f9465b8ab8e74811015620058045760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620180538339815191529063ca669fa790602401600060405180830381600087803b1580156200557557600080fd5b505af11580156200558a573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201805383398151915290636900a3ae90602401600060405180830381865afa158015620055ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005619919081019062007466565b6024546040516001600160e01b031960e085901b1681526200564f92916001916009916001600160a01b03169060040162007596565b600060405180830381600087803b1580156200566a57600080fd5b505af11580156200567f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620056d457600080fd5b505af1158015620056e9573d6000803e3d6000fd5b50505050600281620056fc9190620073f2565b156200577e57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062005732906004016200729b565b6020604051808303816000875af115801562005752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005778919062006df2565b620057fa565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620057d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057fa919062006df2565b5060010162005514565b6000805160206201805383398151915263e5d6bf0262005828426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200584791815260200190565b600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018053833981519152925063ca669fa79150602401600060405180830381600087803b158015620058d057600080fd5b505af1158015620058e5573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562005937573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005961919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa158015620059b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059d8919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa15801562005a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a55919062007216565b905062005a936064826000015160030b126040518060400160405280600e81526020016d064696666207374696c6c203130360941b81525062005b4e565b62005aa5816020015160030b620067da565b62005abd81604001516001600160401b031662006792565b62005b02606482604001516001600160401b031611604051806040016040528060118152602001701b595b58995c9cc81b9bdd081859191959607a1b81525062005b4e565b6200174d600482606001516001600160401b0316116040518060400160405280601781526020017f73616d65206176657261676520636f6d6d69746d656e740000000000000000008152505b8162001206577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162005b859190620075f2565b60405180910390a1620012068262006717565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005c2957600080fd5b505af115801562005c3e573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018053833981519152925063c657c7189150608401600060405180830381600087803b15801562005cd357600080fd5b505af115801562005ce8573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018053833981519152925063c657c7189150608401600060405180830381600087803b15801562005d7d57600080fd5b505af115801562005d92573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005e3357600080fd5b505af115801562005e48573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201805383398151915292506306447d569150602401600060405180830381600087803b15801562005ea157600080fd5b505af115801562005eb6573d6000803e3d6000fd5b5050505060405162005ec89062006968565b604051809103906000f08015801562005ee5573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b15801562005f6f57600080fd5b505af115801562005f84573d6000803e3d6000fd5b5050505060405162005f969062006976565b604051809103906000f08015801562005fb3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200603c57600080fd5b505af115801562006051573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200609f57600080fd5b505af1158015620060b4573d6000803e3d6000fd5b50505050604051620060c69062006984565b604051809103906000f080158015620060e3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200616957600080fd5b505af11580156200617e573d6000803e3d6000fd5b50505050604051620061909062006992565b604051809103906000f080158015620061ad573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200623757600080fd5b505af11580156200624c573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200626d9150620069a0565b6001600160a01b039091168152602001604051809103906000f0801580156200629a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200632957600080fd5b505af11580156200633e573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200635f9150620069ae565b6001600160a01b039091168152602001604051809103906000f0801580156200638c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b1580156200641b57600080fd5b505af115801562006430573d6000803e3d6000fd5b5050505060405162006442906200694c565b604051809103906000f0801580156200645f573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620064bf57600080fd5b505af1158015620064d4573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200650590620069bc565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200654a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620180538339815191529063c657c71890608401600060405180830381600087803b158015620065d757600080fd5b505af1158015620065ec573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562006668573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200668e919062006c7b565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018053833981519152916390c5013b9160048082019260009290919082900301818387803b158015620066f557600080fd5b505af11580156200174d573d6000803e3d6000fd5b6200120682158262005b4e565b806200678f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200677d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200678f62006822565b50565b6200678f81604051602401620067aa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b1790526200692b565b6200678f81604051602401620067f291815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316634e0c1d1d60e01b1790526200692b565b600080516020620180538339815191523b156200691a576040805160008051602062018053833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620068b5929160200162007415565b60408051601f1981840301815290829052620068d19162007448565b6000604051808303816000865af19150503d806000811462006910576040519150601f19603f3d011682016040523d82523d6000602084013e62006915565b606091505b505050505b6007805461ff001916610100179055565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6137d5806200762483390190565b610926806200adf983390190565b610120806200b71f83390190565b610c72806200b83f83390190565b613723806200c4b183390190565b6123c2806200fbd483390190565b6110db8062011f9683390190565b613043806201307183390190565b611f9f80620160b483390190565b600081518084526020808501945080840160005b8381101562006a055781516001600160a01b031687529582019590820190600101620069de565b509495945050505050565b60208152600062006a256020830184620069ca565b9392505050565b60005b8381101562006a4957818101518382015260200162006a2f565b50506000910152565b6000815180845262006a6c81602086016020860162006a2c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b3657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1f57605f1989850301835262006b0c84865162006a52565b948e01949350918d019160010162006aed565b505050978a01979450509188019160010162006aa7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006bee57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006bd85783516001600160e01b0319168252928b019260019290920191908b019062006bac565b50978a0197955050509187019160010162006b6e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006c5657603f1988860301845262006c4385835162006a52565b9450928501929085019060010162006c24565b5092979650505050505050565b80516001600160a01b038116811462003be557600080fd5b60006020828403121562006c8e57600080fd5b62006a258262006c63565b60006020828403121562006cac57600080fd5b8151801515811462006a2557600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111562006ce95762006ce962006cbd565b92915050565b60a08152600660a08201526561204e616d6560d01b60c082015260e06020820152600062006d3260e0830160058152641d5c9b1b1b60da1b602082015260400190565b60408301959095525060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562006de35783518352928401929184019160010162006dc5565b50909998505050505050505050565b60006020828403121562006e0557600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171562006e485762006e4862006e0c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562006e795762006e7962006e0c565b604052919050565b80516001600160401b038116811462003be557600080fd5b805161ffff8116811462003be557600080fd5b805160ff8116811462003be557600080fd5b805163ffffffff8116811462003be557600080fd5b8051600381900b811462003be557600080fd5b600060a0828403121562006ef957600080fd5b60405160a081018181106001600160401b038211171562006f1e5762006f1e62006e0c565b60405290508062006f2f8362006ed3565b815262006f3f6020840162006ed3565b602082015262006f526040840162006e81565b604082015262006f656060840162006e81565b606082015262006f786080840162006e81565b60808201525092915050565b60006101c0828403121562006f9857600080fd5b62006fa262006e22565b62006fad8362006e81565b815262006fbd6020840162006e81565b602082015262006fd06040840162006e81565b604082015262006fe36060840162006e99565b606082015262006ff66080840162006eac565b60808201526200700960a0840162006eac565b60a08201526200701c60c0840162006ebe565b60c082015260e083015160e0820152610100808401518183015250610120620070488582860162006ee6565b908201529392505050565b60006001600160401b038211156200706f576200706f62006e0c565b5060051b60200190565b600060208083850312156200708d57600080fd5b82516001600160401b03811115620070a457600080fd5b8301601f81018513620070b657600080fd5b8051620070cd620070c78262007053565b62006e4e565b81815260059190911b82018301908381019087831115620070ed57600080fd5b928401925b828410156200711657620071068462006c63565b82529284019290840190620070f2565b979650505050505050565b600080604083850312156200713557600080fd5b505080516020909101519092909150565b6040815260006200715b6040830185620069ca565b905060018060a01b03831660208301529392505050565b600060208083850312156200718657600080fd5b82516001600160401b038111156200719d57600080fd5b8301601f81018513620071af57600080fd5b8051620071c0620070c78262007053565b81815260059190911b82018301908381019087831115620071e057600080fd5b928401925b828410156200711657835182529284019290840190620071e5565b634e487b7160e01b600052603260045260246000fd5b600060a082840312156200722957600080fd5b62006a25838362006ee6565b600181811c908216806200724a57607f821691505b6020821081036200726b57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160401b0381811683821601908082111562007294576200729462006cbd565b5092915050565b602080825260119082015270617665727972616e646f6d737472696e6760781b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156200732e57607f198887030184526200731b86835162006a52565b95509284019290840190600101620072fc565b50505050838203604085015284518083528186019282019060005b818110156200736b57845161ffff168352938301939183019160010162007349565b509098975050505050505050565b6000608082840312156200738c57600080fd5b604051608081018181106001600160401b0382111715620073b157620073b162006e0c565b604052620073bf8362006e81565b8152620073cf6020840162006e81565b602082015260408301516040820152606083015160608201528091505092915050565b6000826200741057634e487b7160e01b600052601260045260246000fd5b500690565b6001600160e01b03198316815281516000906200743a81600485016020870162006a2c565b919091016004019392505050565b600082516200745c81846020870162006a2c565b9190910192915050565b6000602082840312156200747957600080fd5b81516001600160401b03808211156200749157600080fd5b818401915084601f830112620074a657600080fd5b815181811115620074bb57620074bb62006e0c565b620074d0601f8201601f191660200162006e4e565b9150808252856020828501011115620074e857600080fd5b620074fb81602084016020860162006a2c565b50949350505050565b60a0815260006200751960a083018762006a52565b82810360208401526200753e8160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b0316608090910152919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171562006ce95762006ce962006cbd565b60a081526000620075ab60a083018762006a52565b8281036020840152600881526768747470733a2f2f60c01b60208201526040810191505084604083015283606083015260018060a01b038316608083015295945050505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062006a25608083018462006a5256fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d6578706563746564206e65676174697665206f6e206c6f7374206d656d62657273885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e7ffafdaf8339683a1f18b65f7644128ad6a18098b03a9b33796c2b37d356e9b64736f6c63430008130033", - "sourceMap": "353:13334:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;539:1213:117;;;:::i;3560:492::-;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:1183:117;;;:::i;3360:151:59:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;7024:375:117:-;;;:::i;2738:178:59:-;;;:::i;:::-;;;;;;;:::i;5362:672:117:-;;;:::i;2211:1343::-;;;:::i;11216:2469::-;;;:::i;2592:140:59:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5573:14:121;;5566:22;5548:41;;5536:2;5521:18;1819:584:52;5408:187:121;4058:1298:117;;;:::i;2304:142:59:-;;;:::i;1758:447:117:-;;;:::i;6040:978::-;;;:::i;9871:1339::-;;;:::i;1572:26:52:-;;;;;;;;;8594:1271:117;;;:::i;2912:713:114:-;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;6141:51:121;3476:66:114;;3487:3;;;;;:23;;6114:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;539:1213:117:-;582:13;598:15;:20;:51;;634:15;598:51;;;621:10;598:51;582:67;-1:-1:-1;;;;;;;;;;;;659:7:117;667:9;582:67;675:1;667:9;:::i;:::-;659:18;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;659:18:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:13;:11;:13::i;:::-;727:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;712:12:117;:36;;-1:-1:-1;;;;;;712:36:117;-1:-1:-1;;;;;712:36:117;;;;;;;;;758:43;;;-1:-1:-1;;;758:43:117;;;;;7141:51:121;;;;7208:18;;;7201:30;7267:1;7247:18;;;7240:29;-1:-1:-1;;;7285:18:121;;;7278:38;-1:-1:-1;;;;;;;;;;;758:8:117;;;7333:19:121;;758:43:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;821:3:117;;:11;;;-1:-1:-1;;;821:11:117;;;;-1:-1:-1;;;;;;;;;;;812:8:117;-1:-1:-1;812:8:117;;-1:-1:-1;;;;;;821:3:117;;;;:9;;:11;;;;;;;;;;;;;;;:3;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;812:21;;-1:-1:-1;;;;;;812:21:117;;;;;;;-1:-1:-1;;;;;6159:32:121;;;812:21:117;;;6141:51:121;6114:18;;812:21:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;843:3:117;;874:12;;843:45;;-1:-1:-1;;;843:45:117;;-1:-1:-1;;;;;874:12:117;;;843:45;;;6141:51:121;843:3:117;;;-1:-1:-1;843:22:117;;-1:-1:-1;6114:18:121;;843:45:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:3;;;;;;;;;-1:-1:-1;;;;;922:3:117;-1:-1:-1;;;;;922:17:117;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;899:3;:43;;-1:-1:-1;;;;;;899:43:117;-1:-1:-1;;;;;899:43:117;;;;;;;;;952:41;;;-1:-1:-1;;;952:41:117;;;;;7575:51:121;;;;7642:18;;;7635:30;7701:2;7681:18;;;7674:30;-1:-1:-1;;;7720:18:121;;;7713:45;-1:-1:-1;;;;;;;;;;;952:8:117;;;7775:19:121;;952:41:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1013:2:117;;1004:12;;-1:-1:-1;;;1004:12:117;;-1:-1:-1;;;;;1013:2:117;;;1004:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1004:8:117;-1:-1:-1;1004:8:117;;-1:-1:-1;6114:18:121;;1004:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1026:3:117;;1068:4;;1026:48;;-1:-1:-1;;;1026:48:117;;-1:-1:-1;;;;;1026:3:117;;;;-1:-1:-1;1026:8:117;;-1:-1:-1;1026:48:117;;:3;;1057:1;;1068:4;;;1026:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1141:4:117;;1105:43;;-1:-1:-1;;;;;1141:4:117;;;;-1:-1:-1;1105:43:117;;-1:-1:-1;1105:43:117;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;1105:43:117;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1085:17:117;:63;;-1:-1:-1;;;;;;1085:63:117;-1:-1:-1;;;;;1085:63:117;;;;;;;;;1158:57;;;-1:-1:-1;;;1158:57:117;;;;;8943:51:121;;;;9010:18;;;9003:30;9069:2;9049:18;;;9042:30;-1:-1:-1;;;9088:18:121;;;9081:47;-1:-1:-1;;;;;;;;;;;1158:8:117;;;9145:19:121;;1158:57:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1272:2:117;;1263:12;;-1:-1:-1;;;1263:12:117;;-1:-1:-1;;;;;1272:2:117;;;1263:12;;;6141:51:121;1226:26:117;;-1:-1:-1;;;;;;;;;;;;1263:8:117;-1:-1:-1;1263:8:117;;6114:18:121;;1263:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1326:3:117;;1358:2;;1326:84;;-1:-1:-1;;;1326:84:117;;1285:26;;-1:-1:-1;;;;;;1326:3:117;;;;-1:-1:-1;1326:23:117;;:84;;1358:2;;1285:26;;1326:3;;1400:9;;1326:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1430:2;;1421:12;;-1:-1:-1;;;1421:12:117;;-1:-1:-1;;;;;1430:2:117;;;1421:12;;;6141:51:121;1285:125:117;;-1:-1:-1;;;;;;;;;;;;1421:8:117;;;6114:18:121;;1421:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1443:3:117;;1470:17;;1443:66;;-1:-1:-1;;;1443:66:117;;-1:-1:-1;;;;;1470:17:117;;;1443:66;;;10688:51:121;10755:18;;;10748:34;;;1443:3:117;;;-1:-1:-1;1443:18:117;;-1:-1:-1;10661:18:121;;1443:66:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1535:3:117;;1566:17;;1535:50;;-1:-1:-1;;;1535:50:117;;-1:-1:-1;;;;;1566:17:117;;;1535:50;;;6141:51:121;1535:3:117;;;-1:-1:-1;1535:22:117;;-1:-1:-1;6114:18:121;;1535:50:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1520:12;:65;1604:2;;1596:5;:10;;-1:-1:-1;;;;;;1596:10:117;-1:-1:-1;;;;;1604:2:117;;;1596:10;;;;;;1627:4;;;:19;;-1:-1:-1;;;1627:19:117;;;;;6141:51:121;;;;1616:58:117;;1627:4;;:12;;6114:18:121;1627:19:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1616:58;;;;;;;;;;;;;;;;;:10;:58::i;:::-;1696:4;;;1710:5;;1696:20;;-1:-1:-1;;;1696:20:117;;-1:-1:-1;;;;;1710:5:117;;;1696:20;;;6141:51:121;1684:61:117;;1696:4;;;;;:13;;6114:18:121;1696:20:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1684:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;572:1180;;;539:1213::o;3560:492::-;3633:3;;3659:4;;;3633:32;;-1:-1:-1;;;3633:32:117;;-1:-1:-1;;;;;3659:4:117;;;3633:32;;;6141:51:121;3609:21:117;;3633:3;;;;;:17;;6114:18:121;3633:32:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3609:56;;3676:43;3687:3;:5;;;:11;;3696:2;3687:11;3676:43;;;;;;;;;;;;;-1:-1:-1;;;3676:43:117;;;:10;:43::i;:::-;3729:54;3740:3;:5;;;:16;;3749:7;3740:16;3729:54;;;;;;;;;;;;;-1:-1:-1;;;3729:54:117;;;:10;:54::i;:::-;3793:68;3822:15;3804:3;:14;;;-1:-1:-1;;;;;3804:33:117;;;3793:68;;;;;;;;;;;;;-1:-1:-1;;;3793:68:117;;;:10;:68::i;:::-;3899:4;;:20;;;-1:-1:-1;;;3899:20:117;;;;3872:24;;-1:-1:-1;;;;;3899:4:117;;:18;;:20;;;;;3872:24;;3899:20;;;;;;;:4;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3899:20:117;;;;;;;;;;;;:::i;:::-;3872:47;;3929:57;3940:7;:14;3958:1;3940:19;3929:57;;;;;;;;;;;;;-1:-1:-1;;;3929:57:117;;;:10;:57::i;:::-;3996:49;4007:3;:7;;;-1:-1:-1;;;;;4007:12:117;4018:1;4007:12;3996:49;;;;;;;;;;;;;-1:-1:-1;;;3996:49:117;;;:10;:49::i;:::-;3599:453;;3560:492::o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;7405:1183:117:-;7459:16;:14;:16::i;:::-;-1:-1:-1;;;;;;;;;;;7486:7:117;7494:19;:15;7512:1;7494:19;:::i;:::-;7486:28;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;7486:28:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7559:3:117;;7600:4;;;7559:47;;-1:-1:-1;;;7559:47:117;;-1:-1:-1;;;;;7600:4:117;;;7559:47;;;6141:51:121;7526:14:117;;-1:-1:-1;7526:14:117;;-1:-1:-1;7559:3:117;;;:32;;6114:18:121;7559:47:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7525:81;;;;7616:27;7646:4;;;;;;;;;-1:-1:-1;;;;;7646:4:117;-1:-1:-1;;;;;7646:18:117;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7646:20:117;;;;;;;;;;;;:::i;:::-;7710:3;;7754:4;;7710:50;;-1:-1:-1;;;;;;7710:50:117;;7616;;-1:-1:-1;7676:31:117;;-1:-1:-1;;;;;7710:3:117;;;;:23;;:50;;7616;;7754:4;;;;7710:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7710:50:117;;;;;;;;;;;;:::i;:::-;7676:84;;7771:83;7803:14;:21;7782:10;:17;:42;7771:83;;;;;;;;;;;;;;;;;:10;:83::i;:::-;7864:78;7896:14;7911:1;7896:17;;;;;;;;:::i;:::-;;;;;;;7875:14;7890:1;7875:17;;;;;;;;:::i;:::-;;;;;;;:38;7864:78;;;;;;;;;;;;;;;;;:10;:78::i;:::-;7953:50;7973:10;7964:5;:19;;7953:50;;;;;;;;;;;;;-1:-1:-1;;;7953:50:117;;;:10;:50::i;:::-;8013:47;8032:8;8024:5;:16;8013:47;;;;;;;;;;;;;-1:-1:-1;;;8013:47:117;;;:10;:47::i;:::-;8071:48;8082:6;8092:1;8082:11;8071:48;;;;;;;;;;;;;-1:-1:-1;;;8071:48:117;;;:10;:48::i;:::-;8165:3;;8201:4;;;8165:42;;-1:-1:-1;;;8165:42:117;;-1:-1:-1;;;;;8201:4:117;;;8165:42;;;6141:51:121;8130:32:117;;8165:3;;;;;:27;;6114:18:121;8165:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8130:77;;8218:71;8261:1;8229:14;:29;;;:33;;;8218:71;;;;;;;;;;;;;-1:-1:-1;;;8218:71:117;;;:10;:71::i;:::-;8300:79;8361:10;:17;8326:14;:29;;;8311:46;;:67;8300:10;:79::i;:::-;8389:94;8449:5;8415:14;:28;;;-1:-1:-1;;;;;8400:45:117;:54;8389:94;;;;;;;;;;;;;;;;;:10;:94::i;:::-;8493:88;8560:6;8519:14;:35;;;-1:-1:-1;;;;;8504:52:117;:62;8493:88;;;;;;;;;;;;;-1:-1:-1;;;8493:88:117;;;:10;:88::i;:::-;7449:1139;;;;;7405:1183::o;3360:151:59:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;7024:375:117:-;7067:30;:28;:30::i;:::-;7108:58;;-1:-1:-1;;;7108:58:117;;-1:-1:-1;;;7108:58:117;;;17674:52:121;-1:-1:-1;;;;;;;;;;;7108:15:117;;;17647:18:121;;7108:58:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7185:2:117;;7176:12;;-1:-1:-1;;;7176:12:117;;-1:-1:-1;;;;;7185:2:117;;;7176:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;7176:8:117;-1:-1:-1;7176:8:117;;-1:-1:-1;6114:18:121;;7176:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7225:3:117;;7256:4;;;7225:37;;-1:-1:-1;;;7225:37:117;;-1:-1:-1;;;;;7256:4:117;;;7225:37;;;6141:51:121;7198:24:117;;-1:-1:-1;7225:3:117;;;-1:-1:-1;7225:22:117;;6114:18:121;7225:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7225:37:117;;;;;;;;;;;;:::i;:::-;7198:64;-1:-1:-1;;;;;;;;;;;;7273:7:117;7281:31;:15;7300:11;7281:31;:::i;:::-;7273:40;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;7273:40:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7332:2:117;;7323:12;;-1:-1:-1;;;7323:12:117;;-1:-1:-1;;;;;7332:2:117;;;7323:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;7323:8:117;-1:-1:-1;7323:8:117;;-1:-1:-1;6114:18:121;;7323:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7355:3:117;;7386:4;;;7355:37;;-1:-1:-1;;;7355:37:117;;-1:-1:-1;;;;;7386:4:117;;;7355:37;;;6141:51:121;7355:3:117;;;-1:-1:-1;7355:22:117;;-1:-1:-1;6114:18:121;7355:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7355:37:117;;;;;;;;;;;;:::i;2738:178:59:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5362:672:117;-1:-1:-1;;;;;;;;;;;5420:7:117;5428:26;:15;5446:8;5428:26;:::i;:::-;5420:35;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;5420:35:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5465:30;:28;:30::i;:::-;5534:3;;5560:4;;;5534:32;;-1:-1:-1;;;5534:32:117;;-1:-1:-1;;;;;5560:4:117;;;5534:32;;;6141:51:121;5505:26:117;;5534:3;;;;;:17;;6114:18:121;5534:32:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5586:2;;5577:12;;-1:-1:-1;;;5577:12:117;;-1:-1:-1;;;;;5586:2:117;;;5577:12;;;6141:51:121;5505:61:117;;-1:-1:-1;;;;;;;;;;;;5577:8:117;;;6114:18:121;;5577:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5622:3:117;;5659:4;;;5622:43;;-1:-1:-1;;;5622:43:117;;-1:-1:-1;;;;;5659:4:117;;;5622:43;;;6141:51:121;5599:20:117;;-1:-1:-1;5622:3:117;;;-1:-1:-1;5622:28:117;;6114:18:121;5622:43:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5684:2;;5675:12;;-1:-1:-1;;;5675:12:117;;-1:-1:-1;;;;;5684:2:117;;;5675:12;;;6141:51:121;5599:66:117;;-1:-1:-1;;;;;;;;;;;;5675:8:117;;;6114:18:121;;5675:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5697:3:117;;5728:4;;;5697:37;;-1:-1:-1;;;5697:37:117;;-1:-1:-1;;;;;5728:4:117;;;5697:37;;;6141:51:121;5697:3:117;;;-1:-1:-1;5697:22:117;;-1:-1:-1;6114:18:121;5697:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5697:37:117;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5772:3:117;;5798:4;;;5772:32;;-1:-1:-1;;;5772:32:117;;-1:-1:-1;;;;;5798:4:117;;;5772:32;;;6141:51:121;5745:24:117;;5772:3;;;;;:17;;6114:18:121;5772:32:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5745:59;;5850:6;:8;;;5830:28;;:6;:17;;;:28;;;;:::i;:::-;-1:-1:-1;;;;;5815:43:117;;;5869:62;5896:15;5880:12;:31;;5869:62;;;;;;;;;;;;;-1:-1:-1;;;5869:62:117;;;:10;:62::i;:::-;5941:86;5990:8;:10;;;5968:32;;:8;:19;;;:32;;;;:::i;:::-;-1:-1:-1;;;;;5952:48:117;:12;:48;;5941:86;;;;;;;;;;;;;-1:-1:-1;;;5941:86:117;;;:10;:86::i;2211:1343::-;2276:14;;;2288:1;2276:14;;;;;;;;;2253:20;;2276:14;;;;;;;;;;;;;;;;;-1:-1:-1;;2325:15:117;;;2338:1;2325:15;;;;;;;;2253:37;;-1:-1:-1;2300:22:117;;2325:15;;;;;;;;;;;;-1:-1:-1;;2362:67:117;;-1:-1:-1;;;2362:67:117;;;18049:46:121;2300:40:117;;-1:-1:-1;18111:11:121;;2362:67:117;;;;;;;;;;;;2351:5;2357:1;2351:8;;;;;;;;:::i;:::-;;;;;;:78;;;;2473:42;;;2450:87;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2450:87:117;;;;;;;-1:-1:-1;;;;;2450:87:117;;;;;;;;;;;2439:5;2445:1;2439:8;;;;;;;;:::i;:::-;;;;;;:98;;;;2560:1;2548:6;2555:1;2548:9;;;;;;;;:::i;:::-;;;;;;:13;;;;;;;;;;;2583:1;2571:6;2578:1;2571:9;;;;;;;;:::i;:::-;:13;;;;;:9;;;;;;;;;;;:13;2595:52;;-1:-1:-1;;;2595:52:117;;-1:-1:-1;;;2595:52:117;;;17674::121;-1:-1:-1;;;;;;;;;;;2595:15:117;;;17647:18:121;;2595:52:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2657:3:117;;2691:17;;2657:68;;-1:-1:-1;;;2657:68:117;;-1:-1:-1;;;;;2657:3:117;;;;-1:-1:-1;2657:25:117;;-1:-1:-1;2657:68:117;;2691:17;;;;2711:5;;2718:6;;2657:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2745:5:117;;2736:15;;-1:-1:-1;;;2736:15:117;;-1:-1:-1;;;;;2745:5:117;;;2736:15;;;6141:51:121;-1:-1:-1;;;;;;;;;;;2736:8:117;-1:-1:-1;2736:8:117;;-1:-1:-1;6114:18:121;;2736:15:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2761:3:117;;2795:17;;2761:68;;-1:-1:-1;;;2761:68:117;;-1:-1:-1;;;;;2761:3:117;;;;-1:-1:-1;2761:25:117;;-1:-1:-1;2761:68:117;;2795:17;;;;2815:5;;2822:6;;2761:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2840:17;;;;;;;;;-1:-1:-1;;;;;2840:17:117;-1:-1:-1;;;;;2840:24:117;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2876:29;:27;:29::i;:::-;2915:17;;;;;;;;;-1:-1:-1;;;;;2915:17:117;-1:-1:-1;;;;;2915:24:117;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2981:3:117;;3004:2;;3016:4;;;2981:41;;-1:-1:-1;;;2981:41:117;;-1:-1:-1;;;;;3004:2:117;;;2981:41;;;20135:34:121;3016:4:117;;;20185:18:121;;;20178:43;;;;2952:26:117;;2981:3;;;;;:22;;20070:18:121;;2981:41:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3042:2;;3033:12;;-1:-1:-1;;;3033:12:117;;-1:-1:-1;;;;;3042:2:117;;;3033:12;;;6141:51:121;2952:70:117;;-1:-1:-1;;;;;;;;;;;;3033:8:117;;;6114:18:121;;3033:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3055:17;;;;;;;;;-1:-1:-1;;;;;3055:17:117;-1:-1:-1;;;;;3055:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3137:3:117;;3160:2;;3172:4;;;3137:41;;-1:-1:-1;;;3137:41:117;;-1:-1:-1;;;;;3160:2:117;;;3137:41;;;20135:34:121;3172:4:117;;;20185:18:121;;;20178:43;;;;3108:26:117;;3137:3;;;;;:22;;20070:18:121;;3137:41:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3108:70;;3188:41;3208:1;3199:3;:6;;;-1:-1:-1;;;;;3199:10:117;;3188:41;;;;;;;;;;;;;-1:-1:-1;;;3188:41:117;;;:10;:41::i;:::-;3239:47;3259:3;:6;;;-1:-1:-1;;;;;3250:15:117;:3;:6;;;-1:-1:-1;;;;;3250:15:117;;3239:47;;;;;;;;;;;;;-1:-1:-1;;;3239:47:117;;;:10;:47::i;:::-;3306:2;;3297:12;;-1:-1:-1;;;3297:12:117;;-1:-1:-1;;;;;3306:2:117;;;3297:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;3297:8:117;;;6114:18:121;;3297:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3319:17:117;;:54;;-1:-1:-1;;;3319:54:117;;-1:-1:-1;;;;;3319:17:117;;;;-1:-1:-1;3319:33:117;;-1:-1:-1;3319:54:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3412:3:117;;3435:2;;3447:4;;;3412:41;;-1:-1:-1;;;3412:41:117;;-1:-1:-1;;;;;3435:2:117;;;3412:41;;;20135:34:121;3447:4:117;;;20185:18:121;;;20178:43;;;;3383:26:117;;3412:3;;;;;:22;;20070:18:121;;3412:41:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3383:70;;3463:55;3484:1;3474:3;:6;;;-1:-1:-1;;;;;3474:11:117;;;3463:55;;;;;;;;;;;;;;;;;:10;:55::i;:::-;3528:19;3540:3;:6;;;-1:-1:-1;;;;;3528:19:117;:11;:19::i;11216:2469::-;11267:27;:25;:27::i;:::-;11317:1;11329:818;11341:3;11337:1;:7;11329:818;;;11361:29;;-1:-1:-1;;;11361:29:117;;-1:-1:-1;;;;;6159:32:121;;11361:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;11361:8:117;;;6114:18:121;;11361:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11409:1;11405;:5;;;;:::i;:::-;:10;11404:146;;11496:17;;:54;;-1:-1:-1;;;11496:54:117;;-1:-1:-1;;;;;11496:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11404:146;;;11435:17;;;;;;;;;-1:-1:-1;;;;;11435:17:117;-1:-1:-1;;;;;11435:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11566:5:117;11570:1;11566;:5;:::i;:::-;:10;11565:146;;11657:17;;:54;;-1:-1:-1;;;11657:54:117;;-1:-1:-1;;;;;11657:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11565:146;;;11596:17;;;;;;;;;-1:-1:-1;;;;;11596:17:117;-1:-1:-1;;;;;11596:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11727:5:117;11731:1;11727;:5;:::i;:::-;:10;11726:146;;11818:17;;:54;;-1:-1:-1;;;11818:54:117;;-1:-1:-1;;;;;11818:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11726:146;;;11757:17;;;;;;;;;-1:-1:-1;;;;;11757:17:117;-1:-1:-1;;;;;11757:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11888:5:117;11892:1;11888;:5;:::i;:::-;:10;11887:146;;11979:17;;:54;;-1:-1:-1;;;11979:54:117;;-1:-1:-1;;;;;11979:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11887:146;;;11918:17;;;;;;;;;-1:-1:-1;;;;;11918:17:117;-1:-1:-1;;;;;11918:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;12048:7:117;12056:19;:15;12074:1;12056:19;:::i;:::-;12048:28;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;12048:28:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:3;;;;;11329:818;;;-1:-1:-1;;;;;;;;;;;12156:7:117;12164:25;:15;12182:7;12164:25;:::i;:::-;12156:34;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;12156:34:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12210:2:117;;12201:12;;-1:-1:-1;;;12201:12:117;;-1:-1:-1;;;;;12210:2:117;;;12201:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;12201:8:117;-1:-1:-1;12201:8:117;;-1:-1:-1;6114:18:121;;12201:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12223:3:117;;12254:4;;;12223:37;;-1:-1:-1;;;12223:37:117;;-1:-1:-1;;;;;12254:4:117;;;12223:37;;;6141:51:121;12223:3:117;;;-1:-1:-1;12223:22:117;;-1:-1:-1;6114:18:121;12223:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12223:37:117;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12306:3:117;;12342:4;;;12306:42;;-1:-1:-1;;;12306:42:117;;-1:-1:-1;;;;;12342:4:117;;;12306:42;;;6141:51:121;12271:32:117;;12306:3;;;;;:27;;6114:18:121;12306:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12271:77;;12358:42;12370:14;:29;;;-1:-1:-1;;;;;12358:42:117;:11;:42::i;:::-;12432:29;;;;12476:1;;-1:-1:-1;12488:821:117;12500:3;12496:1;:7;12488:821;;;12520:29;;-1:-1:-1;;;12520:29:117;;-1:-1:-1;;;;;6159:32:121;;12520:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;12520:8:117;;;6114:18:121;;12520:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12568:1;12564;:5;;;;:::i;:::-;:10;12563:146;;12655:17;;:54;;-1:-1:-1;;;12655:54:117;;-1:-1:-1;;;;;12655:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12563:146;;;12594:17;;;;;;;;;-1:-1:-1;;;;;12594:17:117;-1:-1:-1;;;;;12594:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12727:5:117;12731:1;12727;:5;:::i;:::-;12736:1;12727:10;12724:149;;12819:17;;:54;;-1:-1:-1;;;12819:54:117;;-1:-1:-1;;;;;12819:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12724:149;;;12758:17;;;;;;;;;-1:-1:-1;;;;;12758:17:117;-1:-1:-1;;;;;12758:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12889:5:117;12893:1;12889;:5;:::i;:::-;:10;12888:146;;12980:17;;:54;;-1:-1:-1;;;12980:54:117;;-1:-1:-1;;;;;12980:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12888:146;;;12919:17;;;;;;;;;-1:-1:-1;;;;;12919:17:117;-1:-1:-1;;;;;12919:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13050:5:117;13054:1;13050;:5;:::i;:::-;:10;13049:146;;13141:17;;:54;;-1:-1:-1;;;13141:54:117;;-1:-1:-1;;;;;13141:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13049:146;;;13080:17;;;;;;;;;-1:-1:-1;;;;;13080:17:117;-1:-1:-1;;;;;13080:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;13210:7:117;13218:19;:15;13236:1;13218:19;:::i;:::-;13210:28;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;13210:28:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13281:3;;;;;12488:821;;;-1:-1:-1;;;;;;;;;;;13318:7:117;13326:25;:15;13344:7;13326:25;:::i;:::-;13318:34;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;13318:34:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13372:2:117;;13363:12;;-1:-1:-1;;;13363:12:117;;-1:-1:-1;;;;;13372:2:117;;;13363:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;13363:8:117;-1:-1:-1;13363:8:117;;-1:-1:-1;6114:18:121;;13363:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:3:117;;13416:4;;;13385:37;;-1:-1:-1;;;13385:37:117;;-1:-1:-1;;;;;13416:4:117;;;13385:37;;;6141:51:121;13385:3:117;;;-1:-1:-1;13385:22:117;;-1:-1:-1;6114:18:121;13385:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:37:117;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13450:3:117;;13486:4;;;13450:42;;-1:-1:-1;;;13450:42:117;;-1:-1:-1;;;;;13486:4:117;;;13450:42;;;6141:51:121;13450:3:117;;;:27;;6114:18:121;13450:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13433:59;;13502:42;13514:14;:29;;;-1:-1:-1;;;;;13502:42:117;:11;:42::i;:::-;13554:19;13576:14;:29;;;13554:51;;13616:62;13643:12;-1:-1:-1;;;;;13627:28:117;:12;-1:-1:-1;;;;;13627:28:117;;;13616:62;;;;;;;;;;;;;-1:-1:-1;;;13616:62:117;;;:10;:62::i;:::-;11257:2428;;;;11216:2469::o;2592:140:59:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;10688:51:121;;;-1:-1:-1;;;10755:18:121;;;10748:34;2196:43:52;;;;;;;;;10661:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;4058:1298:117:-;4235:14;;;4247:1;4235:14;;;;;;;;;4136:1;;4167;;4200;;4115:18;;4235:14;;;;;;;;;;;;;;;;;;-1:-1:-1;;4284:15:117;;;4297:1;4284:15;;;;;;;;4212:37;;-1:-1:-1;4259:22:117;;4284:15;;;;;;;;;;;;-1:-1:-1;;4321:67:117;;-1:-1:-1;;;4321:67:117;;;18049:46:121;4259:40:117;;-1:-1:-1;18111:11:121;;4321:67:117;;;;;;;;;;;;4310:5;4316:1;4310:8;;;;;;;;:::i;:::-;;;;;;:78;;;;4432:42;;;4409:87;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;4409:87:117;;;;;;;-1:-1:-1;;;;;4409:87:117;;;;;;;;;;;4398:5;4404:1;4398:8;;;;;;;;:::i;:::-;;;;;;:98;;;;4519:10;4507:6;4514:1;4507:9;;;;;;;;:::i;:::-;;;;;;:22;;;;;;;;;;;4551:12;4539:6;4546:1;4539:9;;;;;;;;:::i;:::-;:24;;;;;:9;;;;;;;;;;;:24;4583:5;;4574:15;;-1:-1:-1;;;4574:15:117;;-1:-1:-1;;;;;4583:5:117;;;4574:15;;;6141:51:121;-1:-1:-1;;;;;;;;;;;4574:8:117;;;6114:18:121;;4574:15:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4599:3:117;;4633:17;;4599:68;;-1:-1:-1;;;4599:68:117;;-1:-1:-1;;;;;4599:3:117;;;;-1:-1:-1;4599:25:117;;-1:-1:-1;4599:68:117;;4633:17;;;;4653:5;;4660:6;;4599:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4690:1:117;;-1:-1:-1;;;4701:546:117;4713:3;4709:1;:7;4701:546;;;4733:29;;-1:-1:-1;;;4733:29:117;;-1:-1:-1;;;;;6159:32:121;;4733:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;4733:8:117;;;6114:18:121;;4733:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4776:3:117;;4785:14;;-1:-1:-1;;;4785:14:117;;;;;6893:25:121;;;-1:-1:-1;;;;;4776:3:117;;;;-1:-1:-1;4776:8:117;;-1:-1:-1;;;;;;;;;;;;4785:11:117;;;6866:18:121;;4785:14:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4785:14:117;;;;;;;;;;;;:::i;:::-;4824:4;;4776:54;;-1:-1:-1;;;;;;4776:54:117;;;;;;;;;;4810:1;;4813;;-1:-1:-1;;;;;4824:4:117;;4776:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;4845:7:117;-1:-1:-1;4845:7:117;;-1:-1:-1;4853:19:117;;-1:-1:-1;4853:15:117;4871:1;4853:19;:::i;:::-;4845:28;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;4845:28:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4888:29:117;;-1:-1:-1;;;4888:29:117;;-1:-1:-1;;;;;6159:32:121;;4888:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;4888:8:117;-1:-1:-1;4888:8:117;;-1:-1:-1;6114:18:121;;4888:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4936:1;4932;:5;;;;:::i;:::-;:10;4931:146;;5023:17;;:54;;-1:-1:-1;;;5023:54:117;;-1:-1:-1;;;;;5023:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4931:146;;;4962:17;;;;;;;;;-1:-1:-1;;;;;4962:17:117;-1:-1:-1;;;;;4962:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;5092:7:117;5100:19;:15;5118:1;5100:19;:::i;:::-;5092:28;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;5092:28:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5195:3:117;;5230:4;;;5195:41;;-1:-1:-1;;;5195:41:117;;-1:-1:-1;;;;;5230:4:117;;;5195:41;;;6141:51:121;5163:3:117;;;;;;5195;;;-1:-1:-1;5195:26:117;;-1:-1:-1;6114:18:121;5195:41:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5195:41:117;;;;;;;;;;;;:::i;:::-;;4701:546;;;5267:3;;5293:4;;;5267:32;;-1:-1:-1;;;5267:32:117;;-1:-1:-1;;;;;5293:4:117;;;5267:32;;;6141:51:121;5256:93:117;;5313:1;;5267:3;;;:17;;6114:18:121;5267:32:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;-1:-1:-1;;;;;5267:47:117;;5256:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;4105:1251;;;;;;4058:1298::o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1758:447:117:-;1828:2;;1814:17;;-1:-1:-1;;;1814:17:117;;-1:-1:-1;;;;;1828:2:117;;;1814:17;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1814:13:117;;;6114:18:121;;1814:17:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:15;1859:17;;;;;;;;;-1:-1:-1;;;;;1859:17:117;-1:-1:-1;;;;;1859:24:117;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1895:17;;:37;;-1:-1:-1;;;1895:37:117;;23715:2:121;1895:37:117;;;23697:21:121;-1:-1:-1;23734:18:121;;;23727:29;1841:44:117;;-1:-1:-1;;;;;;1895:17:117;;:33;;23773:18:121;;1895:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1960:17:117;;:26;;;-1:-1:-1;;;1960:26:117;;;;1942:15;;-1:-1:-1;;;;;1960:17:117;;:24;;:26;;;;;;;;;;;;;;:17;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1996:17;;:54;;-1:-1:-1;;;1996:54:117;;1942:44;;-1:-1:-1;;;;;;1996:17:117;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2078:17:117;;:26;;;-1:-1:-1;;;2078:26:117;;;;2060:15;;-1:-1:-1;;;;;2078:17:117;;:24;;:26;;;;;;;;;;;;;;:17;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2060:44;-1:-1:-1;2114:59:117;2060:44;2125:17;2135:7;2125;:17;:::i;:::-;:28;2114:59;;;;;;;;;;;;;-1:-1:-1;;;2114:59:117;;;:10;:59::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;2184:12:117;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804:401;;;1758:447::o;6040:978::-;6126:55;;-1:-1:-1;;;6126:55:117;;-1:-1:-1;;;6126:55:117;;;17674:52:121;6113:1:117;;-1:-1:-1;;;;;;;;;;;6126:15:117;;;17647:18:121;;6126:55:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6211:3:117;;6247:4;;;6211:42;;-1:-1:-1;;;6211:42:117;;-1:-1:-1;;;;;20153:15:121;;;6211:42:117;;;20135:34:121;6247:4:117;;;20185:18:121;;;20178:43;;;;6191:17:117;;-1:-1:-1;6211:3:117;;;;-1:-1:-1;6211:22:117;;20070:18:121;;6211:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6264:56;;-1:-1:-1;;;6264:56:117;;-1:-1:-1;;;6264:56:117;;;17674:52:121;6191:62:117;;-1:-1:-1;;;;;;;;;;;;6264:15:117;;;17647:18:121;;6264:56:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6339:2:117;;6330:12;;-1:-1:-1;;;6330:12:117;;-1:-1:-1;;;;;6339:2:117;;;6330:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;6330:8:117;-1:-1:-1;6330:8:117;;-1:-1:-1;6114:18:121;;6330:12:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6364:3:117;;6400:4;;;6364:42;;-1:-1:-1;;;6364:42:117;;-1:-1:-1;;;;;20153:15:121;;;6364:42:117;;;20135:34:121;6400:4:117;;;20185:18:121;;;20178:43;;;;6364:3:117;;;;-1:-1:-1;6364:22:117;;-1:-1:-1;20070:18:121;;6364:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6352:54;;6417;6428:9;6441:1;6428:14;6417:54;;;;;;;;;;;;;;;;;:10;:54::i;:::-;6481:30;:28;:30::i;:::-;-1:-1:-1;;;;;;;;;;;6522:7:117;6530:25;:15;6548:7;6530:25;:::i;:::-;6522:34;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;6522:34:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6580:2:117;;6566:17;;-1:-1:-1;;;6566:17:117;;-1:-1:-1;;;;;6580:2:117;;;6566:17;;;6141:51:121;-1:-1:-1;;;;;;;;;;;6566:13:117;-1:-1:-1;6566:13:117;;-1:-1:-1;6114:18:121;;6566:17:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6612:3:117;;6648:4;;;6612:42;;-1:-1:-1;;;6612:42:117;;-1:-1:-1;;;;;20153:15:121;;;6612:42:117;;;20135:34:121;6648:4:117;;;20185:18:121;;;20178:43;;;;6593:16:117;;-1:-1:-1;6612:3:117;;;;-1:-1:-1;6612:22:117;;20070:18:121;;6612:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6593:61;;6664:39;6686:1;6675:8;:12;6664:39;;;;;;;;;;;;;-1:-1:-1;;;6664:39:117;;;:10;:39::i;:::-;6737:3;;6774:4;;;6737:43;;-1:-1:-1;;;6737:43:117;;-1:-1:-1;;;;;6774:4:117;;;6737:43;;;6141:51:121;6714:20:117;;6737:3;;;;;:28;;6114:18:121;6737:43:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6714:66;-1:-1:-1;;;;;;;;;;;;6791:7:117;6799:16;6714:66;6814:1;6799:16;:::i;:::-;6791:25;;;;;;;;;;;;;6893::121;;6881:2;6866:18;;6747:177;6791:25:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6826:3:117;;6863:4;;;6826:43;;-1:-1:-1;;;6826:43:117;;-1:-1:-1;;;;;6863:4:117;;;6826:43;;;6141:51:121;6826:3:117;;;-1:-1:-1;6826:28:117;;-1:-1:-1;6114:18:121;6826:43:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6891:3:117;;6927:4;;;6891:42;;-1:-1:-1;;;6891:42:117;;-1:-1:-1;;;;;20153:15:121;;;6891:42:117;;;20135:34:121;6927:4:117;;;20185:18:121;;;20178:43;;;;6891:3:117;;;;:22;;20070:18:121;;6891:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6880:53;;6943:44;6965:1;6954:8;:12;6943:44;;;;;;;;;;;;;-1:-1:-1;;;6943:44:117;;;:10;:44::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;6997:12:117;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6081:937;;;;6040:978::o;9871:1339::-;9918:20;:18;:20::i;:::-;9976:3;;10008:4;;;9976:38;;-1:-1:-1;;;9976:38:117;;-1:-1:-1;;;;;10008:4:117;;;9976:38;;;6141:51:121;9949:24:117;;9976:3;;;;;:23;;6114:18:121;9976:38:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9976:38:117;;;;;;;;;;;;:::i;:::-;9949:65;-1:-1:-1;10037:1:117;10049:337;10061:7;:14;10057:1;:18;10049:337;;;10096:5;10100:1;10096;:5;:::i;:::-;10105:1;10096:10;10092:224;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;10126:8:117;;10135:7;10143:1;10135:10;;;;;;;;:::i;:::-;;;;;;;10126:20;;;;;;;;;;;;;;-1:-1:-1;;;;;6159:32:121;;;;6141:51;;6129:2;6114:18;;5995:203;10126:20:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10164:17:117;;:54;;-1:-1:-1;;;10164:54:117;;-1:-1:-1;;;;;10164:17:117;;;;-1:-1:-1;10164:33:117;;-1:-1:-1;10164:54:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;10236:8:117;;10245:7;10253:1;10245:10;;;;;;;;:::i;:::-;;;;;;;10236:20;;;;;;;;;;;;;;-1:-1:-1;;;;;6159:32:121;;;;6141:51;;6129:2;6114:18;;5995:203;10236:20:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10274:3:117;;10295:4;;;10274:27;;-1:-1:-1;;;10274:27:117;;-1:-1:-1;;;;;10295:4:117;;;10274:27;;;6141:51:121;10274:3:117;;;-1:-1:-1;10274:12:117;;-1:-1:-1;6114:18:121;10274:27:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10092:224;10358:3;;10049:337;;;-1:-1:-1;;;;;;;;;;;10396:7:117;10404:25;:15;10422:7;10404:25;:::i;:::-;10396:34;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;10396:34:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10450:5:117;;10441:15;;-1:-1:-1;;;10441:15:117;;-1:-1:-1;;;;;10450:5:117;;;10441:15;;;6141:51:121;-1:-1:-1;;;;;;;;;;;10441:8:117;-1:-1:-1;10441:8:117;;-1:-1:-1;6114:18:121;;10441:15:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10466:3:117;;10497:4;;;10466:37;;-1:-1:-1;;;10466:37:117;;-1:-1:-1;;;;;10497:4:117;;;10466:37;;;6141:51:121;10466:3:117;;;-1:-1:-1;10466:22:117;;-1:-1:-1;6114:18:121;10466:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10466:37:117;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10548:3:117;;10589:4;;;10548:47;;-1:-1:-1;;;10548:47:117;;-1:-1:-1;;;;;10589:4:117;;;10548:47;;;6141:51:121;10515:14:117;;;;10548:3;;;:32;;6114:18:121;10548:47:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10640:3;;10676:4;;;10640:42;;-1:-1:-1;;;10640:42:117;;-1:-1:-1;;;;;10676:4:117;;;10640:42;;;6141:51:121;10514:81:117;;-1:-1:-1;10514:81:117;;-1:-1:-1;10605:32:117;;10640:3;;;;;:27;;6114:18:121;10640:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10724:3;;10756:4;;;10724:38;;-1:-1:-1;;;10724:38:117;;-1:-1:-1;;;;;10756:4:117;;;10724:38;;;6141:51:121;10605:77:117;;-1:-1:-1;10693:28:117;;10724:3;;;:23;;6114:18:121;10724:38:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10724:38:117;;;;;;;;;;;;:::i;:::-;10693:69;;10773:82;10816:1;10784:14;:29;;;:33;;;10773:82;;;;;;;;;;;;;;;;;:10;:82::i;:::-;10865:81;10893:11;:18;10876:7;:14;:35;10865:81;;;;;;;;;;;;;;;;;:10;:81::i;:::-;11049:29;;11029:14;;10993:18;;10956:161;;10980:98;;;:65;;;:::i;:::-;:98;;;10956:161;;;;;;;;;;;;;-1:-1:-1;;;10956:161:117;;;:10;:161::i;:::-;11128:75;11171:1;11139:14;:29;;;-1:-1:-1;;;;;11139:33:117;;11128:75;;;;;;;;;;;;;;;;;:10;:75::i;8594:1271::-;8641:16;:14;:16::i;:::-;8706:3;;8742:4;;;8706:42;;-1:-1:-1;;;8706:42:117;;-1:-1:-1;;;;;8742:4:117;;;8706:42;;;6141:51:121;8667:36:117;;8706:3;;;;;:27;;6114:18:121;8706:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8667:81;-1:-1:-1;8771:16:117;8797:420;8809:16;8805:1;:20;8797:420;;;8842:29;;-1:-1:-1;;;8842:29:117;;-1:-1:-1;;;;;6159:32:121;;8842:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;8842:8:117;;;6114:18:121;;8842:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8885:3:117;;8894:14;;-1:-1:-1;;;8894:14:117;;;;;6893:25:121;;;-1:-1:-1;;;;;8885:3:117;;;;-1:-1:-1;8885:8:117;;-1:-1:-1;;;;;;;;;;;;8894:11:117;;;6866:18:121;;8894:14:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8894:14:117;;;;;;;;;;;;:::i;:::-;8936:4;;8885:57;;-1:-1:-1;;;;;;8885:57:117;;;;;;;;;;8922:1;;8925;;-1:-1:-1;;;;;8936:4:117;;8885:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8957:29:117;;-1:-1:-1;;;8957:29:117;;-1:-1:-1;;;;;6159:32:121;;8957:29:117;;;6141:51:121;-1:-1:-1;;;;;;;;;;;8957:8:117;-1:-1:-1;8957:8:117;;-1:-1:-1;6114:18:121;;8957:29:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9005:1;9001;:5;;;;:::i;:::-;:10;9000:146;;9092:17;;:54;;-1:-1:-1;;;9092:54:117;;-1:-1:-1;;;;;9092:17:117;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9000:146;;;9031:17;;;;;;;;;-1:-1:-1;;;;;9031:17:117;-1:-1:-1;;;;;9031:40:117;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9189:3:117;;8797:420;;;-1:-1:-1;;;;;;;;;;;9227:7:117;9235:25;:15;9253:7;9235:25;:::i;:::-;9227:34;;;;;;;;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;9227:34:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9280:5:117;;9271:15;;-1:-1:-1;;;9271:15:117;;-1:-1:-1;;;;;9280:5:117;;;9271:15;;;6141:51:121;-1:-1:-1;;;;;;;;;;;9271:8:117;-1:-1:-1;9271:8:117;;-1:-1:-1;6114:18:121;;9271:15:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9296:3:117;;9327:4;;;9296:37;;-1:-1:-1;;;9296:37:117;;-1:-1:-1;;;;;9327:4:117;;;9296:37;;;6141:51:121;9296:3:117;;;-1:-1:-1;9296:22:117;;-1:-1:-1;6114:18:121;9296:37:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9296:37:117;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9377:3:117;;9418:4;;;9377:47;;-1:-1:-1;;;9377:47:117;;-1:-1:-1;;;;;9418:4:117;;;9377:47;;;6141:51:121;9344:14:117;;;;9377:3;;;:32;;6114:18:121;9377:47:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9469:3;;9505:4;;;9469:42;;-1:-1:-1;;;9469:42:117;;-1:-1:-1;;;;;9505:4:117;;;9469:42;;;6141:51:121;9343:81:117;;-1:-1:-1;9343:81:117;;-1:-1:-1;9434:32:117;;9469:3;;;;;:27;;6114:18:121;9469:42:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9434:77;;9522:65;9565:3;9533:14;:29;;;:35;;;9522:65;;;;;;;;;;;;;-1:-1:-1;;;9522:65:117;;;:10;:65::i;:::-;9597:45;9612:14;:29;;;9597:45;;:14;:45::i;:::-;9652:41;9664:14;:28;;;-1:-1:-1;;;;;9652:41:117;:11;:41::i;:::-;9703:67;9745:3;9714:14;:28;;;-1:-1:-1;;;;;9714:34:117;;9703:67;;;;;;;;;;;;;-1:-1:-1;;;9703:67:117;;;:10;:67::i;:::-;9780:78;9829:1;9791:14;:35;;;-1:-1:-1;;;;;9791:39:117;;9780:78;;;;;;;;;;;;;;;;;3425:191:52;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;25435:51:121;;;;25502:18;;;25495:30;25561:1;25541:18;;;25534:29;-1:-1:-1;;;25579:18:121;;;25572:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;25627:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;25869:51:121;;;;25936:18;;;25929:30;25995:1;25975:18;;;25968:29;-1:-1:-1;;;26013:18:121;;;26006:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;26061:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;26303:51:121;;;;26370:18;;;26363:30;26429:1;26409:18;;;26402:29;-1:-1:-1;;;26447:18:121;;;26440:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;26495:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;26737:51:121;26804:18;;;26797:30;26863:2;26843:18;;;26836:30;-1:-1:-1;;;26882:18:121;;;26875:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;26934:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;6114:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;27176:51:121;;;;27243:18;;;27236:30;27302:2;27282:18;;;27275:30;-1:-1:-1;;;27321:18:121;;;27314:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;27371:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;27613:51:121;;;;27680:18;;;27673:30;27739:1;27719:18;;;27712:29;-1:-1:-1;;;27757:18:121;;;27750:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;27806:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;6141:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;6114:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;28048:51:121;;;;28115:18;;;28108:30;28174:1;28154:18;;;28147:29;-1:-1:-1;;;28192:18:121;;;28185:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;28238:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;28480:51:121;;;;28547:18;;;28540:30;28606:2;28586:18;;;28579:30;-1:-1:-1;;;28625:18:121;;;28618:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;28675:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;28917:51:121;;;;28984:18;;;28977:30;29043:2;29023:18;;;29016:30;-1:-1:-1;;;29062:18:121;;;29055:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;29117:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;29359:51:121;;;;29426:18;;;29419:30;29485:2;29465:18;;;29458:30;-1:-1:-1;;;29504:18:121;;;29497:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;29559:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;6141:51:121;;;;2573:3:114;;;;:22;;6114:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;29876:15:121;;;29858:34;;29928:15;;;29923:2;29908:18;;29901:43;29980:15;;;29975:2;29960:18;;29953:43;30032:15;;;30027:2;30012:18;;30005:43;29807:3;29792:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;30271:51:121;;;;30338:18;;;30331:30;30397:2;30377:18;;;30370:30;-1:-1:-1;;;30416:18:121;;;30409:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;30469:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;30755:25:121;;;30816:2;30796:18;;;30789:30;30855:2;30835:18;;;30828:30;-1:-1:-1;;;30874:19:121;;;30867:42;30961:18;;;30954:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;30926:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;676:107:55;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;31201:2:121;31183:21;;;31240:2;31220:18;;;31213:30;31279:25;31274:2;31259:18;;31252:53;31337:2;31322:18;;30999:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;5514:110:67:-;5560:57;5613:2;5576:40;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;5576:40:67;;;;-1:-1:-1;;5576:40:67;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:40:67;-1:-1:-1;;;5576:40:67;;;5560:15;:57::i;664:111::-;712:56;764:2;728:39;;;;;;6893:25:121;;6881:2;6866:18;;6747:177;728:39:67;;;;-1:-1:-1;;728:39:67;;;;;;;;;;;;;;-1:-1:-1;;;;;728:39:67;-1:-1:-1;;;728:39:67;;;712:15;:56::i;2409:432:52:-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;31733:51:121;;;-1:-1:-1;;;31800:18:121;;;31793:34;;;;2712:4:52;31843:18:121;;;31836:34;2489:11:52;;1671:64;2586:43;;31706:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;181:376:67:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:461:121:-;67:3;105:5;99:12;132:6;127:3;120:19;158:4;187:2;182:3;178:12;171:19;;224:2;217:5;213:14;245:1;255:195;269:6;266:1;263:13;255:195;;;334:13;;-1:-1:-1;;;;;330:39:121;318:52;;390:12;;;;425:15;;;;366:1;284:9;255:195;;;-1:-1:-1;466:3:121;;14:461;-1:-1:-1;;;;;14:461:121:o;480:261::-;659:2;648:9;641:21;622:4;679:56;731:2;720:9;716:18;708:6;679:56;:::i;:::-;671:64;480:261;-1:-1:-1;;;480:261:121:o;746:250::-;831:1;841:113;855:6;852:1;849:13;841:113;;;931:11;;;925:18;912:11;;;905:39;877:2;870:10;841:113;;;-1:-1:-1;;988:1:121;970:16;;963:27;746:250::o;1001:271::-;1043:3;1081:5;1075:12;1108:6;1103:3;1096:19;1124:76;1193:6;1186:4;1181:3;1177:14;1170:4;1163:5;1159:16;1124:76;:::i;:::-;1254:2;1233:15;-1:-1:-1;;1229:29:121;1220:39;;;;1261:4;1216:50;;1001:271;-1:-1:-1;;1001:271:121:o;1277:1744::-;1512:2;1564:21;;;1634:13;;1537:18;;;1656:22;;;1483:4;;1512:2;1697;;1715:18;;;;1752:1;1795:15;;;1780:31;;1776:40;;1839:15;;;1483:4;;1903:1089;1919:6;1914:3;1911:15;1903:1089;;;-1:-1:-1;;1988:22:121;;;1984:36;1972:49;;2044:13;;2131:9;;-1:-1:-1;;;;;2127:35:121;2112:51;;2202:11;;2196:18;2234:15;;;2227:27;;;2315:19;;2084:15;;;2347:24;;;2528:21;;;;2394:2;2476:17;;;2464:30;;2460:39;;;2418:15;;;;2573:1;2587:296;2603:8;2598:3;2595:17;2587:296;;;2709:2;2705:7;2696:6;2688;2684:19;2680:33;2673:5;2666:48;2741:42;2776:6;2765:8;2759:15;2741:42;:::i;:::-;2812:17;;;;2731:52;-1:-1:-1;2855:14:121;;;;2631:1;2622:11;2587:296;;;-1:-1:-1;;;2970:12:121;;;;2906:6;-1:-1:-1;;2935:15:121;;;;1945:1;1936:11;1903:1089;;;-1:-1:-1;3009:6:121;;1277:1744;-1:-1:-1;;;;;;;;;;1277:1744:121:o;3026:1569::-;3230:4;3259:2;3299;3288:9;3284:18;3329:2;3318:9;3311:21;3352:6;3387;3381:13;3418:6;3410;3403:22;3444:2;3434:12;;3477:2;3466:9;3462:18;3455:25;;3539:2;3529:6;3526:1;3522:14;3511:9;3507:30;3503:39;3577:2;3569:6;3565:15;3598:1;3619;3629:937;3645:6;3640:3;3637:15;3629:937;;;3714:22;;;-1:-1:-1;;3710:36:121;3698:49;;3770:13;;3857:9;;-1:-1:-1;;;;;3853:35:121;3838:51;;3928:11;;3922:18;3960:15;;;3953:27;;;4041:19;;3810:15;;;4073:24;;;4163:21;;;;4208:1;;4131:2;4119:15;;;4222:236;4238:8;4233:3;4230:17;4222:236;;;4319:15;;-1:-1:-1;;;;;;4315:42:121;4301:57;;4427:17;;;;4266:1;4257:11;;;;;4384:14;;;;4222:236;;;-1:-1:-1;4544:12:121;;;;4481:5;-1:-1:-1;;;4509:15:121;;;;3671:1;3662:11;3629:937;;;-1:-1:-1;4583:6:121;;3026:1569;-1:-1:-1;;;;;;;;;3026:1569:121:o;4600:803::-;4762:4;4791:2;4831;4820:9;4816:18;4861:2;4850:9;4843:21;4884:6;4919;4913:13;4950:6;4942;4935:22;4988:2;4977:9;4973:18;4966:25;;5050:2;5040:6;5037:1;5033:14;5022:9;5018:30;5014:39;5000:53;;5088:2;5080:6;5076:15;5109:1;5119:255;5133:6;5130:1;5127:13;5119:255;;;5226:2;5222:7;5210:9;5202:6;5198:22;5194:36;5189:3;5182:49;5254:40;5287:6;5278;5272:13;5254:40;:::i;:::-;5244:50;-1:-1:-1;5352:12:121;;;;5317:15;;;;5155:1;5148:9;5119:255;;;-1:-1:-1;5391:6:121;;4600:803;-1:-1:-1;;;;;;;4600:803:121:o;5600:177::-;5679:13;;-1:-1:-1;;;;;5721:31:121;;5711:42;;5701:70;;5767:1;5764;5757:12;5782:208;5852:6;5905:2;5893:9;5884:7;5880:23;5876:32;5873:52;;;5921:1;5918;5911:12;5873:52;5944:40;5974:9;5944:40;:::i;6203:277::-;6270:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;6371:9;6365:16;6424:5;6417:13;6410:21;6403:5;6400:32;6390:60;;6446:1;6443;6436:12;6485:127;6546:10;6541:3;6537:20;6534:1;6527:31;6577:4;6574:1;6567:15;6601:4;6598:1;6591:15;6617:125;6682:9;;;6703:10;;;6700:36;;;6716:18;;:::i;:::-;6617:125;;;;:::o;7963:763::-;8366:3;8355:9;8348:22;8407:1;8401:3;8390:9;8386:19;8379:30;-1:-1:-1;;;8440:3:121;8429:9;8425:19;8418:37;8493:3;8486:4;8475:9;8471:20;8464:33;8329:4;8514:50;8559:3;8548:9;8544:19;7882:1;7870:14;;-1:-1:-1;;;7909:4:121;7900:14;;7893:31;7949:2;7940:12;;7805:153;8514:50;8595:2;8580:18;;8573:34;;;;-1:-1:-1;8638:2:121;8623:18;;8616:34;;;;-1:-1:-1;;;;;8687:32:121;8681:3;8666:19;;;8659:61;8506:58;7963:763::o;9175:1145::-;9586:1;9582;9577:3;9573:11;9569:19;9561:6;9557:32;9546:9;9539:51;9520:4;9609:2;9647:3;9642:2;9631:9;9627:18;9620:31;9688:2;9682:3;9671:9;9667:19;9660:31;9728:26;9722:3;9711:9;9707:19;9700:55;9790:3;9779:9;9775:19;9830:6;9825:2;9814:9;9810:18;9803:34;9887:6;9880:14;9873:22;9868:2;9857:9;9853:18;9846:50;9933:3;9927;9916:9;9912:19;9905:32;9957:3;9989:6;9983:13;10017:6;10012:3;10005:19;10055:3;10044:9;10040:19;10033:26;;10094:2;10086:6;10082:15;10068:29;;10115:1;10125:169;10139:6;10136:1;10133:13;10125:169;;;10200:13;;10188:26;;10269:15;;;;10234:12;;;;10161:1;10154:9;10125:169;;;-1:-1:-1;10311:3:121;;9175:1145;-1:-1:-1;;;;;;;;;9175:1145:121:o;10325:184::-;10395:6;10448:2;10436:9;10427:7;10423:23;10419:32;10416:52;;;10464:1;10461;10454:12;10416:52;-1:-1:-1;10487:16:121;;10325:184;-1:-1:-1;10325:184:121:o;10793:127::-;10854:10;10849:3;10845:20;10842:1;10835:31;10885:4;10882:1;10875:15;10909:4;10906:1;10899:15;10925:255;10997:2;10991:9;11039:6;11027:19;;-1:-1:-1;;;;;11061:34:121;;11097:22;;;11058:62;11055:88;;;11123:18;;:::i;:::-;11159:2;11152:22;10925:255;:::o;11185:275::-;11256:2;11250:9;11321:2;11302:13;;-1:-1:-1;;11298:27:121;11286:40;;-1:-1:-1;;;;;11341:34:121;;11377:22;;;11338:62;11335:88;;;11403:18;;:::i;:::-;11439:2;11432:22;11185:275;;-1:-1:-1;11185:275:121:o;11465:175::-;11543:13;;-1:-1:-1;;;;;11585:30:121;;11575:41;;11565:69;;11630:1;11627;11620:12;11645:163;11723:13;;11776:6;11765:18;;11755:29;;11745:57;;11798:1;11795;11788:12;11813:160;11890:13;;11943:4;11932:16;;11922:27;;11912:55;;11963:1;11960;11953:12;11978:167;12056:13;;12109:10;12098:22;;12088:33;;12078:61;;12135:1;12132;12125:12;12150:164;12227:13;;12280:1;12269:20;;;12259:31;;12249:59;;12304:1;12301;12294:12;12319:764;12387:5;12435:4;12423:9;12418:3;12414:19;12410:30;12407:50;;;12453:1;12450;12443:12;12407:50;12486:2;12480:9;12528:4;12520:6;12516:17;12599:6;12587:10;12584:22;-1:-1:-1;;;;;12551:10:121;12548:34;12545:62;12542:88;;;12610:18;;:::i;:::-;12646:2;12639:22;12679:6;-1:-1:-1;12679:6:121;12709:38;12737:9;12709:38;:::i;:::-;12701:6;12694:54;12781:47;12824:2;12813:9;12809:18;12781:47;:::i;:::-;12776:2;12768:6;12764:15;12757:72;12862:48;12906:2;12895:9;12891:18;12862:48;:::i;:::-;12857:2;12849:6;12845:15;12838:73;12944:48;12988:2;12977:9;12973:18;12944:48;:::i;:::-;12939:2;12931:6;12927:15;12920:73;13027:49;13071:3;13060:9;13056:19;13027:49;:::i;:::-;13021:3;13013:6;13009:16;13002:75;;12319:764;;;;:::o;13088:1062::-;13186:6;13239:3;13227:9;13218:7;13214:23;13210:33;13207:53;;;13256:1;13253;13246:12;13207:53;13282:22;;:::i;:::-;13327:39;13356:9;13327:39;:::i;:::-;13320:5;13313:54;13399:48;13443:2;13432:9;13428:18;13399:48;:::i;:::-;13394:2;13387:5;13383:14;13376:72;13480:48;13524:2;13513:9;13509:18;13480:48;:::i;:::-;13475:2;13468:5;13464:14;13457:72;13561:48;13605:2;13594:9;13590:18;13561:48;:::i;:::-;13556:2;13549:5;13545:14;13538:72;13643:48;13686:3;13675:9;13671:19;13643:48;:::i;:::-;13637:3;13630:5;13626:15;13619:73;13725:48;13768:3;13757:9;13753:19;13725:48;:::i;:::-;13719:3;13712:5;13708:15;13701:73;13807:49;13851:3;13840:9;13836:19;13807:49;:::i;:::-;13801:3;13794:5;13790:15;13783:74;13911:3;13900:9;13896:19;13890:26;13884:3;13877:5;13873:15;13866:51;13936:3;13992:2;13981:9;13977:18;13971:25;13966:2;13959:5;13955:14;13948:49;;14016:3;14051:68;14111:7;14106:2;14095:9;14091:18;14051:68;:::i;:::-;14035:14;;;14028:92;14039:5;13088:1062;-1:-1:-1;;;13088:1062:121:o;14155:183::-;14215:4;-1:-1:-1;;;;;14240:6:121;14237:30;14234:56;;;14270:18;;:::i;:::-;-1:-1:-1;14315:1:121;14311:14;14327:4;14307:25;;14155:183::o;14343:905::-;14438:6;14469:2;14512;14500:9;14491:7;14487:23;14483:32;14480:52;;;14528:1;14525;14518:12;14480:52;14561:9;14555:16;-1:-1:-1;;;;;14586:6:121;14583:30;14580:50;;;14626:1;14623;14616:12;14580:50;14649:22;;14702:4;14694:13;;14690:27;-1:-1:-1;14680:55:121;;14731:1;14728;14721:12;14680:55;14760:2;14754:9;14783:60;14799:43;14839:2;14799:43;:::i;:::-;14783:60;:::i;:::-;14877:15;;;14959:1;14955:10;;;;14947:19;;14943:28;;;14908:12;;;;14983:19;;;14980:39;;;15015:1;15012;15005:12;14980:39;15039:11;;;;15059:159;15075:6;15070:3;15067:15;15059:159;;;15141:34;15171:3;15141:34;:::i;:::-;15129:47;;15092:12;;;;15196;;;;15059:159;;;15237:5;14343:905;-1:-1:-1;;;;;;;14343:905:121:o;15253:245::-;15332:6;15340;15393:2;15381:9;15372:7;15368:23;15364:32;15361:52;;;15409:1;15406;15399:12;15361:52;-1:-1:-1;;15432:16:121;;15488:2;15473:18;;;15467:25;15432:16;;15467:25;;-1:-1:-1;15253:245:121:o;15503:358::-;15710:2;15699:9;15692:21;15673:4;15730:56;15782:2;15771:9;15767:18;15759:6;15730:56;:::i;:::-;15722:64;;15851:1;15847;15842:3;15838:11;15834:19;15826:6;15822:32;15817:2;15806:9;15802:18;15795:60;15503:358;;;;;:::o;15866:881::-;15961:6;15992:2;16035;16023:9;16014:7;16010:23;16006:32;16003:52;;;16051:1;16048;16041:12;16003:52;16084:9;16078:16;-1:-1:-1;;;;;16109:6:121;16106:30;16103:50;;;16149:1;16146;16139:12;16103:50;16172:22;;16225:4;16217:13;;16213:27;-1:-1:-1;16203:55:121;;16254:1;16251;16244:12;16203:55;16283:2;16277:9;16306:60;16322:43;16362:2;16322:43;:::i;16306:60::-;16400:15;;;16482:1;16478:10;;;;16470:19;;16466:28;;;16431:12;;;;16506:19;;;16503:39;;;16538:1;16535;16528:12;16503:39;16562:11;;;;16582:135;16598:6;16593:3;16590:15;16582:135;;;16664:10;;16652:23;;16615:12;;;;16695;;;;16582:135;;16752:127;16813:10;16808:3;16804:20;16801:1;16794:31;16844:4;16841:1;16834:15;16868:4;16865:1;16858:15;16884:256;16982:6;17035:3;17023:9;17014:7;17010:23;17006:33;17003:53;;;17052:1;17049;17042:12;17003:53;17075:59;17126:7;17115:9;17075:59;:::i;17145:380::-;17224:1;17220:12;;;;17267;;;17288:61;;17342:4;17334:6;17330:17;17320:27;;17288:61;17395:2;17387:6;17384:14;17364:18;17361:38;17358:161;;17441:10;17436:3;17432:20;17429:1;17422:31;17476:4;17473:1;17466:15;17504:4;17501:1;17494:15;17358:161;;17145:380;;;:::o;17737:180::-;-1:-1:-1;;;;;17842:10:121;;;17854;;;17838:27;;17877:11;;;17874:37;;;17891:18;;:::i;:::-;17874:37;17737:180;;;;:::o;18133:341::-;18335:2;18317:21;;;18374:2;18354:18;;;18347:30;-1:-1:-1;;;18408:2:121;18393:18;;18386:47;18465:2;18450:18;;18133:341::o;18479:1439::-;18743:4;18791:2;18780:9;18776:18;18850:1;18846;18841:3;18837:11;18833:19;18825:6;18821:32;18810:9;18803:51;18873:2;18911;18906;18895:9;18891:18;18884:30;18934:6;18969;18963:13;19000:6;18992;18985:22;19038:3;19027:9;19023:19;19016:26;;19101:3;19091:6;19088:1;19084:14;19073:9;19069:30;19065:40;19051:54;;19140:2;19132:6;19128:15;19161:1;19171:256;19185:6;19182:1;19179:13;19171:256;;;19278:3;19274:8;19262:9;19254:6;19250:22;19246:37;19241:3;19234:50;19307:40;19340:6;19331;19325:13;19307:40;:::i;:::-;19297:50;-1:-1:-1;19405:12:121;;;;19370:15;;;;19207:1;19200:9;19171:256;;;-1:-1:-1;;;;19463:22:121;;;19458:2;19443:18;;19436:50;19539:13;;19561:24;;;19643:15;;;;19603;;;19678:1;19688:202;19704:8;19699:3;19696:17;19688:202;;;19777:15;;19794:6;19773:28;19759:43;;19863:17;;;;19824:14;;;;19732:1;19723:11;19688:202;;;-1:-1:-1;19907:5:121;;18479:1439;-1:-1:-1;;;;;;;;18479:1439:121:o;20232:675::-;20335:6;20388:3;20376:9;20367:7;20363:23;20359:33;20356:53;;;20405:1;20402;20395:12;20356:53;20438:2;20432:9;20480:3;20472:6;20468:16;20550:6;20538:10;20535:22;-1:-1:-1;;;;;20502:10:121;20499:34;20496:62;20493:88;;;20561:18;;:::i;:::-;20597:2;20590:22;20636:39;20665:9;20636:39;:::i;:::-;20628:6;20621:55;20709:48;20753:2;20742:9;20738:18;20709:48;:::i;:::-;20704:2;20696:6;20692:15;20685:73;20812:2;20801:9;20797:18;20791:25;20786:2;20778:6;20774:15;20767:50;20871:2;20860:9;20856:18;20850:25;20845:2;20837:6;20833:15;20826:50;20895:6;20885:16;;;20232:675;;;;:::o;20912:209::-;20944:1;20970;20960:132;;21014:10;21009:3;21005:20;21002:1;20995:31;21049:4;21046:1;21039:15;21077:4;21074:1;21067:15;20960:132;-1:-1:-1;21106:9:121;;20912:209::o;21405:384::-;-1:-1:-1;;;;;;21590:33:121;;21578:46;;21647:13;;21560:3;;21669:74;21647:13;21732:1;21723:11;;21716:4;21704:17;;21669:74;:::i;:::-;21763:16;;;;21781:1;21759:24;;21405:384;-1:-1:-1;;;21405:384:121:o;21794:287::-;21923:3;21961:6;21955:13;21977:66;22036:6;22031:3;22024:4;22016:6;22012:17;21977:66;:::i;:::-;22059:16;;;;;21794:287;-1:-1:-1;;21794:287:121:o;22086:719::-;22166:6;22219:2;22207:9;22198:7;22194:23;22190:32;22187:52;;;22235:1;22232;22225:12;22187:52;22268:9;22262:16;-1:-1:-1;;;;;22338:2:121;22330:6;22327:14;22324:34;;;22354:1;22351;22344:12;22324:34;22392:6;22381:9;22377:22;22367:32;;22437:7;22430:4;22426:2;22422:13;22418:27;22408:55;;22459:1;22456;22449:12;22408:55;22488:2;22482:9;22510:2;22506;22503:10;22500:36;;;22516:18;;:::i;:::-;22558:53;22601:2;22582:13;;-1:-1:-1;;22578:27:121;22607:2;22574:36;22558:53;:::i;:::-;22545:66;;22634:2;22627:5;22620:17;22674:7;22669:2;22664;22660;22656:11;22652:20;22649:33;22646:53;;;22695:1;22692;22685:12;22646:53;22708:67;22772:2;22767;22760:5;22756:14;22751:2;22747;22743:11;22708:67;:::i;:::-;-1:-1:-1;22794:5:121;22086:719;-1:-1:-1;;;;22086:719:121:o;22810:698::-;23160:3;23149:9;23142:22;23123:4;23187:46;23228:3;23217:9;23213:19;23205:6;23187:46;:::i;:::-;23281:9;23273:6;23269:22;23264:2;23253:9;23249:18;23242:50;23309:37;23339:6;7882:1;7870:14;;-1:-1:-1;;;7909:4:121;7900:14;;7893:31;7949:2;7940:12;;7805:153;23309:37;23377:2;23362:18;;23355:34;;;;-1:-1:-1;;23420:2:121;23405:18;;23398:34;;;;-1:-1:-1;;;;;23469:32:121;23463:3;23448:19;;;23441:61;23301:45;22810:698;-1:-1:-1;22810:698:121:o;23802:214::-;23900:1;23889:16;;;23871;;;;23867:39;-1:-1:-1;;23921:34:121;;23967:18;23957:29;;23918:69;23915:95;;;23990:18;;:::i;24021:746::-;24371:3;24360:9;24353:22;24334:4;24398:46;24439:3;24428:9;24424:19;24416:6;24398:46;:::i;:::-;24492:9;24484:6;24480:22;24475:2;24464:9;24460:18;24453:50;24527:1;24519:6;24512:17;-1:-1:-1;;;24557:2:121;24549:6;24545:15;24538:35;24602:2;24594:6;24590:15;24582:23;;;24641:6;24636:2;24625:9;24621:18;24614:34;24684:6;24679:2;24668:9;24664:18;24657:34;24757:1;24753;24748:3;24744:11;24740:19;24732:6;24728:32;24722:3;24711:9;24707:19;24700:61;24021:746;;;;;;;:::o;24772:446::-;25022:2;25011:9;25004:21;25061:1;25056:2;25045:9;25041:18;25034:29;-1:-1:-1;;;25094:2:121;25083:9;25079:18;25072:35;25145:3;25138:4;25127:9;25123:20;25116:33;24985:4;25166:46;25207:3;25196:9;25192:19;25184:6;25166:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620001745760003560e01c80637a6afc6311620000d3578063e20c9f711162000086578063e20c9f711462000285578063e770e407146200028f578063efe074781462000299578063f11ec75d14620002a3578063fa7626d414620002ad578063fabeb26014620002bb57600080fd5b80637a6afc63146200022957806385226c811462000233578063916a17c6146200024c578063b5508aa91462000256578063ba414fa61462000260578063cf0aee08146200027b57600080fd5b80633e5e3c23116200012c5780633e5e3c2314620001de5780633f7286f414620001e85780635b1ee7e114620001f257806366d9a9a014620001fc5780636dcd8a901462000215578063766a5d8d146200021f57600080fd5b806203603214620001795780630a9254e41462000185578063134d9ed4146200018f5780631ed7831c1462000199578063209a06a514620001bb5780632ade388014620001c5575b600080fd5b62000183620002c5565b005b6200018362000659565b6200018362000fc0565b620001a36200120a565b604051620001b2919062006a10565b60405180910390f35b620001836200126e565b620001cf62001754565b604051620001b2919062006a80565b620001a3620018a2565b620001a362001904565b6200018362001966565b6200020662001c20565b604051620001b2919062006b46565b6200018362001d0a565b620001836200210d565b6200018362002985565b6200023d6200381f565b604051620001b2919062006bfd565b62000206620038f9565b6200023d620039e3565b6200026a62003abd565b6040519015158152602001620001b2565b6200018362003bea565b620001a362004351565b62000183620043b3565b6200018362004720565b6200018362004de2565b6007546200026a9060ff1681565b6200018362005488565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200030f9160016001600160a01b039091163b119062005b4e565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200035a9160026001600160a01b039091163b119062005b4e565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003a49160046001600160a01b039091163b119062005b4e565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b6020820152620003ee9160056001600160a01b039091163b119062005b4e565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620004379160066001600160a01b039091163b119062005b4e565b601e54602454604080516341dcea9160e01b81529051620004dd936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af11580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062006c7b565b6001600160a01b031614604051806060016040528060288152602001620182956028913962005b4e565b601f5460255460405163adcee6e360e01b81526001600160a01b0391821660048201526200059392919091169063adcee6e390602401602060405180830381865afa15801562000531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000557919062006c99565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062005b4e565b6200065760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061c919062006c7b565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062005b4e565b565b600042156200066957426200066f565b636553f0ff5b90506000805160206201823483398151915263e5d6bf026200069383600162006cd3565b6040518263ffffffff1660e01b8152600401620006b291815260200190565b600060405180830381600087803b158015620006cd57600080fd5b505af1158015620006e2573d6000803e3d6000fd5b50505050620006f062005b98565b604051620006fe906200694c565b604051809103906000f0801580156200071b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b158015620007a357600080fd5b505af1158015620007b8573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062018234833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200081e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000844919062006c7b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200088657600080fd5b505af11580156200089b573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b158015620008e957600080fd5b505af1158015620008fe573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097c919062006c7b565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562000a0a57600080fd5b505af115801562000a1f573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562000a7857600080fd5b505af115801562000a8d573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000acc92600192600492911690820162006cef565b600060405180830381600087803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000b1d91506200695a565b6001600160a01b039091168152602001604051809103906000f08015801562000b4a573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562000bdb57600080fd5b505af115801562000bf0573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062018234833981519152915063ca669fa790602401600060405180830381600087803b15801562000c4c57600080fd5b505af115801562000c61573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000ca49216908590600190889060040162006d55565b6020604051808303816000875af115801562000cc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cea919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562000d4257600080fd5b505af115801562000d57573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000dac57600080fd5b505af115801562000dc1573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000e12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e38919062006df2565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b8152600481019390935262000f069316916324d7806c91016020604051808303816000875af115801562000ea4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eca919062006c99565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062005b4e565b60248054602f5460405163288c314960e21b81526001600160a01b03918216600482015262000fbb93919092169163a230c5249101602060405180830381865afa15801562000f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7f919062006c99565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d62657200000000000000008152506200670a565b505050565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001038919062006f84565b905062001079816060015161ffff16601e146040518060400160405280601081526020016f06b206e6f742064656661756c742033360841b81525062005b4e565b620010c28160c0015163ffffffff1662278d0014604051806040016040528060168152602001756d696e20706572696f64206e6f74203330206461797360501b81525062005b4e565b620011094282600001516001600160401b03161015604051806040016040528060138152602001721b185cdd081c195c9a591bdb881d5b9a5b9a5d606a1b81525062005b4e565b60245460408051637c0f6b3560e01b815290516000926001600160a01b031691637c0f6b3591600480830192869291908290030181865afa15801562001153573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200117d919081019062007079565b9050620011bd8151600114604051806040016040528060168152602001753737ba1036b7b932903a3430b710189036b2b6b132b960511b81525062005b4e565b6200120682602001516001600160401b031660041460405180604001604052806015815260200174031206d656d6265722074636c20696e20736574757605c1b81525062005b4e565b5050565b606060148054806020026020016040519081016040528092919081815260200182805480156200126457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001245575b5050505050905090565b6200127862001966565b6000805160206201823483398151915263e5d6bf026200129a42600162006cd3565b6040518263ffffffff1660e01b8152600401620012b991815260200190565b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b50506022546024805460405163436ca71360e11b81526001600160a01b039182166004820152600095508594509216916386d94e2691016040805180830381865afa1580156200133d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001363919062007121565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015620013bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620013e7919081019062007079565b601c54602454604051600162965c6f60e01b031981529293506000926001600160a01b039283169263ff69a39192620014299287929091169060040162007146565b600060405180830381865afa15801562001447573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001471919081019062007172565b9050620014b881518351146040518060400160405280601981526020017f6d656d62657220636f6d6d2e206c656e206d69736d617463680000000000000081525062005b4e565b6200153581600281518110620014d257620014d262007200565b602002602001015182600181518110620014f057620014f062007200565b6020026020010151146040518060400160405280601881526020017f616c6c20686176652073616d6520636f6d6d69746d656e74000000000000000081525062005b4e565b62001572662386f26fc100008410156040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015af678ac7230489e8000084106040518060400160405280600f81526020016e0189036b2b6b132b9399037b7363c9608d1b81525062005b4e565b620015eb8460041460405180604001604052806015815260200174185b1b081a185d99480d0b08195e1c1958d959080d605a1b81525062005b4e565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa1580156200163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001662919062007216565b9050620016a86001826000015160030b1360405180604001604052806016815260200175195e1c081b595b58995c9cc81dd95c9948185919195960521b81525062005b4e565b620016c08351826020015163ffffffff161462006717565b620017108482604001516001600160401b0316146040518060400160405280601881526020017f73686f756c642062652073616d65206c6966656379636c65000000000000000081525062005b4e565b6200174d8582606001516001600160401b0316146040518060400160405280600a815260200169185b1b081dd95c99480d60b21b81525062005b4e565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200189957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001881578382906000526020600020018054620017ed9062007235565b80601f01602080910402602001604051908101604052809291908181526020018280546200181b9062007235565b80156200186c5780601f1062001840576101008083540402835291602001916200186c565b820191906000526020600020905b8154815290600101906020018083116200184e57829003601f168201915b505050505081526020019060010190620017cb565b50505050815250508152602001906001019062001778565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6200197062003bea565b604051630618f58760e51b81526313a67ce960e31b6004820152600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b158015620019bf57600080fd5b505af1158015620019d4573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562001a2d57600080fd5b505af115801562001a42573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b0391821660048201526000955092169250636e09f59c91016000604051808303816000875af115801562001a97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac1919081019062007172565b90506000805160206201823483398151915263e5d6bf0262001ae74262278d0062006cd3565b6040518263ffffffff1660e01b815260040162001b0691815260200190565b600060405180830381600087803b15801562001b2157600080fd5b505af115801562001b36573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562001b8f57600080fd5b505af115801562001ba4573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001bf6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001206919081019062007172565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001cf157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001cb25790505b5050505050815250508152602001906001019062001c44565b6000805160206201823483398151915263e5d6bf0262001d2e426283d60062006cd3565b6040518263ffffffff1660e01b815260040162001d4d91815260200190565b600060405180830381600087803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050505062001d8b62003bea565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562001ddd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e03919062006f84565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562001e5b57600080fd5b505af115801562001e70573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600095509216925063083ad23b91016020604051808303816000875af115801562001ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eeb919062006df2565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562001f4357600080fd5b505af115801562001f58573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd4919081019062007172565b5060225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152600093919091169163f1e0fa7891016101c060405180830381865afa15801562002027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204d919062006f84565b90508060c0015163ffffffff1681600001516200206b919062007271565b6001600160401b03169150620020ac428310156040518060400160405280600f81526020016e39b437bab632103132903630ba32b960891b81525062005b4e565b62000fbb8360c0015163ffffffff168460000151620020cc919062007271565b6001600160401b0316831015604051806040016040528060168152602001751c195c9a5bd9081a5b98dc995b595b9d0819985d5b1d60521b81525062005b4e565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200212557505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062002199576200219962007200565b602002602001018190525063a3c9eb4360e01b604051602401620021bd906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062002206576200220662007200565b602002602001018190525060058160008151811062002229576200222962007200565b602002602001019061ffff16908161ffff168152505060098160018151811062002257576200225762007200565b61ffff9290921660209283029190910190910152604051630618f58760e51b8152634755657960e01b6004820152600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b158015620022ba57600080fd5b505af1158015620022cf573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e93506200230e929091169086908690600401620072c6565b600060405180830381600087803b1580156200232957600080fd5b505af11580156200233e573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200239757600080fd5b505af1158015620023ac573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e9350620023eb929091169086908690600401620072c6565b600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002499919062006df2565b50620024a4620043b3565b602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200251e919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa1580156200257f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025a5919062007379565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152909150600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b158015620025fd57600080fd5b505af115801562002612573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200266c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002692919062006df2565b5060225460275460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620026f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002719919062007379565b90506200275e600082602001516001600160401b0316116040518060400160405280600f81526020016e68617320736f6d6520706f696e747360881b81525062005b4e565b620027ae81602001516001600160401b031683602001516001600160401b0316106040518060400160405280601081526020016f1b9bc81c1bda5b9d1cc819d85a5b995960821b81525062005b4e565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200280357600080fd5b505af115801562002818573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb4391506200284c906004016200729b565b6020604051808303816000875af11580156200286c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002892919062006df2565b5060225460265460248054604051632c2780df60e11b81526001600160a01b03938416600482015290831691810191909152600092919091169063584f01be90604401608060405180830381865afa158015620028f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002919919062007379565b90506200296d600982602001516001600160401b031610156040518060400160405280601c81526020017f66756e6374696f6e2061726720706f696e7473206d69736d617463680000000081525062005b4e565b6200174d81602001516001600160401b031662006792565b6200298f6200126e565b60015b606481101562002eb95760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b158015620029ed57600080fd5b505af115801562002a02573d6000803e3d6000fd5b5050505060028162002a159190620073f2565b1562002a9757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002a4b906004016200729b565b6020604051808303816000875af115801562002a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a91919062006df2565b62002b13565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002aed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b13919062006df2565b5062002b21600282620073f2565b1562002ba357602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002b57906004016200729b565b6020604051808303816000875af115801562002b77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9d919062006df2565b62002c1f565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002bf9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c1f919062006df2565b5062002c2d600282620073f2565b1562002caf57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002c63906004016200729b565b6020604051808303816000875af115801562002c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca9919062006df2565b62002d2b565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2b919062006df2565b5062002d39600282620073f2565b1562002dbb57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062002d6f906004016200729b565b6020604051808303816000875af115801562002d8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db5919062006df2565b62002e37565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e37919062006df2565b506000805160206201823483398151915263e5d6bf0262002e5a42600162006cd3565b6040518263ffffffff1660e01b815260040162002e7991815260200190565b600060405180830381600087803b15801562002e9457600080fd5b505af115801562002ea9573d6000803e3d6000fd5b5050505080600101905062002992565b6000805160206201823483398151915263e5d6bf0262002edd426228de8062006cd3565b6040518263ffffffff1660e01b815260040162002efc91815260200190565b600060405180830381600087803b15801562002f1757600080fd5b505af115801562002f2c573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f8557600080fd5b505af115801562002f9a573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562002fec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003016919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa15801562003068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308e919062007216565b9050620030a881608001516001600160401b031662006792565b6080810151600192505b6064831015620035db5760405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200310d57600080fd5b505af115801562003122573d6000803e3d6000fd5b50505050600283620031359190620073f2565b15620031b757602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb43906200316b906004016200729b565b6020604051808303816000875af11580156200318b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031b1919062006df2565b62003233565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200320d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003233919062006df2565b5062003241600284620073f2565b600003620032c557602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003279906004016200729b565b6020604051808303816000875af115801562003299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032bf919062006df2565b62003341565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200331b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003341919062006df2565b506200334f600284620073f2565b15620033d157602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003385906004016200729b565b6020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062006df2565b6200344d565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200344d919062006df2565b506200345b600284620073f2565b15620034dd57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062003491906004016200729b565b6020604051808303816000875af1158015620034b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034d7919062006df2565b62003559565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003559919062006df2565b506000805160206201823483398151915263e5d6bf026200357c42600162006cd3565b6040518263ffffffff1660e01b81526004016200359b91815260200190565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b50505050826001019250620030b2565b6000805160206201823483398151915263e5d6bf02620035ff426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200361e91815260200190565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620036a757600080fd5b505af1158015620036bc573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af11580156200370e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003738919081019062007172565b5060225460248054604051630c638f6360e21b81526001600160a01b03918216600482015292169163318e3d8c910160a060405180830381865afa15801562003785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037ab919062007216565b9150620037c582608001516001600160401b031662006792565b60008260800151905062003819826001600160401b0316826001600160401b0316141560405180604001604052806012815260200171195c5d585b1b1e481c195c999bdc9b585b9d60721b81525062005b4e565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001899578382906000526020600020018054620038659062007235565b80601f0160208091040260200160405190810160405280929190818152602001828054620038939062007235565b8015620038e45780601f10620038b857610100808354040283529160200191620038e4565b820191906000526020600020905b815481529060010190602001808311620038c657829003601f168201915b50505050508152602001906001019062003843565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620018995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620039ca57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200398b5790505b505050505081525050815260200190600101906200391d565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200189957838290600052602060002001805462003a299062007235565b80601f016020809104026020016040519081016040528092919081815260200182805462003a579062007235565b801562003aa85780601f1062003a7c5761010080835404028352916020019162003aa8565b820191906000526020600020905b81548152906001019060200180831162003a8a57829003601f168201915b50505050508152602001906001019062003a07565b600754600090610100900460ff161562003ae05750600754610100900460ff1690565b6000600080516020620182348339815191523b1562003be5576040805160008051602062018234833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162003b67917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162007415565b60408051601f198184030181529082905262003b839162007448565b6000604051808303816000865af19150503d806000811462003bc2576040519150601f19603f3d011682016040523d82523d6000602084013e62003bc7565b606091505b509150508080602001905181019062003be1919062006c99565b9150505b919050565b6040805160028082526060820190925260039160019160059160009190816020015b606081526020019060019003908162003c0c57505060408051600280825260608201835292935060009290916020830190803683370190505060405163335f501f60e11b60208201529091506024016040516020818303038152906040528260008151811062003c805762003c8062007200565b602002602001018190525063a3c9eb4360e01b60405160240162003ca4906200729b565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508260018151811062003ced5762003ced62007200565b6020026020010181905250838160008151811062003d0f5762003d0f62007200565b602002602001019061ffff16908161ffff1681525050828160018151811062003d3c5762003d3c62007200565b61ffff9290921660209283029190910190910152602f5460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562003da557600080fd5b505af115801562003dba573d6000803e3d6000fd5b5050602254602d54604051631b799aa760e11b81526001600160a01b0392831694506336f3354e935062003df9929091169086908690600401620072c6565b600060405180830381600087803b15801562003e1457600080fd5b505af115801562003e29573d6000803e3d6000fd5b506001925050505b6064811015620042845760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b15801562003e8c57600080fd5b505af115801562003ea1573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201823483398151915290636900a3ae90602401600060405180830381865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f30919081019062007466565b6024546040516001600160e01b031960e085901b16815262003f6592916001916004916001600160a01b031690820162007504565b600060405180830381600087803b15801562003f8057600080fd5b505af115801562003f95573d6000803e3d6000fd5b5060008051602062018234833981519152925063e5d6bf02915062003fbe905042600162006cd3565b6040518263ffffffff1660e01b815260040162003fdd91815260200190565b600060405180830381600087803b15801562003ff857600080fd5b505af11580156200400d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200406257600080fd5b505af115801562004077573d6000803e3d6000fd5b505050506002816200408a9190620073f2565b156200410c57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb4390620040c0906004016200729b565b6020604051808303816000875af1158015620040e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004106919062006df2565b62004188565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562004162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004188919062006df2565b506000805160206201823483398151915263e5d6bf02620041ab42600162006cd3565b6040518263ffffffff1660e01b8152600401620041ca91815260200190565b600060405180830381600087803b158015620041e557600080fd5b505af1158015620041fa573d6000803e3d6000fd5b50506022546024805460405163343bce3b60e01b81526001600160a01b039182166004820152600196909601959216935063343bce3b9250016000604051808303816000875af115801562004253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200427d919081019062007172565b5062003e31565b60225460248054604051631e3c1f4f60e31b81526001600160a01b039182166004820152620043499360019392169163f1e0fa7891016101c060405180830381865afa158015620042d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042ff919062006f84565b600001516001600160401b0316116040518060400160405280601e81526020017f6c617374506572696f64206e6f7420626c6f636b2e74696d657374616d70000081525062005b4e565b505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562001264576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001245575050505050905090565b6026546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062018234833981519152906306447d5690602401600060405180830381600087803b1580156200440857600080fd5b505af11580156200441d573d6000803e3d6000fd5b505050506000602d60009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200449d919062006df2565b602d5460405163a3c9eb4360e01b815260206004820152600060248201529192506001600160a01b03169063a3c9eb43906044016020604051808303816000875af1158015620044f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004517919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa15801562004563573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004589919062006df2565b602d5460405163a3c9eb4360e01b81529192506001600160a01b03169063a3c9eb4390620045ba906004016200729b565b6020604051808303816000875af1158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004600919062006df2565b50602d54604080516341c0fac560e11b815290516000926001600160a01b031691638381f58a9160048083019260209291908290030181865afa1580156200464c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004672919062006df2565b9050620046b48162004685848662006cd3565b146040518060400160405280600f81526020016e139bdd08125b98dc995b595b9d1959608a1b81525062005b4e565b6000805160206201827583398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200470257600080fd5b505af115801562004717573d6000803e3d6000fd5b50505050505050565b604051630618f58760e51b8152636bd1573560e11b6004820152600590600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b1580156200477257600080fd5b505af115801562004787573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0387811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af1158015620047e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200480f919062006df2565b604051630618f58760e51b81526318dc243b60e31b6004820152909150600080516020620182348339815191529063c31eb0e090602401600060405180830381600087803b1580156200486157600080fd5b505af115801562004876573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b03888116600483015291821692810192909252909116925063df3e30f091506044016020604051808303816000875af115801562004943573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004969919062006df2565b9050620049af816000146040518060400160405280601881526020017f4e6f207570646174652073636f726520697320626c616e6b000000000000000081525062005b4e565b620049b962003bea565b6000805160206201823483398151915263e5d6bf02620049dd426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620049fc91815260200190565b600060405180830381600087803b15801562004a1757600080fd5b505af115801562004a2c573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201823483398151915292506306447d569150602401600060405180830381600087803b15801562004a8557600080fd5b505af115801562004a9a573d6000803e3d6000fd5b505060225460248054604051630df3e30f60e41b81526001600160a01b0388811660048301529182169281019290925260009450909116915063df3e30f0906044016020604051808303816000875af115801562004afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b22919062006df2565b905062004b56600182116040518060400160405280600b81526020016a1b9bdd081d5c19185d195960aa1b81525062005b4e565b6022546024805460405163083ad23b60e01b81526001600160a01b039182166004820152600093919091169163083ad23b91016020604051808303816000875af115801562004ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bcf919062006df2565b90506000805160206201823483398151915263e5d6bf0262004bf383600162006cd3565b6040518263ffffffff1660e01b815260040162004c1291815260200190565b600060405180830381600087803b15801562004c2d57600080fd5b505af115801562004c42573d6000803e3d6000fd5b50506022546024805460405163083ad23b60e01b81526001600160a01b0391821660048201529216935063083ad23b9250016020604051808303816000875af115801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba919062006df2565b5060225460248054604051630df3e30f60e41b81526001600160a01b038881166004830152918216928101929092529091169063df3e30f0906044016020604051808303816000875af115801562004d16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d3c919062006df2565b915062004d75600183116040518060400160405280601081526020016f6861732061637475616c2073636f726560801b81525062005b4e565b6000805160206201827583398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004dc357600080fd5b505af115801562004dd8573d6000803e3d6000fd5b5050505050505050565b62004dec62005488565b601c5460248054604051632ca62cd560e01b81526001600160a01b0391821660048201526000939190911691632ca62cd59101600060405180830381865afa15801562004e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004e67919081019062007079565b905060055b8151811015620050aa5762004e83600282620073f2565b600003620050a1576000805160206201827583398151915260001c6001600160a01b031663ca669fa783838151811062004ec15762004ec162007200565b60200260200101516040518263ffffffff1660e01b815260040162004ef591906001600160a01b0391909116815260200190565b600060405180830381600087803b15801562004f1057600080fd5b505af115801562004f25573d6000803e3d6000fd5b5050602d5460405163a3c9eb4360e01b81526001600160a01b03909116925063a3c9eb43915062004f59906004016200729b565b6020604051808303816000875af115801562004f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f9f919062006df2565b506000805160206201827583398151915260001c6001600160a01b031663ca669fa783838151811062004fd65762004fd662007200565b60200260200101516040518263ffffffff1660e01b81526004016200500a91906001600160a01b0391909116815260200190565b600060405180830381600087803b1580156200502557600080fd5b505af11580156200503a573d6000803e3d6000fd5b5050601c54602480546040516351cff8d960e01b81526001600160a01b039182166004820152921693506351cff8d9925001600060405180830381600087803b1580156200508757600080fd5b505af11580156200509c573d6000803e3d6000fd5b505050505b60010162004e6c565b6000805160206201823483398151915263e5d6bf02620050ce426228de8062006cd3565b6040518263ffffffff1660e01b8152600401620050ed91815260200190565b600060405180830381600087803b1580156200510857600080fd5b505af11580156200511d573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b1580156200517657600080fd5b505af11580156200518b573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af1158015620051dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005207919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa15801562005258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200527e919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa158015620052d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620052fb919062007216565b601c5460248054604051632ca62cd560e01b81526001600160a01b039182166004820152939450600093921691632ca62cd59101600060405180830381865afa1580156200534d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005377919081019062007079565b9050620053a86000836000015160030b12604051806060016040528060218152602001620182546021913962005b4e565b620053ed81518751116040518060400160405280601e81526020017f6d656d62657273206c65667420666f72206e656761746976652064696666000081525062005b4e565b815186518251620054379260030b91620054079162007564565b60070b146040518060400160405280600d81526020016c32bc3832b1ba32b2103234b33360991b81525062005b4e565b62004349600083608001516001600160401b0316116040518060400160405280601a81526020017f657870656374656420706572666f726d616e63652073636f726500000000000081525062005b4e565b6200549262001966565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152600093919091169163318e3d8c910160a060405180830381865afa158015620054e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005509919062007216565b9050661f9465b8ab8e385b661f9465b8ab8e74811015620058045760405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620182348339815191529063ca669fa790602401600060405180830381600087803b1580156200557557600080fd5b505af11580156200558a573d6000803e3d6000fd5b5050601c5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf91506000805160206201823483398151915290636900a3ae90602401600060405180830381865afa158015620055ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005619919081019062007466565b6024546040516001600160e01b031960e085901b1681526200564f92916001916009916001600160a01b03169060040162007596565b600060405180830381600087803b1580156200566a57600080fd5b505af11580156200567f573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b038416600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620056d457600080fd5b505af1158015620056e9573d6000803e3d6000fd5b50505050600281620056fc9190620073f2565b156200577e57602d5460405163a3c9eb4360e01b81526001600160a01b039091169063a3c9eb439062005732906004016200729b565b6020604051808303816000875af115801562005752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005778919062006df2565b620057fa565b602d60009054906101000a90046001600160a01b03166001600160a01b03166366bea03e6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620057d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057fa919062006df2565b5060010162005514565b6000805160206201823483398151915263e5d6bf0262005828426228de8062006cd3565b6040518263ffffffff1660e01b81526004016200584791815260200190565b600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062018234833981519152925063ca669fa79150602401600060405180830381600087803b158015620058d057600080fd5b505af1158015620058e5573d6000803e3d6000fd5b505060225460248054604051631b827d6760e21b81526001600160a01b03918216600482015292169350636e09f59c9250016000604051808303816000875af115801562005937573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005961919081019062007172565b506022546024805460405163436ca71360e11b81526001600160a01b03918216600482015260009384939216916386d94e2691016040805180830381865afa158015620059b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059d8919062007121565b60225460248054604051630c638f6360e21b81526001600160a01b039182166004820152949650929450600093929091169163318e3d8c910160a060405180830381865afa15801562005a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a55919062007216565b905062005a936064826000015160030b126040518060400160405280600e81526020016d064696666207374696c6c203130360941b81525062005b4e565b62005aa5816020015160030b620067da565b62005abd81604001516001600160401b031662006792565b62005b02606482604001516001600160401b031611604051806040016040528060118152602001701b595b58995c9cc81b9bdd081859191959607a1b81525062005b4e565b6200174d600482606001516001600160401b0316116040518060400160405280601781526020017f73616d65206176657261676520636f6d6d69746d656e740000000000000000008152505b8162001206577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162005b859190620075f2565b60405180910390a1620012068262006717565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005c2957600080fd5b505af115801562005c3e573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062018234833981519152925063c657c7189150608401600060405180830381600087803b15801562005cd357600080fd5b505af115801562005ce8573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062018234833981519152925063c657c7189150608401600060405180830381600087803b15801562005d7d57600080fd5b505af115801562005d92573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005e3357600080fd5b505af115801562005e48573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201823483398151915292506306447d569150602401600060405180830381600087803b15801562005ea157600080fd5b505af115801562005eb6573d6000803e3d6000fd5b5050505060405162005ec89062006968565b604051809103906000f08015801562005ee5573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b15801562005f6f57600080fd5b505af115801562005f84573d6000803e3d6000fd5b5050505060405162005f969062006976565b604051809103906000f08015801562005fb3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200603c57600080fd5b505af115801562006051573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200609f57600080fd5b505af1158015620060b4573d6000803e3d6000fd5b50505050604051620060c69062006984565b604051809103906000f080158015620060e3573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200616957600080fd5b505af11580156200617e573d6000803e3d6000fd5b50505050604051620061909062006992565b604051809103906000f080158015620061ad573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200623757600080fd5b505af11580156200624c573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200626d9150620069a0565b6001600160a01b039091168152602001604051809103906000f0801580156200629a573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200632957600080fd5b505af11580156200633e573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200635f9150620069ae565b6001600160a01b039091168152602001604051809103906000f0801580156200638c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b1580156200641b57600080fd5b505af115801562006430573d6000803e3d6000fd5b5050505060405162006442906200694c565b604051809103906000f0801580156200645f573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620064bf57600080fd5b505af1158015620064d4573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200650590620069bc565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200654a573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620182348339815191529063c657c71890608401600060405180830381600087803b158015620065d757600080fd5b505af1158015620065ec573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562006668573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200668e919062006c7b565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062018234833981519152916390c5013b9160048082019260009290919082900301818387803b158015620066f557600080fd5b505af11580156200174d573d6000803e3d6000fd5b6200120682158262005b4e565b806200678f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200677d9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200678f62006822565b50565b6200678f81604051602401620067aa91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b1790526200692b565b6200678f81604051602401620067f291815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316634e0c1d1d60e01b1790526200692b565b600080516020620182348339815191523b156200691a576040805160008051602062018234833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620068b5929160200162007415565b60408051601f1981840301815290829052620068d19162007448565b6000604051808303816000865af19150503d806000811462006910576040519150601f19603f3d011682016040523d82523d6000602084013e62006915565b606091505b505050505b6007805461ff001916610100179055565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6137d5806200762483390190565b610926806200adf983390190565b610120806200b71f83390190565b610c72806200b83f83390190565b613723806200c4b183390190565b6125a3806200fbd483390190565b6110db806201217783390190565b613043806201325283390190565b611f9f806201629583390190565b600081518084526020808501945080840160005b8381101562006a055781516001600160a01b031687529582019590820190600101620069de565b509495945050505050565b60208152600062006a256020830184620069ca565b9392505050565b60005b8381101562006a4957818101518382015260200162006a2f565b50506000910152565b6000815180845262006a6c81602086016020860162006a2c565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b3657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1f57605f1989850301835262006b0c84865162006a52565b948e01949350918d019160010162006aed565b505050978a01979450509188019160010162006aa7565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006bee57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006bd85783516001600160e01b0319168252928b019260019290920191908b019062006bac565b50978a0197955050509187019160010162006b6e565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006c5657603f1988860301845262006c4385835162006a52565b9450928501929085019060010162006c24565b5092979650505050505050565b80516001600160a01b038116811462003be557600080fd5b60006020828403121562006c8e57600080fd5b62006a258262006c63565b60006020828403121562006cac57600080fd5b8151801515811462006a2557600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111562006ce95762006ce962006cbd565b92915050565b60a08152600660a08201526561204e616d6560d01b60c082015260e06020820152600062006d3260e0830160058152641d5c9b1b1b60da1b602082015260400190565b60408301959095525060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562006de35783518352928401929184019160010162006dc5565b50909998505050505050505050565b60006020828403121562006e0557600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171562006e485762006e4862006e0c565b60405290565b604051601f8201601f191681016001600160401b038111828210171562006e795762006e7962006e0c565b604052919050565b80516001600160401b038116811462003be557600080fd5b805161ffff8116811462003be557600080fd5b805160ff8116811462003be557600080fd5b805163ffffffff8116811462003be557600080fd5b8051600381900b811462003be557600080fd5b600060a0828403121562006ef957600080fd5b60405160a081018181106001600160401b038211171562006f1e5762006f1e62006e0c565b60405290508062006f2f8362006ed3565b815262006f3f6020840162006ed3565b602082015262006f526040840162006e81565b604082015262006f656060840162006e81565b606082015262006f786080840162006e81565b60808201525092915050565b60006101c0828403121562006f9857600080fd5b62006fa262006e22565b62006fad8362006e81565b815262006fbd6020840162006e81565b602082015262006fd06040840162006e81565b604082015262006fe36060840162006e99565b606082015262006ff66080840162006eac565b60808201526200700960a0840162006eac565b60a08201526200701c60c0840162006ebe565b60c082015260e083015160e0820152610100808401518183015250610120620070488582860162006ee6565b908201529392505050565b60006001600160401b038211156200706f576200706f62006e0c565b5060051b60200190565b600060208083850312156200708d57600080fd5b82516001600160401b03811115620070a457600080fd5b8301601f81018513620070b657600080fd5b8051620070cd620070c78262007053565b62006e4e565b81815260059190911b82018301908381019087831115620070ed57600080fd5b928401925b828410156200711657620071068462006c63565b82529284019290840190620070f2565b979650505050505050565b600080604083850312156200713557600080fd5b505080516020909101519092909150565b6040815260006200715b6040830185620069ca565b905060018060a01b03831660208301529392505050565b600060208083850312156200718657600080fd5b82516001600160401b038111156200719d57600080fd5b8301601f81018513620071af57600080fd5b8051620071c0620070c78262007053565b81815260059190911b82018301908381019087831115620071e057600080fd5b928401925b828410156200711657835182529284019290840190620071e5565b634e487b7160e01b600052603260045260246000fd5b600060a082840312156200722957600080fd5b62006a25838362006ee6565b600181811c908216806200724a57607f821691505b6020821081036200726b57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160401b0381811683821601908082111562007294576200729462006cbd565b5092915050565b602080825260119082015270617665727972616e646f6d737472696e6760781b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156200732e57607f198887030184526200731b86835162006a52565b95509284019290840190600101620072fc565b50505050838203604085015284518083528186019282019060005b818110156200736b57845161ffff168352938301939183019160010162007349565b509098975050505050505050565b6000608082840312156200738c57600080fd5b604051608081018181106001600160401b0382111715620073b157620073b162006e0c565b604052620073bf8362006e81565b8152620073cf6020840162006e81565b602082015260408301516040820152606083015160608201528091505092915050565b6000826200741057634e487b7160e01b600052601260045260246000fd5b500690565b6001600160e01b03198316815281516000906200743a81600485016020870162006a2c565b919091016004019392505050565b600082516200745c81846020870162006a2c565b9190910192915050565b6000602082840312156200747957600080fd5b81516001600160401b03808211156200749157600080fd5b818401915084601f830112620074a657600080fd5b815181811115620074bb57620074bb62006e0c565b620074d0601f8201601f191660200162006e4e565b9150808252856020828501011115620074e857600080fd5b620074fb81602084016020860162006a2c565b50949350505050565b60a0815260006200751960a083018762006a52565b82810360208401526200753e8160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b0316608090910152919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171562006ce95762006ce962006cbd565b60a081526000620075ab60a083018762006a52565b8281036020840152600881526768747470733a2f2f60c01b60208201526040810191505084604083015283606083015260018060a01b038316608083015295945050505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062006a25608083018462006a5256fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d6578706563746564206e65676174697665206f6e206c6f7374206d656d62657273885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220e4c16e783794118043c45d1e2727291775891f37e6ccf6959e0d273c848d13f264736f6c63430008130033", + "sourceMap": "353:13334:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;539:1213:130;;;:::i;3560:492::-;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:1183:130;;;:::i;3360:151:72:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;7024:375:130:-;;;:::i;2738:178:72:-;;;:::i;:::-;;;;;;;:::i;5362:672:130:-;;;:::i;2211:1343::-;;;:::i;11216:2469::-;;;:::i;2592:140:72:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5573:14:134;;5566:22;5548:41;;5536:2;5521:18;1819:584:65;5408:187:134;4058:1298:130;;;:::i;2304:142:72:-;;;:::i;1758:447:130:-;;;:::i;6040:978::-;;;:::i;9871:1339::-;;;:::i;1572:26:65:-;;;;;;;;;8594:1271:130;;;:::i;2912:713:127:-;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;6141:51:134;3476:66:127;;3487:3;;;;;:23;;6114:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;539:1213:130:-;582:13;598:15;:20;:51;;634:15;598:51;;;621:10;598:51;582:67;-1:-1:-1;;;;;;;;;;;;659:7:130;667:9;582:67;675:1;667:9;:::i;:::-;659:18;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;659:18:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:13;:11;:13::i;:::-;727:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;712:12:130;:36;;-1:-1:-1;;;;;;712:36:130;-1:-1:-1;;;;;712:36:130;;;;;;;;;758:43;;;-1:-1:-1;;;758:43:130;;;;;7141:51:134;;;;7208:18;;;7201:30;7267:1;7247:18;;;7240:29;-1:-1:-1;;;7285:18:134;;;7278:38;-1:-1:-1;;;;;;;;;;;758:8:130;;;7333:19:134;;758:43:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;821:3:130;;:11;;;-1:-1:-1;;;821:11:130;;;;-1:-1:-1;;;;;;;;;;;812:8:130;-1:-1:-1;812:8:130;;-1:-1:-1;;;;;;821:3:130;;;;:9;;:11;;;;;;;;;;;;;;;:3;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;812:21;;-1:-1:-1;;;;;;812:21:130;;;;;;;-1:-1:-1;;;;;6159:32:134;;;812:21:130;;;6141:51:134;6114:18;;812:21:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;843:3:130;;874:12;;843:45;;-1:-1:-1;;;843:45:130;;-1:-1:-1;;;;;874:12:130;;;843:45;;;6141:51:134;843:3:130;;;-1:-1:-1;843:22:130;;-1:-1:-1;6114:18:134;;843:45:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:3;;;;;;;;;-1:-1:-1;;;;;922:3:130;-1:-1:-1;;;;;922:17:130;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;899:3;:43;;-1:-1:-1;;;;;;899:43:130;-1:-1:-1;;;;;899:43:130;;;;;;;;;952:41;;;-1:-1:-1;;;952:41:130;;;;;7575:51:134;;;;7642:18;;;7635:30;7701:2;7681:18;;;7674:30;-1:-1:-1;;;7720:18:134;;;7713:45;-1:-1:-1;;;;;;;;;;;952:8:130;;;7775:19:134;;952:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1013:2:130;;1004:12;;-1:-1:-1;;;1004:12:130;;-1:-1:-1;;;;;1013:2:130;;;1004:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1004:8:130;-1:-1:-1;1004:8:130;;-1:-1:-1;6114:18:134;;1004:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1026:3:130;;1068:4;;1026:48;;-1:-1:-1;;;1026:48:130;;-1:-1:-1;;;;;1026:3:130;;;;-1:-1:-1;1026:8:130;;-1:-1:-1;1026:48:130;;:3;;1057:1;;1068:4;;;1026:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1141:4:130;;1105:43;;-1:-1:-1;;;;;1141:4:130;;;;-1:-1:-1;1105:43:130;;-1:-1:-1;1105:43:130;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;1105:43:130;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1085:17:130;:63;;-1:-1:-1;;;;;;1085:63:130;-1:-1:-1;;;;;1085:63:130;;;;;;;;;1158:57;;;-1:-1:-1;;;1158:57:130;;;;;8943:51:134;;;;9010:18;;;9003:30;9069:2;9049:18;;;9042:30;-1:-1:-1;;;9088:18:134;;;9081:47;-1:-1:-1;;;;;;;;;;;1158:8:130;;;9145:19:134;;1158:57:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1272:2:130;;1263:12;;-1:-1:-1;;;1263:12:130;;-1:-1:-1;;;;;1272:2:130;;;1263:12;;;6141:51:134;1226:26:130;;-1:-1:-1;;;;;;;;;;;;1263:8:130;-1:-1:-1;1263:8:130;;6114:18:134;;1263:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1326:3:130;;1358:2;;1326:84;;-1:-1:-1;;;1326:84:130;;1285:26;;-1:-1:-1;;;;;;1326:3:130;;;;-1:-1:-1;1326:23:130;;:84;;1358:2;;1285:26;;1326:3;;1400:9;;1326:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1430:2;;1421:12;;-1:-1:-1;;;1421:12:130;;-1:-1:-1;;;;;1430:2:130;;;1421:12;;;6141:51:134;1285:125:130;;-1:-1:-1;;;;;;;;;;;;1421:8:130;;;6114:18:134;;1421:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1443:3:130;;1470:17;;1443:66;;-1:-1:-1;;;1443:66:130;;-1:-1:-1;;;;;1470:17:130;;;1443:66;;;10688:51:134;10755:18;;;10748:34;;;1443:3:130;;;-1:-1:-1;1443:18:130;;-1:-1:-1;10661:18:134;;1443:66:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1535:3:130;;1566:17;;1535:50;;-1:-1:-1;;;1535:50:130;;-1:-1:-1;;;;;1566:17:130;;;1535:50;;;6141:51:134;1535:3:130;;;-1:-1:-1;1535:22:130;;-1:-1:-1;6114:18:134;;1535:50:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1520:12;:65;1604:2;;1596:5;:10;;-1:-1:-1;;;;;;1596:10:130;-1:-1:-1;;;;;1604:2:130;;;1596:10;;;;;;1627:4;;;:19;;-1:-1:-1;;;1627:19:130;;;;;6141:51:134;;;;1616:58:130;;1627:4;;:12;;6114:18:134;1627:19:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1616:58;;;;;;;;;;;;;;;;;:10;:58::i;:::-;1696:4;;;1710:5;;1696:20;;-1:-1:-1;;;1696:20:130;;-1:-1:-1;;;;;1710:5:130;;;1696:20;;;6141:51:134;1684:61:130;;1696:4;;;;;:13;;6114:18:134;1696:20:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1684:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;572:1180;;;539:1213::o;3560:492::-;3633:3;;3659:4;;;3633:32;;-1:-1:-1;;;3633:32:130;;-1:-1:-1;;;;;3659:4:130;;;3633:32;;;6141:51:134;3609:21:130;;3633:3;;;;;:17;;6114:18:134;3633:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3609:56;;3676:43;3687:3;:5;;;:11;;3696:2;3687:11;3676:43;;;;;;;;;;;;;-1:-1:-1;;;3676:43:130;;;:10;:43::i;:::-;3729:54;3740:3;:5;;;:16;;3749:7;3740:16;3729:54;;;;;;;;;;;;;-1:-1:-1;;;3729:54:130;;;:10;:54::i;:::-;3793:68;3822:15;3804:3;:14;;;-1:-1:-1;;;;;3804:33:130;;;3793:68;;;;;;;;;;;;;-1:-1:-1;;;3793:68:130;;;:10;:68::i;:::-;3899:4;;:20;;;-1:-1:-1;;;3899:20:130;;;;3872:24;;-1:-1:-1;;;;;3899:4:130;;:18;;:20;;;;;3872:24;;3899:20;;;;;;;:4;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3899:20:130;;;;;;;;;;;;:::i;:::-;3872:47;;3929:57;3940:7;:14;3958:1;3940:19;3929:57;;;;;;;;;;;;;-1:-1:-1;;;3929:57:130;;;:10;:57::i;:::-;3996:49;4007:3;:7;;;-1:-1:-1;;;;;4007:12:130;4018:1;4007:12;3996:49;;;;;;;;;;;;;-1:-1:-1;;;3996:49:130;;;:10;:49::i;:::-;3599:453;;3560:492::o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;7405:1183:130:-;7459:16;:14;:16::i;:::-;-1:-1:-1;;;;;;;;;;;7486:7:130;7494:19;:15;7512:1;7494:19;:::i;:::-;7486:28;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;7486:28:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7559:3:130;;7600:4;;;7559:47;;-1:-1:-1;;;7559:47:130;;-1:-1:-1;;;;;7600:4:130;;;7559:47;;;6141:51:134;7526:14:130;;-1:-1:-1;7526:14:130;;-1:-1:-1;7559:3:130;;;:32;;6114:18:134;7559:47:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7525:81;;;;7616:27;7646:4;;;;;;;;;-1:-1:-1;;;;;7646:4:130;-1:-1:-1;;;;;7646:18:130;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7646:20:130;;;;;;;;;;;;:::i;:::-;7710:3;;7754:4;;7710:50;;-1:-1:-1;;;;;;7710:50:130;;7616;;-1:-1:-1;7676:31:130;;-1:-1:-1;;;;;7710:3:130;;;;:23;;:50;;7616;;7754:4;;;;7710:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7710:50:130;;;;;;;;;;;;:::i;:::-;7676:84;;7771:83;7803:14;:21;7782:10;:17;:42;7771:83;;;;;;;;;;;;;;;;;:10;:83::i;:::-;7864:78;7896:14;7911:1;7896:17;;;;;;;;:::i;:::-;;;;;;;7875:14;7890:1;7875:17;;;;;;;;:::i;:::-;;;;;;;:38;7864:78;;;;;;;;;;;;;;;;;:10;:78::i;:::-;7953:50;7973:10;7964:5;:19;;7953:50;;;;;;;;;;;;;-1:-1:-1;;;7953:50:130;;;:10;:50::i;:::-;8013:47;8032:8;8024:5;:16;8013:47;;;;;;;;;;;;;-1:-1:-1;;;8013:47:130;;;:10;:47::i;:::-;8071:48;8082:6;8092:1;8082:11;8071:48;;;;;;;;;;;;;-1:-1:-1;;;8071:48:130;;;:10;:48::i;:::-;8165:3;;8201:4;;;8165:42;;-1:-1:-1;;;8165:42:130;;-1:-1:-1;;;;;8201:4:130;;;8165:42;;;6141:51:134;8130:32:130;;8165:3;;;;;:27;;6114:18:134;8165:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8130:77;;8218:71;8261:1;8229:14;:29;;;:33;;;8218:71;;;;;;;;;;;;;-1:-1:-1;;;8218:71:130;;;:10;:71::i;:::-;8300:79;8361:10;:17;8326:14;:29;;;8311:46;;:67;8300:10;:79::i;:::-;8389:94;8449:5;8415:14;:28;;;-1:-1:-1;;;;;8400:45:130;:54;8389:94;;;;;;;;;;;;;;;;;:10;:94::i;:::-;8493:88;8560:6;8519:14;:35;;;-1:-1:-1;;;;;8504:52:130;:62;8493:88;;;;;;;;;;;;;-1:-1:-1;;;8493:88:130;;;:10;:88::i;:::-;7449:1139;;;;;7405:1183::o;3360:151:72:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;7024:375:130:-;7067:30;:28;:30::i;:::-;7108:58;;-1:-1:-1;;;7108:58:130;;-1:-1:-1;;;7108:58:130;;;17674:52:134;-1:-1:-1;;;;;;;;;;;7108:15:130;;;17647:18:134;;7108:58:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7185:2:130;;7176:12;;-1:-1:-1;;;7176:12:130;;-1:-1:-1;;;;;7185:2:130;;;7176:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;7176:8:130;-1:-1:-1;7176:8:130;;-1:-1:-1;6114:18:134;;7176:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7225:3:130;;7256:4;;;7225:37;;-1:-1:-1;;;7225:37:130;;-1:-1:-1;;;;;7256:4:130;;;7225:37;;;6141:51:134;7198:24:130;;-1:-1:-1;7225:3:130;;;-1:-1:-1;7225:22:130;;6114:18:134;7225:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7225:37:130;;;;;;;;;;;;:::i;:::-;7198:64;-1:-1:-1;;;;;;;;;;;;7273:7:130;7281:31;:15;7300:11;7281:31;:::i;:::-;7273:40;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;7273:40:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7332:2:130;;7323:12;;-1:-1:-1;;;7323:12:130;;-1:-1:-1;;;;;7332:2:130;;;7323:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;7323:8:130;-1:-1:-1;7323:8:130;;-1:-1:-1;6114:18:134;;7323:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7355:3:130;;7386:4;;;7355:37;;-1:-1:-1;;;7355:37:130;;-1:-1:-1;;;;;7386:4:130;;;7355:37;;;6141:51:134;7355:3:130;;;-1:-1:-1;7355:22:130;;-1:-1:-1;6114:18:134;7355:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7355:37:130;;;;;;;;;;;;:::i;2738:178:72:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5362:672:130;-1:-1:-1;;;;;;;;;;;5420:7:130;5428:26;:15;5446:8;5428:26;:::i;:::-;5420:35;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;5420:35:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5465:30;:28;:30::i;:::-;5534:3;;5560:4;;;5534:32;;-1:-1:-1;;;5534:32:130;;-1:-1:-1;;;;;5560:4:130;;;5534:32;;;6141:51:134;5505:26:130;;5534:3;;;;;:17;;6114:18:134;5534:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5586:2;;5577:12;;-1:-1:-1;;;5577:12:130;;-1:-1:-1;;;;;5586:2:130;;;5577:12;;;6141:51:134;5505:61:130;;-1:-1:-1;;;;;;;;;;;;5577:8:130;;;6114:18:134;;5577:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5622:3:130;;5659:4;;;5622:43;;-1:-1:-1;;;5622:43:130;;-1:-1:-1;;;;;5659:4:130;;;5622:43;;;6141:51:134;5599:20:130;;-1:-1:-1;5622:3:130;;;-1:-1:-1;5622:28:130;;6114:18:134;5622:43:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5684:2;;5675:12;;-1:-1:-1;;;5675:12:130;;-1:-1:-1;;;;;5684:2:130;;;5675:12;;;6141:51:134;5599:66:130;;-1:-1:-1;;;;;;;;;;;;5675:8:130;;;6114:18:134;;5675:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5697:3:130;;5728:4;;;5697:37;;-1:-1:-1;;;5697:37:130;;-1:-1:-1;;;;;5728:4:130;;;5697:37;;;6141:51:134;5697:3:130;;;-1:-1:-1;5697:22:130;;-1:-1:-1;6114:18:134;5697:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5697:37:130;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5772:3:130;;5798:4;;;5772:32;;-1:-1:-1;;;5772:32:130;;-1:-1:-1;;;;;5798:4:130;;;5772:32;;;6141:51:134;5745:24:130;;5772:3;;;;;:17;;6114:18:134;5772:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5745:59;;5850:6;:8;;;5830:28;;:6;:17;;;:28;;;;:::i;:::-;-1:-1:-1;;;;;5815:43:130;;;5869:62;5896:15;5880:12;:31;;5869:62;;;;;;;;;;;;;-1:-1:-1;;;5869:62:130;;;:10;:62::i;:::-;5941:86;5990:8;:10;;;5968:32;;:8;:19;;;:32;;;;:::i;:::-;-1:-1:-1;;;;;5952:48:130;:12;:48;;5941:86;;;;;;;;;;;;;-1:-1:-1;;;5941:86:130;;;:10;:86::i;2211:1343::-;2276:14;;;2288:1;2276:14;;;;;;;;;2253:20;;2276:14;;;;;;;;;;;;;;;;;-1:-1:-1;;2325:15:130;;;2338:1;2325:15;;;;;;;;2253:37;;-1:-1:-1;2300:22:130;;2325:15;;;;;;;;;;;;-1:-1:-1;;2362:67:130;;-1:-1:-1;;;2362:67:130;;;18049:46:134;2300:40:130;;-1:-1:-1;18111:11:134;;2362:67:130;;;;;;;;;;;;2351:5;2357:1;2351:8;;;;;;;;:::i;:::-;;;;;;:78;;;;2473:42;;;2450:87;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;2450:87:130;;;;;;;-1:-1:-1;;;;;2450:87:130;;;;;;;;;;;2439:5;2445:1;2439:8;;;;;;;;:::i;:::-;;;;;;:98;;;;2560:1;2548:6;2555:1;2548:9;;;;;;;;:::i;:::-;;;;;;:13;;;;;;;;;;;2583:1;2571:6;2578:1;2571:9;;;;;;;;:::i;:::-;:13;;;;;:9;;;;;;;;;;;:13;2595:52;;-1:-1:-1;;;2595:52:130;;-1:-1:-1;;;2595:52:130;;;17674::134;-1:-1:-1;;;;;;;;;;;2595:15:130;;;17647:18:134;;2595:52:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2657:3:130;;2691:17;;2657:68;;-1:-1:-1;;;2657:68:130;;-1:-1:-1;;;;;2657:3:130;;;;-1:-1:-1;2657:25:130;;-1:-1:-1;2657:68:130;;2691:17;;;;2711:5;;2718:6;;2657:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2745:5:130;;2736:15;;-1:-1:-1;;;2736:15:130;;-1:-1:-1;;;;;2745:5:130;;;2736:15;;;6141:51:134;-1:-1:-1;;;;;;;;;;;2736:8:130;-1:-1:-1;2736:8:130;;-1:-1:-1;6114:18:134;;2736:15:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2761:3:130;;2795:17;;2761:68;;-1:-1:-1;;;2761:68:130;;-1:-1:-1;;;;;2761:3:130;;;;-1:-1:-1;2761:25:130;;-1:-1:-1;2761:68:130;;2795:17;;;;2815:5;;2822:6;;2761:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2840:17;;;;;;;;;-1:-1:-1;;;;;2840:17:130;-1:-1:-1;;;;;2840:24:130;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2876:29;:27;:29::i;:::-;2915:17;;;;;;;;;-1:-1:-1;;;;;2915:17:130;-1:-1:-1;;;;;2915:24:130;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2981:3:130;;3004:2;;3016:4;;;2981:41;;-1:-1:-1;;;2981:41:130;;-1:-1:-1;;;;;3004:2:130;;;2981:41;;;20135:34:134;3016:4:130;;;20185:18:134;;;20178:43;;;;2952:26:130;;2981:3;;;;;:22;;20070:18:134;;2981:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3042:2;;3033:12;;-1:-1:-1;;;3033:12:130;;-1:-1:-1;;;;;3042:2:130;;;3033:12;;;6141:51:134;2952:70:130;;-1:-1:-1;;;;;;;;;;;;3033:8:130;;;6114:18:134;;3033:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3055:17;;;;;;;;;-1:-1:-1;;;;;3055:17:130;-1:-1:-1;;;;;3055:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3137:3:130;;3160:2;;3172:4;;;3137:41;;-1:-1:-1;;;3137:41:130;;-1:-1:-1;;;;;3160:2:130;;;3137:41;;;20135:34:134;3172:4:130;;;20185:18:134;;;20178:43;;;;3108:26:130;;3137:3;;;;;:22;;20070:18:134;;3137:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3108:70;;3188:41;3208:1;3199:3;:6;;;-1:-1:-1;;;;;3199:10:130;;3188:41;;;;;;;;;;;;;-1:-1:-1;;;3188:41:130;;;:10;:41::i;:::-;3239:47;3259:3;:6;;;-1:-1:-1;;;;;3250:15:130;:3;:6;;;-1:-1:-1;;;;;3250:15:130;;3239:47;;;;;;;;;;;;;-1:-1:-1;;;3239:47:130;;;:10;:47::i;:::-;3306:2;;3297:12;;-1:-1:-1;;;3297:12:130;;-1:-1:-1;;;;;3306:2:130;;;3297:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;3297:8:130;;;6114:18:134;;3297:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3319:17:130;;:54;;-1:-1:-1;;;3319:54:130;;-1:-1:-1;;;;;3319:17:130;;;;-1:-1:-1;3319:33:130;;-1:-1:-1;3319:54:130;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3412:3:130;;3435:2;;3447:4;;;3412:41;;-1:-1:-1;;;3412:41:130;;-1:-1:-1;;;;;3435:2:130;;;3412:41;;;20135:34:134;3447:4:130;;;20185:18:134;;;20178:43;;;;3383:26:130;;3412:3;;;;;:22;;20070:18:134;;3412:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3383:70;;3463:55;3484:1;3474:3;:6;;;-1:-1:-1;;;;;3474:11:130;;;3463:55;;;;;;;;;;;;;;;;;:10;:55::i;:::-;3528:19;3540:3;:6;;;-1:-1:-1;;;;;3528:19:130;:11;:19::i;11216:2469::-;11267:27;:25;:27::i;:::-;11317:1;11329:818;11341:3;11337:1;:7;11329:818;;;11361:29;;-1:-1:-1;;;11361:29:130;;-1:-1:-1;;;;;6159:32:134;;11361:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;11361:8:130;;;6114:18:134;;11361:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11409:1;11405;:5;;;;:::i;:::-;:10;11404:146;;11496:17;;:54;;-1:-1:-1;;;11496:54:130;;-1:-1:-1;;;;;11496:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11404:146;;;11435:17;;;;;;;;;-1:-1:-1;;;;;11435:17:130;-1:-1:-1;;;;;11435:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11566:5:130;11570:1;11566;:5;:::i;:::-;:10;11565:146;;11657:17;;:54;;-1:-1:-1;;;11657:54:130;;-1:-1:-1;;;;;11657:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11565:146;;;11596:17;;;;;;;;;-1:-1:-1;;;;;11596:17:130;-1:-1:-1;;;;;11596:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11727:5:130;11731:1;11727;:5;:::i;:::-;:10;11726:146;;11818:17;;:54;;-1:-1:-1;;;11818:54:130;;-1:-1:-1;;;;;11818:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11726:146;;;11757:17;;;;;;;;;-1:-1:-1;;;;;11757:17:130;-1:-1:-1;;;;;11757:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11888:5:130;11892:1;11888;:5;:::i;:::-;:10;11887:146;;11979:17;;:54;;-1:-1:-1;;;11979:54:130;;-1:-1:-1;;;;;11979:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11887:146;;;11918:17;;;;;;;;;-1:-1:-1;;;;;11918:17:130;-1:-1:-1;;;;;11918:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;12048:7:130;12056:19;:15;12074:1;12056:19;:::i;:::-;12048:28;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;12048:28:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:3;;;;;11329:818;;;-1:-1:-1;;;;;;;;;;;12156:7:130;12164:25;:15;12182:7;12164:25;:::i;:::-;12156:34;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;12156:34:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12210:2:130;;12201:12;;-1:-1:-1;;;12201:12:130;;-1:-1:-1;;;;;12210:2:130;;;12201:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;12201:8:130;-1:-1:-1;12201:8:130;;-1:-1:-1;6114:18:134;;12201:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12223:3:130;;12254:4;;;12223:37;;-1:-1:-1;;;12223:37:130;;-1:-1:-1;;;;;12254:4:130;;;12223:37;;;6141:51:134;12223:3:130;;;-1:-1:-1;12223:22:130;;-1:-1:-1;6114:18:134;12223:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12223:37:130;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12306:3:130;;12342:4;;;12306:42;;-1:-1:-1;;;12306:42:130;;-1:-1:-1;;;;;12342:4:130;;;12306:42;;;6141:51:134;12271:32:130;;12306:3;;;;;:27;;6114:18:134;12306:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12271:77;;12358:42;12370:14;:29;;;-1:-1:-1;;;;;12358:42:130;:11;:42::i;:::-;12432:29;;;;12476:1;;-1:-1:-1;12488:821:130;12500:3;12496:1;:7;12488:821;;;12520:29;;-1:-1:-1;;;12520:29:130;;-1:-1:-1;;;;;6159:32:134;;12520:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;12520:8:130;;;6114:18:134;;12520:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12568:1;12564;:5;;;;:::i;:::-;:10;12563:146;;12655:17;;:54;;-1:-1:-1;;;12655:54:130;;-1:-1:-1;;;;;12655:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12563:146;;;12594:17;;;;;;;;;-1:-1:-1;;;;;12594:17:130;-1:-1:-1;;;;;12594:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12727:5:130;12731:1;12727;:5;:::i;:::-;12736:1;12727:10;12724:149;;12819:17;;:54;;-1:-1:-1;;;12819:54:130;;-1:-1:-1;;;;;12819:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12724:149;;;12758:17;;;;;;;;;-1:-1:-1;;;;;12758:17:130;-1:-1:-1;;;;;12758:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12889:5:130;12893:1;12889;:5;:::i;:::-;:10;12888:146;;12980:17;;:54;;-1:-1:-1;;;12980:54:130;;-1:-1:-1;;;;;12980:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12888:146;;;12919:17;;;;;;;;;-1:-1:-1;;;;;12919:17:130;-1:-1:-1;;;;;12919:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13050:5:130;13054:1;13050;:5;:::i;:::-;:10;13049:146;;13141:17;;:54;;-1:-1:-1;;;13141:54:130;;-1:-1:-1;;;;;13141:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13049:146;;;13080:17;;;;;;;;;-1:-1:-1;;;;;13080:17:130;-1:-1:-1;;;;;13080:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;13210:7:130;13218:19;:15;13236:1;13218:19;:::i;:::-;13210:28;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;13210:28:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13281:3;;;;;12488:821;;;-1:-1:-1;;;;;;;;;;;13318:7:130;13326:25;:15;13344:7;13326:25;:::i;:::-;13318:34;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;13318:34:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13372:2:130;;13363:12;;-1:-1:-1;;;13363:12:130;;-1:-1:-1;;;;;13372:2:130;;;13363:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;13363:8:130;-1:-1:-1;13363:8:130;;-1:-1:-1;6114:18:134;;13363:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:3:130;;13416:4;;;13385:37;;-1:-1:-1;;;13385:37:130;;-1:-1:-1;;;;;13416:4:130;;;13385:37;;;6141:51:134;13385:3:130;;;-1:-1:-1;13385:22:130;;-1:-1:-1;6114:18:134;13385:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:37:130;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13450:3:130;;13486:4;;;13450:42;;-1:-1:-1;;;13450:42:130;;-1:-1:-1;;;;;13486:4:130;;;13450:42;;;6141:51:134;13450:3:130;;;:27;;6114:18:134;13450:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13433:59;;13502:42;13514:14;:29;;;-1:-1:-1;;;;;13502:42:130;:11;:42::i;:::-;13554:19;13576:14;:29;;;13554:51;;13616:62;13643:12;-1:-1:-1;;;;;13627:28:130;:12;-1:-1:-1;;;;;13627:28:130;;;13616:62;;;;;;;;;;;;;-1:-1:-1;;;13616:62:130;;;:10;:62::i;:::-;11257:2428;;;;11216:2469::o;2592:140:72:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;10688:51:134;;;-1:-1:-1;;;10755:18:134;;;10748:34;2196:43:65;;;;;;;;;10661:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;4058:1298:130:-;4235:14;;;4247:1;4235:14;;;;;;;;;4136:1;;4167;;4200;;4115:18;;4235:14;;;;;;;;;;;;;;;;;;-1:-1:-1;;4284:15:130;;;4297:1;4284:15;;;;;;;;4212:37;;-1:-1:-1;4259:22:130;;4284:15;;;;;;;;;;;;-1:-1:-1;;4321:67:130;;-1:-1:-1;;;4321:67:130;;;18049:46:134;4259:40:130;;-1:-1:-1;18111:11:134;;4321:67:130;;;;;;;;;;;;4310:5;4316:1;4310:8;;;;;;;;:::i;:::-;;;;;;:78;;;;4432:42;;;4409:87;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;4409:87:130;;;;;;;-1:-1:-1;;;;;4409:87:130;;;;;;;;;;;4398:5;4404:1;4398:8;;;;;;;;:::i;:::-;;;;;;:98;;;;4519:10;4507:6;4514:1;4507:9;;;;;;;;:::i;:::-;;;;;;:22;;;;;;;;;;;4551:12;4539:6;4546:1;4539:9;;;;;;;;:::i;:::-;:24;;;;;:9;;;;;;;;;;;:24;4583:5;;4574:15;;-1:-1:-1;;;4574:15:130;;-1:-1:-1;;;;;4583:5:130;;;4574:15;;;6141:51:134;-1:-1:-1;;;;;;;;;;;4574:8:130;;;6114:18:134;;4574:15:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4599:3:130;;4633:17;;4599:68;;-1:-1:-1;;;4599:68:130;;-1:-1:-1;;;;;4599:3:130;;;;-1:-1:-1;4599:25:130;;-1:-1:-1;4599:68:130;;4633:17;;;;4653:5;;4660:6;;4599:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4690:1:130;;-1:-1:-1;;;4701:546:130;4713:3;4709:1;:7;4701:546;;;4733:29;;-1:-1:-1;;;4733:29:130;;-1:-1:-1;;;;;6159:32:134;;4733:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;4733:8:130;;;6114:18:134;;4733:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4776:3:130;;4785:14;;-1:-1:-1;;;4785:14:130;;;;;6893:25:134;;;-1:-1:-1;;;;;4776:3:130;;;;-1:-1:-1;4776:8:130;;-1:-1:-1;;;;;;;;;;;;4785:11:130;;;6866:18:134;;4785:14:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4785:14:130;;;;;;;;;;;;:::i;:::-;4824:4;;4776:54;;-1:-1:-1;;;;;;4776:54:130;;;;;;;;;;4810:1;;4813;;-1:-1:-1;;;;;4824:4:130;;4776:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;4845:7:130;-1:-1:-1;4845:7:130;;-1:-1:-1;4853:19:130;;-1:-1:-1;4853:15:130;4871:1;4853:19;:::i;:::-;4845:28;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;4845:28:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4888:29:130;;-1:-1:-1;;;4888:29:130;;-1:-1:-1;;;;;6159:32:134;;4888:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;4888:8:130;-1:-1:-1;4888:8:130;;-1:-1:-1;6114:18:134;;4888:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4936:1;4932;:5;;;;:::i;:::-;:10;4931:146;;5023:17;;:54;;-1:-1:-1;;;5023:54:130;;-1:-1:-1;;;;;5023:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4931:146;;;4962:17;;;;;;;;;-1:-1:-1;;;;;4962:17:130;-1:-1:-1;;;;;4962:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;5092:7:130;5100:19;:15;5118:1;5100:19;:::i;:::-;5092:28;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;5092:28:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5195:3:130;;5230:4;;;5195:41;;-1:-1:-1;;;5195:41:130;;-1:-1:-1;;;;;5230:4:130;;;5195:41;;;6141:51:134;5163:3:130;;;;;;5195;;;-1:-1:-1;5195:26:130;;-1:-1:-1;6114:18:134;5195:41:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5195:41:130;;;;;;;;;;;;:::i;:::-;;4701:546;;;5267:3;;5293:4;;;5267:32;;-1:-1:-1;;;5267:32:130;;-1:-1:-1;;;;;5293:4:130;;;5267:32;;;6141:51:134;5256:93:130;;5313:1;;5267:3;;;:17;;6114:18:134;5267:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;-1:-1:-1;;;;;5267:47:130;;5256:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;4105:1251;;;;;;4058:1298::o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1758:447:130:-;1828:2;;1814:17;;-1:-1:-1;;;1814:17:130;;-1:-1:-1;;;;;1828:2:130;;;1814:17;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1814:13:130;;;6114:18:134;;1814:17:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:15;1859:17;;;;;;;;;-1:-1:-1;;;;;1859:17:130;-1:-1:-1;;;;;1859:24:130;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1895:17;;:37;;-1:-1:-1;;;1895:37:130;;23715:2:134;1895:37:130;;;23697:21:134;-1:-1:-1;23734:18:134;;;23727:29;1841:44:130;;-1:-1:-1;;;;;;1895:17:130;;:33;;23773:18:134;;1895:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1960:17:130;;:26;;;-1:-1:-1;;;1960:26:130;;;;1942:15;;-1:-1:-1;;;;;1960:17:130;;:24;;:26;;;;;;;;;;;;;;:17;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1996:17;;:54;;-1:-1:-1;;;1996:54:130;;1942:44;;-1:-1:-1;;;;;;1996:17:130;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2078:17:130;;:26;;;-1:-1:-1;;;2078:26:130;;;;2060:15;;-1:-1:-1;;;;;2078:17:130;;:24;;:26;;;;;;;;;;;;;;:17;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2060:44;-1:-1:-1;2114:59:130;2060:44;2125:17;2135:7;2125;:17;:::i;:::-;:28;2114:59;;;;;;;;;;;;;-1:-1:-1;;;2114:59:130;;;:10;:59::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;2184:12:130;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804:401;;;1758:447::o;6040:978::-;6126:55;;-1:-1:-1;;;6126:55:130;;-1:-1:-1;;;6126:55:130;;;17674:52:134;6113:1:130;;-1:-1:-1;;;;;;;;;;;6126:15:130;;;17647:18:134;;6126:55:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6211:3:130;;6247:4;;;6211:42;;-1:-1:-1;;;6211:42:130;;-1:-1:-1;;;;;20153:15:134;;;6211:42:130;;;20135:34:134;6247:4:130;;;20185:18:134;;;20178:43;;;;6191:17:130;;-1:-1:-1;6211:3:130;;;;-1:-1:-1;6211:22:130;;20070:18:134;;6211:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6264:56;;-1:-1:-1;;;6264:56:130;;-1:-1:-1;;;6264:56:130;;;17674:52:134;6191:62:130;;-1:-1:-1;;;;;;;;;;;;6264:15:130;;;17647:18:134;;6264:56:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6339:2:130;;6330:12;;-1:-1:-1;;;6330:12:130;;-1:-1:-1;;;;;6339:2:130;;;6330:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;6330:8:130;-1:-1:-1;6330:8:130;;-1:-1:-1;6114:18:134;;6330:12:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6364:3:130;;6400:4;;;6364:42;;-1:-1:-1;;;6364:42:130;;-1:-1:-1;;;;;20153:15:134;;;6364:42:130;;;20135:34:134;6400:4:130;;;20185:18:134;;;20178:43;;;;6364:3:130;;;;-1:-1:-1;6364:22:130;;-1:-1:-1;20070:18:134;;6364:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6352:54;;6417;6428:9;6441:1;6428:14;6417:54;;;;;;;;;;;;;;;;;:10;:54::i;:::-;6481:30;:28;:30::i;:::-;-1:-1:-1;;;;;;;;;;;6522:7:130;6530:25;:15;6548:7;6530:25;:::i;:::-;6522:34;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;6522:34:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6580:2:130;;6566:17;;-1:-1:-1;;;6566:17:130;;-1:-1:-1;;;;;6580:2:130;;;6566:17;;;6141:51:134;-1:-1:-1;;;;;;;;;;;6566:13:130;-1:-1:-1;6566:13:130;;-1:-1:-1;6114:18:134;;6566:17:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6612:3:130;;6648:4;;;6612:42;;-1:-1:-1;;;6612:42:130;;-1:-1:-1;;;;;20153:15:134;;;6612:42:130;;;20135:34:134;6648:4:130;;;20185:18:134;;;20178:43;;;;6593:16:130;;-1:-1:-1;6612:3:130;;;;-1:-1:-1;6612:22:130;;20070:18:134;;6612:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6593:61;;6664:39;6686:1;6675:8;:12;6664:39;;;;;;;;;;;;;-1:-1:-1;;;6664:39:130;;;:10;:39::i;:::-;6737:3;;6774:4;;;6737:43;;-1:-1:-1;;;6737:43:130;;-1:-1:-1;;;;;6774:4:130;;;6737:43;;;6141:51:134;6714:20:130;;6737:3;;;;;:28;;6114:18:134;6737:43:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6714:66;-1:-1:-1;;;;;;;;;;;;6791:7:130;6799:16;6714:66;6814:1;6799:16;:::i;:::-;6791:25;;;;;;;;;;;;;6893::134;;6881:2;6866:18;;6747:177;6791:25:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6826:3:130;;6863:4;;;6826:43;;-1:-1:-1;;;6826:43:130;;-1:-1:-1;;;;;6863:4:130;;;6826:43;;;6141:51:134;6826:3:130;;;-1:-1:-1;6826:28:130;;-1:-1:-1;6114:18:134;6826:43:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6891:3:130;;6927:4;;;6891:42;;-1:-1:-1;;;6891:42:130;;-1:-1:-1;;;;;20153:15:134;;;6891:42:130;;;20135:34:134;6927:4:130;;;20185:18:134;;;20178:43;;;;6891:3:130;;;;:22;;20070:18:134;;6891:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6880:53;;6943:44;6965:1;6954:8;:12;6943:44;;;;;;;;;;;;;-1:-1:-1;;;6943:44:130;;;:10;:44::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;6997:12:130;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6081:937;;;;6040:978::o;9871:1339::-;9918:20;:18;:20::i;:::-;9976:3;;10008:4;;;9976:38;;-1:-1:-1;;;9976:38:130;;-1:-1:-1;;;;;10008:4:130;;;9976:38;;;6141:51:134;9949:24:130;;9976:3;;;;;:23;;6114:18:134;9976:38:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9976:38:130;;;;;;;;;;;;:::i;:::-;9949:65;-1:-1:-1;10037:1:130;10049:337;10061:7;:14;10057:1;:18;10049:337;;;10096:5;10100:1;10096;:5;:::i;:::-;10105:1;10096:10;10092:224;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;10126:8:130;;10135:7;10143:1;10135:10;;;;;;;;:::i;:::-;;;;;;;10126:20;;;;;;;;;;;;;;-1:-1:-1;;;;;6159:32:134;;;;6141:51;;6129:2;6114:18;;5995:203;10126:20:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10164:17:130;;:54;;-1:-1:-1;;;10164:54:130;;-1:-1:-1;;;;;10164:17:130;;;;-1:-1:-1;10164:33:130;;-1:-1:-1;10164:54:130;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;10236:8:130;;10245:7;10253:1;10245:10;;;;;;;;:::i;:::-;;;;;;;10236:20;;;;;;;;;;;;;;-1:-1:-1;;;;;6159:32:134;;;;6141:51;;6129:2;6114:18;;5995:203;10236:20:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10274:3:130;;10295:4;;;10274:27;;-1:-1:-1;;;10274:27:130;;-1:-1:-1;;;;;10295:4:130;;;10274:27;;;6141:51:134;10274:3:130;;;-1:-1:-1;10274:12:130;;-1:-1:-1;6114:18:134;10274:27:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10092:224;10358:3;;10049:337;;;-1:-1:-1;;;;;;;;;;;10396:7:130;10404:25;:15;10422:7;10404:25;:::i;:::-;10396:34;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;10396:34:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10450:5:130;;10441:15;;-1:-1:-1;;;10441:15:130;;-1:-1:-1;;;;;10450:5:130;;;10441:15;;;6141:51:134;-1:-1:-1;;;;;;;;;;;10441:8:130;-1:-1:-1;10441:8:130;;-1:-1:-1;6114:18:134;;10441:15:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10466:3:130;;10497:4;;;10466:37;;-1:-1:-1;;;10466:37:130;;-1:-1:-1;;;;;10497:4:130;;;10466:37;;;6141:51:134;10466:3:130;;;-1:-1:-1;10466:22:130;;-1:-1:-1;6114:18:134;10466:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10466:37:130;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10548:3:130;;10589:4;;;10548:47;;-1:-1:-1;;;10548:47:130;;-1:-1:-1;;;;;10589:4:130;;;10548:47;;;6141:51:134;10515:14:130;;;;10548:3;;;:32;;6114:18:134;10548:47:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10640:3;;10676:4;;;10640:42;;-1:-1:-1;;;10640:42:130;;-1:-1:-1;;;;;10676:4:130;;;10640:42;;;6141:51:134;10514:81:130;;-1:-1:-1;10514:81:130;;-1:-1:-1;10605:32:130;;10640:3;;;;;:27;;6114:18:134;10640:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10724:3;;10756:4;;;10724:38;;-1:-1:-1;;;10724:38:130;;-1:-1:-1;;;;;10756:4:130;;;10724:38;;;6141:51:134;10605:77:130;;-1:-1:-1;10693:28:130;;10724:3;;;:23;;6114:18:134;10724:38:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10724:38:130;;;;;;;;;;;;:::i;:::-;10693:69;;10773:82;10816:1;10784:14;:29;;;:33;;;10773:82;;;;;;;;;;;;;;;;;:10;:82::i;:::-;10865:81;10893:11;:18;10876:7;:14;:35;10865:81;;;;;;;;;;;;;;;;;:10;:81::i;:::-;11049:29;;11029:14;;10993:18;;10956:161;;10980:98;;;:65;;;:::i;:::-;:98;;;10956:161;;;;;;;;;;;;;-1:-1:-1;;;10956:161:130;;;:10;:161::i;:::-;11128:75;11171:1;11139:14;:29;;;-1:-1:-1;;;;;11139:33:130;;11128:75;;;;;;;;;;;;;;;;;:10;:75::i;8594:1271::-;8641:16;:14;:16::i;:::-;8706:3;;8742:4;;;8706:42;;-1:-1:-1;;;8706:42:130;;-1:-1:-1;;;;;8742:4:130;;;8706:42;;;6141:51:134;8667:36:130;;8706:3;;;;;:27;;6114:18:134;8706:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8667:81;-1:-1:-1;8771:16:130;8797:420;8809:16;8805:1;:20;8797:420;;;8842:29;;-1:-1:-1;;;8842:29:130;;-1:-1:-1;;;;;6159:32:134;;8842:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;8842:8:130;;;6114:18:134;;8842:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8885:3:130;;8894:14;;-1:-1:-1;;;8894:14:130;;;;;6893:25:134;;;-1:-1:-1;;;;;8885:3:130;;;;-1:-1:-1;8885:8:130;;-1:-1:-1;;;;;;;;;;;;8894:11:130;;;6866:18:134;;8894:14:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8894:14:130;;;;;;;;;;;;:::i;:::-;8936:4;;8885:57;;-1:-1:-1;;;;;;8885:57:130;;;;;;;;;;8922:1;;8925;;-1:-1:-1;;;;;8936:4:130;;8885:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8957:29:130;;-1:-1:-1;;;8957:29:130;;-1:-1:-1;;;;;6159:32:134;;8957:29:130;;;6141:51:134;-1:-1:-1;;;;;;;;;;;8957:8:130;-1:-1:-1;8957:8:130;;-1:-1:-1;6114:18:134;;8957:29:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9005:1;9001;:5;;;;:::i;:::-;:10;9000:146;;9092:17;;:54;;-1:-1:-1;;;9092:54:130;;-1:-1:-1;;;;;9092:17:130;;;;:33;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9000:146;;;9031:17;;;;;;;;;-1:-1:-1;;;;;9031:17:130;-1:-1:-1;;;;;9031:40:130;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9189:3:130;;8797:420;;;-1:-1:-1;;;;;;;;;;;9227:7:130;9235:25;:15;9253:7;9235:25;:::i;:::-;9227:34;;;;;;;;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;9227:34:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9280:5:130;;9271:15;;-1:-1:-1;;;9271:15:130;;-1:-1:-1;;;;;9280:5:130;;;9271:15;;;6141:51:134;-1:-1:-1;;;;;;;;;;;9271:8:130;-1:-1:-1;9271:8:130;;-1:-1:-1;6114:18:134;;9271:15:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9296:3:130;;9327:4;;;9296:37;;-1:-1:-1;;;9296:37:130;;-1:-1:-1;;;;;9327:4:130;;;9296:37;;;6141:51:134;9296:3:130;;;-1:-1:-1;9296:22:130;;-1:-1:-1;6114:18:134;9296:37:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9296:37:130;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9377:3:130;;9418:4;;;9377:47;;-1:-1:-1;;;9377:47:130;;-1:-1:-1;;;;;9418:4:130;;;9377:47;;;6141:51:134;9344:14:130;;;;9377:3;;;:32;;6114:18:134;9377:47:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9469:3;;9505:4;;;9469:42;;-1:-1:-1;;;9469:42:130;;-1:-1:-1;;;;;9505:4:130;;;9469:42;;;6141:51:134;9343:81:130;;-1:-1:-1;9343:81:130;;-1:-1:-1;9434:32:130;;9469:3;;;;;:27;;6114:18:134;9469:42:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9434:77;;9522:65;9565:3;9533:14;:29;;;:35;;;9522:65;;;;;;;;;;;;;-1:-1:-1;;;9522:65:130;;;:10;:65::i;:::-;9597:45;9612:14;:29;;;9597:45;;:14;:45::i;:::-;9652:41;9664:14;:28;;;-1:-1:-1;;;;;9652:41:130;:11;:41::i;:::-;9703:67;9745:3;9714:14;:28;;;-1:-1:-1;;;;;9714:34:130;;9703:67;;;;;;;;;;;;;-1:-1:-1;;;9703:67:130;;;:10;:67::i;:::-;9780:78;9829:1;9791:14;:35;;;-1:-1:-1;;;;;9791:39:130;;9780:78;;;;;;;;;;;;;;;;;3425:191:65;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;25435:51:134;;;;25502:18;;;25495:30;25561:1;25541:18;;;25534:29;-1:-1:-1;;;25579:18:134;;;25572:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;25627:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;25869:51:134;;;;25936:18;;;25929:30;25995:1;25975:18;;;25968:29;-1:-1:-1;;;26013:18:134;;;26006:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;26061:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;26303:51:134;;;;26370:18;;;26363:30;26429:1;26409:18;;;26402:29;-1:-1:-1;;;26447:18:134;;;26440:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;26495:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;26737:51:134;26804:18;;;26797:30;26863:2;26843:18;;;26836:30;-1:-1:-1;;;26882:18:134;;;26875:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;26934:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;6114:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;27176:51:134;;;;27243:18;;;27236:30;27302:2;27282:18;;;27275:30;-1:-1:-1;;;27321:18:134;;;27314:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;27371:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;27613:51:134;;;;27680:18;;;27673:30;27739:1;27719:18;;;27712:29;-1:-1:-1;;;27757:18:134;;;27750:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;27806:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;6141:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;6114:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;28048:51:134;;;;28115:18;;;28108:30;28174:1;28154:18;;;28147:29;-1:-1:-1;;;28192:18:134;;;28185:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;28238:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;28480:51:134;;;;28547:18;;;28540:30;28606:2;28586:18;;;28579:30;-1:-1:-1;;;28625:18:134;;;28618:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;28675:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;28917:51:134;;;;28984:18;;;28977:30;29043:2;29023:18;;;29016:30;-1:-1:-1;;;29062:18:134;;;29055:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;29117:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;29359:51:134;;;;29426:18;;;29419:30;29485:2;29465:18;;;29458:30;-1:-1:-1;;;29504:18:134;;;29497:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;29559:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;6141:51:134;;;;2573:3:127;;;;:22;;6114:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;29876:15:134;;;29858:34;;29928:15;;;29923:2;29908:18;;29901:43;29980:15;;;29975:2;29960:18;;29953:43;30032:15;;;30027:2;30012:18;;30005:43;29807:3;29792:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;30271:51:134;;;;30338:18;;;30331:30;30397:2;30377:18;;;30370:30;-1:-1:-1;;;30416:18:134;;;30409:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;30469:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;30755:25:134;;;30816:2;30796:18;;;30789:30;30855:2;30835:18;;;30828:30;-1:-1:-1;;;30874:19:134;;;30867:42;30961:18;;;30954:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;30926:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;676:107:68;754:22;766:4;765:5;772:3;754:10;:22::i;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;31201:2:134;31183:21;;;31240:2;31220:18;;;31213:30;31279:25;31274:2;31259:18;;31252:53;31337:2;31322:18;;30999:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;5514:110:80:-;5560:57;5613:2;5576:40;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;5576:40:80;;;;-1:-1:-1;;5576:40:80;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:40:80;-1:-1:-1;;;5576:40:80;;;5560:15;:57::i;664:111::-;712:56;764:2;728:39;;;;;;6893:25:134;;6881:2;6866:18;;6747:177;728:39:80;;;;-1:-1:-1;;728:39:80;;;;;;;;;;;;;;-1:-1:-1;;;;;728:39:80;-1:-1:-1;;;728:39:80;;;712:15;:56::i;2409:432:65:-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;31733:51:134;;;-1:-1:-1;;;31800:18:134;;;31793:34;;;;2712:4:65;31843:18:134;;;31836:34;2489:11:65;;1671:64;2586:43;;31706:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;181:376:80:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:461:134:-;67:3;105:5;99:12;132:6;127:3;120:19;158:4;187:2;182:3;178:12;171:19;;224:2;217:5;213:14;245:1;255:195;269:6;266:1;263:13;255:195;;;334:13;;-1:-1:-1;;;;;330:39:134;318:52;;390:12;;;;425:15;;;;366:1;284:9;255:195;;;-1:-1:-1;466:3:134;;14:461;-1:-1:-1;;;;;14:461:134:o;480:261::-;659:2;648:9;641:21;622:4;679:56;731:2;720:9;716:18;708:6;679:56;:::i;:::-;671:64;480:261;-1:-1:-1;;;480:261:134:o;746:250::-;831:1;841:113;855:6;852:1;849:13;841:113;;;931:11;;;925:18;912:11;;;905:39;877:2;870:10;841:113;;;-1:-1:-1;;988:1:134;970:16;;963:27;746:250::o;1001:271::-;1043:3;1081:5;1075:12;1108:6;1103:3;1096:19;1124:76;1193:6;1186:4;1181:3;1177:14;1170:4;1163:5;1159:16;1124:76;:::i;:::-;1254:2;1233:15;-1:-1:-1;;1229:29:134;1220:39;;;;1261:4;1216:50;;1001:271;-1:-1:-1;;1001:271:134:o;1277:1744::-;1512:2;1564:21;;;1634:13;;1537:18;;;1656:22;;;1483:4;;1512:2;1697;;1715:18;;;;1752:1;1795:15;;;1780:31;;1776:40;;1839:15;;;1483:4;;1903:1089;1919:6;1914:3;1911:15;1903:1089;;;-1:-1:-1;;1988:22:134;;;1984:36;1972:49;;2044:13;;2131:9;;-1:-1:-1;;;;;2127:35:134;2112:51;;2202:11;;2196:18;2234:15;;;2227:27;;;2315:19;;2084:15;;;2347:24;;;2528:21;;;;2394:2;2476:17;;;2464:30;;2460:39;;;2418:15;;;;2573:1;2587:296;2603:8;2598:3;2595:17;2587:296;;;2709:2;2705:7;2696:6;2688;2684:19;2680:33;2673:5;2666:48;2741:42;2776:6;2765:8;2759:15;2741:42;:::i;:::-;2812:17;;;;2731:52;-1:-1:-1;2855:14:134;;;;2631:1;2622:11;2587:296;;;-1:-1:-1;;;2970:12:134;;;;2906:6;-1:-1:-1;;2935:15:134;;;;1945:1;1936:11;1903:1089;;;-1:-1:-1;3009:6:134;;1277:1744;-1:-1:-1;;;;;;;;;;1277:1744:134:o;3026:1569::-;3230:4;3259:2;3299;3288:9;3284:18;3329:2;3318:9;3311:21;3352:6;3387;3381:13;3418:6;3410;3403:22;3444:2;3434:12;;3477:2;3466:9;3462:18;3455:25;;3539:2;3529:6;3526:1;3522:14;3511:9;3507:30;3503:39;3577:2;3569:6;3565:15;3598:1;3619;3629:937;3645:6;3640:3;3637:15;3629:937;;;3714:22;;;-1:-1:-1;;3710:36:134;3698:49;;3770:13;;3857:9;;-1:-1:-1;;;;;3853:35:134;3838:51;;3928:11;;3922:18;3960:15;;;3953:27;;;4041:19;;3810:15;;;4073:24;;;4163:21;;;;4208:1;;4131:2;4119:15;;;4222:236;4238:8;4233:3;4230:17;4222:236;;;4319:15;;-1:-1:-1;;;;;;4315:42:134;4301:57;;4427:17;;;;4266:1;4257:11;;;;;4384:14;;;;4222:236;;;-1:-1:-1;4544:12:134;;;;4481:5;-1:-1:-1;;;4509:15:134;;;;3671:1;3662:11;3629:937;;;-1:-1:-1;4583:6:134;;3026:1569;-1:-1:-1;;;;;;;;;3026:1569:134:o;4600:803::-;4762:4;4791:2;4831;4820:9;4816:18;4861:2;4850:9;4843:21;4884:6;4919;4913:13;4950:6;4942;4935:22;4988:2;4977:9;4973:18;4966:25;;5050:2;5040:6;5037:1;5033:14;5022:9;5018:30;5014:39;5000:53;;5088:2;5080:6;5076:15;5109:1;5119:255;5133:6;5130:1;5127:13;5119:255;;;5226:2;5222:7;5210:9;5202:6;5198:22;5194:36;5189:3;5182:49;5254:40;5287:6;5278;5272:13;5254:40;:::i;:::-;5244:50;-1:-1:-1;5352:12:134;;;;5317:15;;;;5155:1;5148:9;5119:255;;;-1:-1:-1;5391:6:134;;4600:803;-1:-1:-1;;;;;;;4600:803:134:o;5600:177::-;5679:13;;-1:-1:-1;;;;;5721:31:134;;5711:42;;5701:70;;5767:1;5764;5757:12;5782:208;5852:6;5905:2;5893:9;5884:7;5880:23;5876:32;5873:52;;;5921:1;5918;5911:12;5873:52;5944:40;5974:9;5944:40;:::i;6203:277::-;6270:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;6371:9;6365:16;6424:5;6417:13;6410:21;6403:5;6400:32;6390:60;;6446:1;6443;6436:12;6485:127;6546:10;6541:3;6537:20;6534:1;6527:31;6577:4;6574:1;6567:15;6601:4;6598:1;6591:15;6617:125;6682:9;;;6703:10;;;6700:36;;;6716:18;;:::i;:::-;6617:125;;;;:::o;7963:763::-;8366:3;8355:9;8348:22;8407:1;8401:3;8390:9;8386:19;8379:30;-1:-1:-1;;;8440:3:134;8429:9;8425:19;8418:37;8493:3;8486:4;8475:9;8471:20;8464:33;8329:4;8514:50;8559:3;8548:9;8544:19;7882:1;7870:14;;-1:-1:-1;;;7909:4:134;7900:14;;7893:31;7949:2;7940:12;;7805:153;8514:50;8595:2;8580:18;;8573:34;;;;-1:-1:-1;8638:2:134;8623:18;;8616:34;;;;-1:-1:-1;;;;;8687:32:134;8681:3;8666:19;;;8659:61;8506:58;7963:763::o;9175:1145::-;9586:1;9582;9577:3;9573:11;9569:19;9561:6;9557:32;9546:9;9539:51;9520:4;9609:2;9647:3;9642:2;9631:9;9627:18;9620:31;9688:2;9682:3;9671:9;9667:19;9660:31;9728:26;9722:3;9711:9;9707:19;9700:55;9790:3;9779:9;9775:19;9830:6;9825:2;9814:9;9810:18;9803:34;9887:6;9880:14;9873:22;9868:2;9857:9;9853:18;9846:50;9933:3;9927;9916:9;9912:19;9905:32;9957:3;9989:6;9983:13;10017:6;10012:3;10005:19;10055:3;10044:9;10040:19;10033:26;;10094:2;10086:6;10082:15;10068:29;;10115:1;10125:169;10139:6;10136:1;10133:13;10125:169;;;10200:13;;10188:26;;10269:15;;;;10234:12;;;;10161:1;10154:9;10125:169;;;-1:-1:-1;10311:3:134;;9175:1145;-1:-1:-1;;;;;;;;;9175:1145:134:o;10325:184::-;10395:6;10448:2;10436:9;10427:7;10423:23;10419:32;10416:52;;;10464:1;10461;10454:12;10416:52;-1:-1:-1;10487:16:134;;10325:184;-1:-1:-1;10325:184:134:o;10793:127::-;10854:10;10849:3;10845:20;10842:1;10835:31;10885:4;10882:1;10875:15;10909:4;10906:1;10899:15;10925:255;10997:2;10991:9;11039:6;11027:19;;-1:-1:-1;;;;;11061:34:134;;11097:22;;;11058:62;11055:88;;;11123:18;;:::i;:::-;11159:2;11152:22;10925:255;:::o;11185:275::-;11256:2;11250:9;11321:2;11302:13;;-1:-1:-1;;11298:27:134;11286:40;;-1:-1:-1;;;;;11341:34:134;;11377:22;;;11338:62;11335:88;;;11403:18;;:::i;:::-;11439:2;11432:22;11185:275;;-1:-1:-1;11185:275:134:o;11465:175::-;11543:13;;-1:-1:-1;;;;;11585:30:134;;11575:41;;11565:69;;11630:1;11627;11620:12;11645:163;11723:13;;11776:6;11765:18;;11755:29;;11745:57;;11798:1;11795;11788:12;11813:160;11890:13;;11943:4;11932:16;;11922:27;;11912:55;;11963:1;11960;11953:12;11978:167;12056:13;;12109:10;12098:22;;12088:33;;12078:61;;12135:1;12132;12125:12;12150:164;12227:13;;12280:1;12269:20;;;12259:31;;12249:59;;12304:1;12301;12294:12;12319:764;12387:5;12435:4;12423:9;12418:3;12414:19;12410:30;12407:50;;;12453:1;12450;12443:12;12407:50;12486:2;12480:9;12528:4;12520:6;12516:17;12599:6;12587:10;12584:22;-1:-1:-1;;;;;12551:10:134;12548:34;12545:62;12542:88;;;12610:18;;:::i;:::-;12646:2;12639:22;12679:6;-1:-1:-1;12679:6:134;12709:38;12737:9;12709:38;:::i;:::-;12701:6;12694:54;12781:47;12824:2;12813:9;12809:18;12781:47;:::i;:::-;12776:2;12768:6;12764:15;12757:72;12862:48;12906:2;12895:9;12891:18;12862:48;:::i;:::-;12857:2;12849:6;12845:15;12838:73;12944:48;12988:2;12977:9;12973:18;12944:48;:::i;:::-;12939:2;12931:6;12927:15;12920:73;13027:49;13071:3;13060:9;13056:19;13027:49;:::i;:::-;13021:3;13013:6;13009:16;13002:75;;12319:764;;;;:::o;13088:1062::-;13186:6;13239:3;13227:9;13218:7;13214:23;13210:33;13207:53;;;13256:1;13253;13246:12;13207:53;13282:22;;:::i;:::-;13327:39;13356:9;13327:39;:::i;:::-;13320:5;13313:54;13399:48;13443:2;13432:9;13428:18;13399:48;:::i;:::-;13394:2;13387:5;13383:14;13376:72;13480:48;13524:2;13513:9;13509:18;13480:48;:::i;:::-;13475:2;13468:5;13464:14;13457:72;13561:48;13605:2;13594:9;13590:18;13561:48;:::i;:::-;13556:2;13549:5;13545:14;13538:72;13643:48;13686:3;13675:9;13671:19;13643:48;:::i;:::-;13637:3;13630:5;13626:15;13619:73;13725:48;13768:3;13757:9;13753:19;13725:48;:::i;:::-;13719:3;13712:5;13708:15;13701:73;13807:49;13851:3;13840:9;13836:19;13807:49;:::i;:::-;13801:3;13794:5;13790:15;13783:74;13911:3;13900:9;13896:19;13890:26;13884:3;13877:5;13873:15;13866:51;13936:3;13992:2;13981:9;13977:18;13971:25;13966:2;13959:5;13955:14;13948:49;;14016:3;14051:68;14111:7;14106:2;14095:9;14091:18;14051:68;:::i;:::-;14035:14;;;14028:92;14039:5;13088:1062;-1:-1:-1;;;13088:1062:134:o;14155:183::-;14215:4;-1:-1:-1;;;;;14240:6:134;14237:30;14234:56;;;14270:18;;:::i;:::-;-1:-1:-1;14315:1:134;14311:14;14327:4;14307:25;;14155:183::o;14343:905::-;14438:6;14469:2;14512;14500:9;14491:7;14487:23;14483:32;14480:52;;;14528:1;14525;14518:12;14480:52;14561:9;14555:16;-1:-1:-1;;;;;14586:6:134;14583:30;14580:50;;;14626:1;14623;14616:12;14580:50;14649:22;;14702:4;14694:13;;14690:27;-1:-1:-1;14680:55:134;;14731:1;14728;14721:12;14680:55;14760:2;14754:9;14783:60;14799:43;14839:2;14799:43;:::i;:::-;14783:60;:::i;:::-;14877:15;;;14959:1;14955:10;;;;14947:19;;14943:28;;;14908:12;;;;14983:19;;;14980:39;;;15015:1;15012;15005:12;14980:39;15039:11;;;;15059:159;15075:6;15070:3;15067:15;15059:159;;;15141:34;15171:3;15141:34;:::i;:::-;15129:47;;15092:12;;;;15196;;;;15059:159;;;15237:5;14343:905;-1:-1:-1;;;;;;;14343:905:134:o;15253:245::-;15332:6;15340;15393:2;15381:9;15372:7;15368:23;15364:32;15361:52;;;15409:1;15406;15399:12;15361:52;-1:-1:-1;;15432:16:134;;15488:2;15473:18;;;15467:25;15432:16;;15467:25;;-1:-1:-1;15253:245:134:o;15503:358::-;15710:2;15699:9;15692:21;15673:4;15730:56;15782:2;15771:9;15767:18;15759:6;15730:56;:::i;:::-;15722:64;;15851:1;15847;15842:3;15838:11;15834:19;15826:6;15822:32;15817:2;15806:9;15802:18;15795:60;15503:358;;;;;:::o;15866:881::-;15961:6;15992:2;16035;16023:9;16014:7;16010:23;16006:32;16003:52;;;16051:1;16048;16041:12;16003:52;16084:9;16078:16;-1:-1:-1;;;;;16109:6:134;16106:30;16103:50;;;16149:1;16146;16139:12;16103:50;16172:22;;16225:4;16217:13;;16213:27;-1:-1:-1;16203:55:134;;16254:1;16251;16244:12;16203:55;16283:2;16277:9;16306:60;16322:43;16362:2;16322:43;:::i;16306:60::-;16400:15;;;16482:1;16478:10;;;;16470:19;;16466:28;;;16431:12;;;;16506:19;;;16503:39;;;16538:1;16535;16528:12;16503:39;16562:11;;;;16582:135;16598:6;16593:3;16590:15;16582:135;;;16664:10;;16652:23;;16615:12;;;;16695;;;;16582:135;;16752:127;16813:10;16808:3;16804:20;16801:1;16794:31;16844:4;16841:1;16834:15;16868:4;16865:1;16858:15;16884:256;16982:6;17035:3;17023:9;17014:7;17010:23;17006:33;17003:53;;;17052:1;17049;17042:12;17003:53;17075:59;17126:7;17115:9;17075:59;:::i;17145:380::-;17224:1;17220:12;;;;17267;;;17288:61;;17342:4;17334:6;17330:17;17320:27;;17288:61;17395:2;17387:6;17384:14;17364:18;17361:38;17358:161;;17441:10;17436:3;17432:20;17429:1;17422:31;17476:4;17473:1;17466:15;17504:4;17501:1;17494:15;17358:161;;17145:380;;;:::o;17737:180::-;-1:-1:-1;;;;;17842:10:134;;;17854;;;17838:27;;17877:11;;;17874:37;;;17891:18;;:::i;:::-;17874:37;17737:180;;;;:::o;18133:341::-;18335:2;18317:21;;;18374:2;18354:18;;;18347:30;-1:-1:-1;;;18408:2:134;18393:18;;18386:47;18465:2;18450:18;;18133:341::o;18479:1439::-;18743:4;18791:2;18780:9;18776:18;18850:1;18846;18841:3;18837:11;18833:19;18825:6;18821:32;18810:9;18803:51;18873:2;18911;18906;18895:9;18891:18;18884:30;18934:6;18969;18963:13;19000:6;18992;18985:22;19038:3;19027:9;19023:19;19016:26;;19101:3;19091:6;19088:1;19084:14;19073:9;19069:30;19065:40;19051:54;;19140:2;19132:6;19128:15;19161:1;19171:256;19185:6;19182:1;19179:13;19171:256;;;19278:3;19274:8;19262:9;19254:6;19250:22;19246:37;19241:3;19234:50;19307:40;19340:6;19331;19325:13;19307:40;:::i;:::-;19297:50;-1:-1:-1;19405:12:134;;;;19370:15;;;;19207:1;19200:9;19171:256;;;-1:-1:-1;;;;19463:22:134;;;19458:2;19443:18;;19436:50;19539:13;;19561:24;;;19643:15;;;;19603;;;19678:1;19688:202;19704:8;19699:3;19696:17;19688:202;;;19777:15;;19794:6;19773:28;19759:43;;19863:17;;;;19824:14;;;;19732:1;19723:11;19688:202;;;-1:-1:-1;19907:5:134;;18479:1439;-1:-1:-1;;;;;;;;18479:1439:134:o;20232:675::-;20335:6;20388:3;20376:9;20367:7;20363:23;20359:33;20356:53;;;20405:1;20402;20395:12;20356:53;20438:2;20432:9;20480:3;20472:6;20468:16;20550:6;20538:10;20535:22;-1:-1:-1;;;;;20502:10:134;20499:34;20496:62;20493:88;;;20561:18;;:::i;:::-;20597:2;20590:22;20636:39;20665:9;20636:39;:::i;:::-;20628:6;20621:55;20709:48;20753:2;20742:9;20738:18;20709:48;:::i;:::-;20704:2;20696:6;20692:15;20685:73;20812:2;20801:9;20797:18;20791:25;20786:2;20778:6;20774:15;20767:50;20871:2;20860:9;20856:18;20850:25;20845:2;20837:6;20833:15;20826:50;20895:6;20885:16;;;20232:675;;;;:::o;20912:209::-;20944:1;20970;20960:132;;21014:10;21009:3;21005:20;21002:1;20995:31;21049:4;21046:1;21039:15;21077:4;21074:1;21067:15;20960:132;-1:-1:-1;21106:9:134;;20912:209::o;21405:384::-;-1:-1:-1;;;;;;21590:33:134;;21578:46;;21647:13;;21560:3;;21669:74;21647:13;21732:1;21723:11;;21716:4;21704:17;;21669:74;:::i;:::-;21763:16;;;;21781:1;21759:24;;21405:384;-1:-1:-1;;;21405:384:134:o;21794:287::-;21923:3;21961:6;21955:13;21977:66;22036:6;22031:3;22024:4;22016:6;22012:17;21977:66;:::i;:::-;22059:16;;;;;21794:287;-1:-1:-1;;21794:287:134:o;22086:719::-;22166:6;22219:2;22207:9;22198:7;22194:23;22190:32;22187:52;;;22235:1;22232;22225:12;22187:52;22268:9;22262:16;-1:-1:-1;;;;;22338:2:134;22330:6;22327:14;22324:34;;;22354:1;22351;22344:12;22324:34;22392:6;22381:9;22377:22;22367:32;;22437:7;22430:4;22426:2;22422:13;22418:27;22408:55;;22459:1;22456;22449:12;22408:55;22488:2;22482:9;22510:2;22506;22503:10;22500:36;;;22516:18;;:::i;:::-;22558:53;22601:2;22582:13;;-1:-1:-1;;22578:27:134;22607:2;22574:36;22558:53;:::i;:::-;22545:66;;22634:2;22627:5;22620:17;22674:7;22669:2;22664;22660;22656:11;22652:20;22649:33;22646:53;;;22695:1;22692;22685:12;22646:53;22708:67;22772:2;22767;22760:5;22756:14;22751:2;22747;22743:11;22708:67;:::i;:::-;-1:-1:-1;22794:5:134;22086:719;-1:-1:-1;;;;22086:719:134:o;22810:698::-;23160:3;23149:9;23142:22;23123:4;23187:46;23228:3;23217:9;23213:19;23205:6;23187:46;:::i;:::-;23281:9;23273:6;23269:22;23264:2;23253:9;23249:18;23242:50;23309:37;23339:6;7882:1;7870:14;;-1:-1:-1;;;7909:4:134;7900:14;;7893:31;7949:2;7940:12;;7805:153;23309:37;23377:2;23362:18;;23355:34;;;;-1:-1:-1;;23420:2:134;23405:18;;23398:34;;;;-1:-1:-1;;;;;23469:32:134;23463:3;23448:19;;;23441:61;23301:45;22810:698;-1:-1:-1;22810:698:134:o;23802:214::-;23900:1;23889:16;;;23871;;;;23867:39;-1:-1:-1;;23921:34:134;;23967:18;23957:29;;23918:69;23915:95;;;23990:18;;:::i;24021:746::-;24371:3;24360:9;24353:22;24334:4;24398:46;24439:3;24428:9;24424:19;24416:6;24398:46;:::i;:::-;24492:9;24484:6;24480:22;24475:2;24464:9;24460:18;24453:50;24527:1;24519:6;24512:17;-1:-1:-1;;;24557:2:134;24549:6;24545:15;24538:35;24602:2;24594:6;24590:15;24582:23;;;24641:6;24636:2;24625:9;24621:18;24614:34;24684:6;24679:2;24668:9;24664:18;24657:34;24757:1;24753;24748:3;24744:11;24740:19;24732:6;24728:32;24722:3;24711:9;24707:19;24700:61;24021:746;;;;;;;:::o;24772:446::-;25022:2;25011:9;25004:21;25061:1;25056:2;25045:9;25041:18;25034:29;-1:-1:-1;;;25094:2:134;25083:9;25079:18;25072:35;25145:3;25138:4;25127:9;25123:20;25116:33;24985:4;25166:46;25207:3;25196:9;25192:19;25184:6;25166:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -671,7 +671,7 @@ "testperiodTypeDataUpdates()": "209a06a5", "testperiodTypeUpd2()": "fabeb260" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGroupInitDefault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIndividualLRUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMembershipDiff\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPerformanceChanges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPeriodFlip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSimpleGroupPeriodicUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnconfiguredInteraction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithSameCommitmentPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testperiodTypeDataUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testperiodTypeUpd2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SampleInteractionPlugin.t.sol\":\"TestSampleInteractionPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/SampleInteractionPlugin.t.sol\":{\"keccak256\":\"0xb32c88fa2e04b7e0286469272b5fbff37e1d1d9b45c6d4244823850d9c5359d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d9060b5f7698c33656ef0f7c3fe0e7c20ac29b6e562ba718d9af6267cdabe07\",\"dweb:/ipfs/QmWsuasUrLjukoWXR9auBpshyx3362RNSMmCa2wC3kULYD\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGroupInitDefault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIndividualLRUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMembershipDiff\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPerformanceChanges\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPeriodFlip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSimpleGroupPeriodicUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnconfiguredInteraction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithSameCommitmentPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testperiodTypeDataUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testperiodTypeUpd2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SampleInteractionPlugin.t.sol\":\"TestSampleInteractionPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/SampleInteractionPlugin.t.sol\":{\"keccak256\":\"0xb32c88fa2e04b7e0286469272b5fbff37e1d1d9b45c6d4244823850d9c5359d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d9060b5f7698c33656ef0f7c3fe0e7c20ac29b6e562ba718d9af6267cdabe07\",\"dweb:/ipfs/QmWsuasUrLjukoWXR9auBpshyx3362RNSMmCa2wC3kULYD\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1374,6 +1374,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1438,6 +1446,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1551,10 +1567,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -2091,10 +2107,10 @@ }, "ast": { "absolutePath": "test/SampleInteractionPlugin.t.sol", - "id": 73212, + "id": 73998, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "ILocalReputation": [ 1423 @@ -2103,13 +2119,13 @@ 2915 ], "SampleInteractionPlugin": [ - 7122 + 7873 ], "TestSampleInteractionPlugin": [ - 73211 + 73997 ], "console": [ - 32435 + 33186 ], "groupState": [ 1229 @@ -2122,12 +2138,12 @@ ] }, "nodeType": "SourceUnit", - "src": "31:13657:117", + "src": "31:13657:130", "nodes": [ { - "id": 71360, + "id": 72146, "nodeType": "PragmaDirective", - "src": "31:23:117", + "src": "31:23:130", "nodes": [], "literals": [ "solidity", @@ -2136,24 +2152,24 @@ ] }, { - "id": 71362, + "id": 72148, "nodeType": "ImportDirective", - "src": "56:48:117", + "src": "56:48:130", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 73212, - "sourceUnit": 70241, + "scope": 73998, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 71361, + "id": 72147, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "64:11:117", + "referencedDeclaration": 71026, + "src": "64:11:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2162,24 +2178,24 @@ "unitAlias": "" }, { - "id": 71364, + "id": 72150, "nodeType": "ImportDirective", - "src": "106:65:117", + "src": "106:65:130", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 73212, + "scope": 73998, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 71363, + "id": 72149, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "114:15:117", + "src": "114:15:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2188,37 +2204,37 @@ "unitAlias": "" }, { - "id": 71365, + "id": 72151, "nodeType": "ImportDirective", - "src": "172:43:117", + "src": "172:43:130", "nodes": [], "absolutePath": "contracts/ILocalReputation.sol", "file": "../contracts/ILocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 73212, + "scope": 73998, "sourceUnit": 1424, "symbolAliases": [], "unitAlias": "" }, { - "id": 71367, + "id": 72153, "nodeType": "ImportDirective", - "src": "216:102:117", + "src": "216:102:130", "nodes": [], "absolutePath": "contracts/plugins/interactions/SampleInteractionPlugin.sol", "file": "../contracts/plugins/interactions/SampleInteractionPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 73212, - "sourceUnit": 7123, + "scope": 73998, + "sourceUnit": 7874, "symbolAliases": [ { "foreign": { - "id": 71366, + "id": 72152, "name": "SampleInteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7122, - "src": "224:23:117", + "referencedDeclaration": 7873, + "src": "224:23:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2227,33 +2243,33 @@ "unitAlias": "" }, { - "id": 71368, + "id": 72154, "nodeType": "ImportDirective", - "src": "320:31:117", + "src": "320:31:130", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 73212, - "sourceUnit": 32436, + "scope": 73998, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 73211, + "id": 73997, "nodeType": "ContractDefinition", - "src": "353:13334:117", + "src": "353:13334:130", "nodes": [ { - "id": 71373, + "id": 72159, "nodeType": "VariableDeclaration", - "src": "411:28:117", + "src": "411:28:130", "nodes": [], "constant": false, "mutability": "mutable", "name": "LocalRepAlgo", - "nameLocation": "427:12:117", - "scope": 73211, + "nameLocation": "427:12:130", + "scope": 73997, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2261,20 +2277,20 @@ "typeString": "contract LocalReputation" }, "typeName": { - "id": 71372, + "id": 72158, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71371, + "id": 72157, "name": "LocalReputation", "nameLocations": [ - "411:15:117" + "411:15:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "411:15:117" + "src": "411:15:130" }, "referencedDeclaration": 2915, - "src": "411:15:117", + "src": "411:15:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2283,53 +2299,53 @@ "visibility": "internal" }, { - "id": 71376, + "id": 72162, "nodeType": "VariableDeclaration", - "src": "445:41:117", + "src": "445:41:130", "nodes": [], "constant": false, "mutability": "mutable", "name": "InteractionPlugin", - "nameLocation": "469:17:117", - "scope": 73211, + "nameLocation": "469:17:130", + "scope": 73997, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 71375, + "id": 72161, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71374, + "id": 72160, "name": "SampleInteractionPlugin", "nameLocations": [ - "445:23:117" + "445:23:130" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "445:23:117" + "referencedDeclaration": 7873, + "src": "445:23:130" }, - "referencedDeclaration": 7122, - "src": "445:23:117", + "referencedDeclaration": 7873, + "src": "445:23:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 71378, + "id": 72164, "nodeType": "VariableDeclaration", - "src": "493:20:117", + "src": "493:20:130", "nodes": [], "constant": false, "mutability": "mutable", "name": "taskPluginId", - "nameLocation": "501:12:117", - "scope": 73211, + "nameLocation": "501:12:130", + "scope": 73997, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2337,10 +2353,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71377, + "id": 72163, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "493:7:117", + "src": "493:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2349,15 +2365,15 @@ "visibility": "internal" }, { - "id": 71380, + "id": 72166, "nodeType": "VariableDeclaration", - "src": "519:13:117", + "src": "519:13:130", "nodes": [], "constant": false, "mutability": "mutable", "name": "Admin", - "nameLocation": "527:5:117", - "scope": 73211, + "nameLocation": "527:5:130", + "scope": 73997, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2365,10 +2381,10 @@ "typeString": "address" }, "typeName": { - "id": 71379, + "id": 72165, "name": "address", "nodeType": "ElementaryTypeName", - "src": "519:7:117", + "src": "519:7:130", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2378,30 +2394,30 @@ "visibility": "internal" }, { - "id": 71573, + "id": 72359, "nodeType": "FunctionDefinition", - "src": "539:1213:117", + "src": "539:1213:130", "nodes": [], "body": { - "id": 71572, + "id": 72358, "nodeType": "Block", - "src": "572:1180:117", + "src": "572:1180:130", "nodes": [], "statements": [ { "assignments": [ - 71385 + 72171 ], "declarations": [ { "constant": false, - "id": 71385, + "id": 72171, "mutability": "mutable", "name": "time0", - "nameLocation": "590:5:117", + "nameLocation": "590:5:130", "nodeType": "VariableDeclaration", - "scope": 71572, - "src": "582:13:117", + "scope": 72358, + "src": "582:13:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2409,10 +2425,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71384, + "id": 72170, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "582:7:117", + "src": "582:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2421,40 +2437,40 @@ "visibility": "internal" } ], - "id": 71394, + "id": 72180, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71389, + "id": 72175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71386, + "id": 72172, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "598:5:117", + "src": "598:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 71387, + "id": 72173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "604:9:117", + "memberLocation": "604:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "598:15:117", + "src": "598:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2464,21 +2480,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 71388, + "id": 72174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "617:1:117", + "src": "617:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "598:20:117", + "src": "598:20:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2486,48 +2502,48 @@ }, "falseExpression": { "expression": { - "id": 71391, + "id": 72177, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "634:5:117", + "src": "634:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 71392, + "id": 72178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "640:9:117", + "memberLocation": "640:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "634:15:117", + "src": "634:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71393, + "id": 72179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "598:51:117", + "src": "598:51:130", "trueExpression": { "hexValue": "31363939393939393939", - "id": 71390, + "id": 72176, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "621:10:117", + "src": "621:10:130", "typeDescriptions": { "typeIdentifier": "t_rational_1699999999_by_1", "typeString": "int_const 1699999999" @@ -2540,7 +2556,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "582:67:117" + "src": "582:67:130" }, { "expression": { @@ -2550,18 +2566,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71400, + "id": 72186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 71398, + "id": 72184, "name": "time0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71385, - "src": "667:5:117", + "referencedDeclaration": 72171, + "src": "667:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2571,21 +2587,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 71399, + "id": 72185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "675:1:117", + "src": "675:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "667:9:117", + "src": "667:9:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2600,33 +2616,33 @@ } ], "expression": { - "id": 71395, + "id": 72181, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "659:2:117", + "referencedDeclaration": 13541, + "src": "659:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71397, + "id": 72183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "662:4:117", + "memberLocation": "662:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "659:7:117", + "referencedDeclaration": 24657, + "src": "659:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 71401, + "id": 72187, "isConstant": false, "isLValue": false, "isPure": false, @@ -2635,16 +2651,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "659:18:117", + "src": "659:18:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71402, + "id": 72188, "nodeType": "ExpressionStatement", - "src": "659:18:117" + "src": "659:18:130" }, { "expression": { @@ -2652,33 +2668,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71403, + "id": 72189, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "688:5:117", + "src": "688:5:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_TestSampleInteractionPlugin_$73211_$", + "typeIdentifier": "t_type$_t_super$_TestSampleInteractionPlugin_$73997_$", "typeString": "type(contract super TestSampleInteractionPlugin)" } }, - "id": 71405, + "id": 72191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "694:5:117", + "memberLocation": "694:5:130", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "688:11:117", + "referencedDeclaration": 70929, + "src": "688:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 71406, + "id": 72192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2687,31 +2703,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "688:13:117", + "src": "688:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71407, + "id": 72193, "nodeType": "ExpressionStatement", - "src": "688:13:117" + "src": "688:13:130" }, { "expression": { - "id": 71413, + "id": 72199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71408, + "id": 72194, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71373, - "src": "712:12:117", + "referencedDeclaration": 72159, + "src": "712:12:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2723,39 +2739,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 71411, + "id": 72197, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "727:19:117", + "src": "727:19:130", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LocalReputation_$2915_$", "typeString": "function () returns (contract LocalReputation)" }, "typeName": { - "id": 71410, + "id": 72196, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71409, + "id": 72195, "name": "LocalReputation", "nameLocations": [ - "731:15:117" + "731:15:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "731:15:117" + "src": "731:15:130" }, "referencedDeclaration": 2915, - "src": "731:15:117", + "src": "731:15:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } } }, - "id": 71412, + "id": 72198, "isConstant": false, "isLValue": false, "isPure": false, @@ -2764,22 +2780,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "727:21:117", + "src": "727:21:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "src": "712:36:117", + "src": "712:36:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 71414, + "id": 72200, "nodeType": "ExpressionStatement", - "src": "712:36:117" + "src": "712:36:130" }, { "expression": { @@ -2787,12 +2803,12 @@ { "arguments": [ { - "id": 71420, + "id": 72206, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71373, - "src": "775:12:117", + "referencedDeclaration": 72159, + "src": "775:12:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2806,26 +2822,26 @@ "typeString": "contract LocalReputation" } ], - "id": 71419, + "id": 72205, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "767:7:117", + "src": "767:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71418, + "id": 72204, "name": "address", "nodeType": "ElementaryTypeName", - "src": "767:7:117", + "src": "767:7:130", "typeDescriptions": {} } }, - "id": 71421, + "id": 72207, "isConstant": false, "isLValue": false, "isPure": false, @@ -2834,7 +2850,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "767:21:117", + "src": "767:21:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2843,14 +2859,14 @@ }, { "hexValue": "4c6f63616c526570", - "id": 71422, + "id": 72208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "790:10:117", + "src": "790:10:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_74a11e5e5ccd92d929e0c2fad99603e46f36685fdae0c11877d61c7e6dc67689", "typeString": "literal_string \"LocalRep\"" @@ -2870,33 +2886,33 @@ } ], "expression": { - "id": 71415, + "id": 72201, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "758:2:117", + "referencedDeclaration": 13541, + "src": "758:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71417, + "id": 72203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "761:5:117", + "memberLocation": "761:5:130", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "758:8:117", + "referencedDeclaration": 23909, + "src": "758:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71423, + "id": 72209, "isConstant": false, "isLValue": false, "isPure": false, @@ -2905,16 +2921,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "758:43:117", + "src": "758:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71424, + "id": 72210, "nodeType": "ExpressionStatement", - "src": "758:43:117" + "src": "758:43:130" }, { "expression": { @@ -2924,33 +2940,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71428, + "id": 72214, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "821:3:117", + "referencedDeclaration": 70555, + "src": "821:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71429, + "id": 72215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "825:5:117", + "memberLocation": "825:5:130", "memberName": "owner", "nodeType": "MemberAccess", - "referencedDeclaration": 8822, - "src": "821:9:117", + "referencedDeclaration": 9573, + "src": "821:9:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 71430, + "id": 72216, "isConstant": false, "isLValue": false, "isPure": false, @@ -2959,7 +2975,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "821:11:117", + "src": "821:11:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2975,33 +2991,33 @@ } ], "expression": { - "id": 71425, + "id": 72211, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "812:2:117", + "referencedDeclaration": 13541, + "src": "812:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71427, + "id": 72213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "815:5:117", + "memberLocation": "815:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "812:8:117", + "referencedDeclaration": 24720, + "src": "812:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71431, + "id": 72217, "isConstant": false, "isLValue": false, "isPure": false, @@ -3010,16 +3026,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "812:21:117", + "src": "812:21:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71432, + "id": 72218, "nodeType": "ExpressionStatement", - "src": "812:21:117" + "src": "812:21:130" }, { "expression": { @@ -3027,12 +3043,12 @@ { "arguments": [ { - "id": 71438, + "id": 72224, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71373, - "src": "874:12:117", + "referencedDeclaration": 72159, + "src": "874:12:130", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -3046,26 +3062,26 @@ "typeString": "contract LocalReputation" } ], - "id": 71437, + "id": 72223, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "866:7:117", + "src": "866:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71436, + "id": 72222, "name": "address", "nodeType": "ElementaryTypeName", - "src": "866:7:117", + "src": "866:7:130", "typeDescriptions": {} } }, - "id": 71439, + "id": 72225, "isConstant": false, "isLValue": false, "isPure": false, @@ -3074,7 +3090,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "866:21:117", + "src": "866:21:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3090,33 +3106,33 @@ } ], "expression": { - "id": 71433, + "id": 72219, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "843:3:117", + "referencedDeclaration": 70555, + "src": "843:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71435, + "id": 72221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "847:18:117", + "memberLocation": "847:18:130", "memberName": "setDefaulLRAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8816, - "src": "843:22:117", + "referencedDeclaration": 9567, + "src": "843:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71440, + "id": 72226, "isConstant": false, "isLValue": false, "isPure": false, @@ -3125,31 +3141,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "843:45:117", + "src": "843:45:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71441, + "id": 72227, "nodeType": "ExpressionStatement", - "src": "843:45:117" + "src": "843:45:130" }, { "expression": { - "id": 71448, + "id": 72234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71442, + "id": 72228, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "899:3:117", + "referencedDeclaration": 70567, + "src": "899:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -3164,33 +3180,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71444, + "id": 72230, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "922:3:117", + "referencedDeclaration": 70555, + "src": "922:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71445, + "id": 72231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "926:13:117", + "memberLocation": "926:13:130", "memberName": "defaultLRAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 8810, - "src": "922:17:117", + "referencedDeclaration": 9561, + "src": "922:17:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 71446, + "id": 72232, "isConstant": false, "isLValue": false, "isPure": false, @@ -3199,7 +3215,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "922:19:117", + "src": "922:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3214,18 +3230,18 @@ "typeString": "address" } ], - "id": 71443, + "id": 72229, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "905:16:117", + "src": "905:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 71447, + "id": 72233, "isConstant": false, "isLValue": false, "isPure": false, @@ -3234,22 +3250,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "905:37:117", + "src": "905:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "src": "899:43:117", + "src": "899:43:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71449, + "id": 72235, "nodeType": "ExpressionStatement", - "src": "899:43:117" + "src": "899:43:130" }, { "expression": { @@ -3257,12 +3273,12 @@ { "arguments": [ { - "id": 71455, + "id": 72241, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "969:3:117", + "referencedDeclaration": 70567, + "src": "969:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -3276,26 +3292,26 @@ "typeString": "contract ILocalReputation" } ], - "id": 71454, + "id": 72240, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "961:7:117", + "src": "961:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71453, + "id": 72239, "name": "address", "nodeType": "ElementaryTypeName", - "src": "961:7:117", + "src": "961:7:130", "typeDescriptions": {} } }, - "id": 71456, + "id": 72242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3304,7 +3320,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "961:12:117", + "src": "961:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3313,14 +3329,14 @@ }, { "hexValue": "4c6f63616c52657075746174696f6e", - "id": 71457, + "id": 72243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "975:17:117", + "src": "975:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_98f272edd236549249fc84a1d550d0c5afc01963fb5bd2d449ba3987ce342e91", "typeString": "literal_string \"LocalReputation\"" @@ -3340,33 +3356,33 @@ } ], "expression": { - "id": 71450, + "id": 72236, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "952:2:117", + "referencedDeclaration": 13541, + "src": "952:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71452, + "id": 72238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "955:5:117", + "memberLocation": "955:5:130", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "952:8:117", + "referencedDeclaration": 23909, + "src": "952:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71458, + "id": 72244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3375,27 +3391,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "952:41:117", + "src": "952:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71459, + "id": 72245, "nodeType": "ExpressionStatement", - "src": "952:41:117" + "src": "952:41:130" }, { "expression": { "arguments": [ { - "id": 71463, + "id": 72249, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1013:2:117", + "referencedDeclaration": 70589, + "src": "1013:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3410,33 +3426,33 @@ } ], "expression": { - "id": 71460, + "id": 72246, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1004:2:117", + "referencedDeclaration": 13541, + "src": "1004:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71462, + "id": 72248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1007:5:117", + "memberLocation": "1007:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1004:8:117", + "referencedDeclaration": 24720, + "src": "1004:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71464, + "id": 72250, "isConstant": false, "isLValue": false, "isPure": false, @@ -3445,30 +3461,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1004:12:117", + "src": "1004:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71465, + "id": 72251, "nodeType": "ExpressionStatement", - "src": "1004:12:117" + "src": "1004:12:130" }, { "expression": { "arguments": [ { "hexValue": "61204e616d65", - "id": 71469, + "id": 72255, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1035:8:117", + "src": "1035:8:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ca13575eb32678433fa565f812cf3b015c147a8529ce2b45b72586d4563ad0cb", "typeString": "literal_string \"a Name\"" @@ -3477,14 +3493,14 @@ }, { "hexValue": "75726c6c6c", - "id": 71470, + "id": 72256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1045:7:117", + "src": "1045:7:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -3493,14 +3509,14 @@ }, { "hexValue": "31", - "id": 71471, + "id": 72257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1054:1:117", + "src": "1054:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3509,14 +3525,14 @@ }, { "hexValue": "34", - "id": 71472, + "id": 72258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1057:1:117", + "src": "1057:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -3526,14 +3542,14 @@ { "arguments": [ { - "id": 71475, + "id": 72261, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1068:4:117", + "referencedDeclaration": 70573, + "src": "1068:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3541,30 +3557,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71474, + "id": 72260, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1060:7:117", + "src": "1060:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71473, + "id": 72259, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1060:7:117", + "src": "1060:7:130", "typeDescriptions": {} } }, - "id": 71476, + "id": 72262, "isConstant": false, "isLValue": false, "isPure": false, @@ -3573,7 +3589,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1060:13:117", + "src": "1060:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3605,33 +3621,33 @@ } ], "expression": { - "id": 71466, + "id": 72252, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1026:3:117", + "referencedDeclaration": 70549, + "src": "1026:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 71468, + "id": 72254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1030:4:117", + "memberLocation": "1030:4:130", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1026:8:117", + "src": "1026:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 71477, + "id": 72263, "isConstant": false, "isLValue": false, "isPure": false, @@ -3640,33 +3656,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1026:48:117", + "src": "1026:48:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71478, + "id": 72264, "nodeType": "ExpressionStatement", - "src": "1026:48:117" + "src": "1026:48:130" }, { "expression": { - "id": 71488, + "id": 72274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71479, + "id": 72265, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1085:17:117", + "referencedDeclaration": 72162, + "src": "1085:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, @@ -3677,14 +3693,14 @@ { "arguments": [ { - "id": 71485, + "id": 72271, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1141:4:117", + "referencedDeclaration": 70573, + "src": "1141:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3692,30 +3708,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71484, + "id": 72270, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1133:7:117", + "src": "1133:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71483, + "id": 72269, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1133:7:117", + "src": "1133:7:130", "typeDescriptions": {} } }, - "id": 71486, + "id": 72272, "isConstant": false, "isLValue": false, "isPure": false, @@ -3724,7 +3740,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1133:13:117", + "src": "1133:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3739,39 +3755,39 @@ "typeString": "address" } ], - "id": 71482, + "id": 72268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1105:27:117", + "src": "1105:27:130", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7122_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7873_$", "typeString": "function (address) returns (contract SampleInteractionPlugin)" }, "typeName": { - "id": 71481, + "id": 72267, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71480, + "id": 72266, "name": "SampleInteractionPlugin", "nameLocations": [ - "1109:23:117" + "1109:23:130" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "1109:23:117" + "referencedDeclaration": 7873, + "src": "1109:23:130" }, - "referencedDeclaration": 7122, - "src": "1109:23:117", + "referencedDeclaration": 7873, + "src": "1109:23:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } }, - "id": 71487, + "id": 72273, "isConstant": false, "isLValue": false, "isPure": false, @@ -3780,22 +3796,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1105:43:117", + "src": "1105:43:130", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "src": "1085:63:117", + "src": "1085:63:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71489, + "id": 72275, "nodeType": "ExpressionStatement", - "src": "1085:63:117" + "src": "1085:63:130" }, { "expression": { @@ -3803,14 +3819,14 @@ { "arguments": [ { - "id": 71495, + "id": 72281, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1175:17:117", + "referencedDeclaration": 72162, + "src": "1175:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -3818,30 +3834,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71494, + "id": 72280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1167:7:117", + "src": "1167:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71493, + "id": 72279, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1167:7:117", + "src": "1167:7:130", "typeDescriptions": {} } }, - "id": 71496, + "id": 72282, "isConstant": false, "isLValue": false, "isPure": false, @@ -3850,7 +3866,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1167:26:117", + "src": "1167:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3859,14 +3875,14 @@ }, { "hexValue": "496e746572616374696f6e506c7567696e", - "id": 71497, + "id": 72283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1195:19:117", + "src": "1195:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dde92f28cc84bf7640d9fc65d67dc27e409507d89354a065fc314e10ecdc08c3", "typeString": "literal_string \"InteractionPlugin\"" @@ -3886,33 +3902,33 @@ } ], "expression": { - "id": 71490, + "id": 72276, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1158:2:117", + "referencedDeclaration": 13541, + "src": "1158:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71492, + "id": 72278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1161:5:117", + "memberLocation": "1161:5:130", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1158:8:117", + "referencedDeclaration": 23909, + "src": "1158:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 71498, + "id": 72284, "isConstant": false, "isLValue": false, "isPure": false, @@ -3921,31 +3937,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1158:57:117", + "src": "1158:57:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71499, + "id": 72285, "nodeType": "ExpressionStatement", - "src": "1158:57:117" + "src": "1158:57:130" }, { "assignments": [ - 71504 + 72290 ], "declarations": [ { "constant": false, - "id": 71504, + "id": 72290, "mutability": "mutable", "name": "depmodrek", - "nameLocation": "1243:9:117", + "nameLocation": "1243:9:130", "nodeType": "VariableDeclaration", - "scope": 71572, - "src": "1226:26:117", + "scope": 72358, + "src": "1226:26:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3954,18 +3970,18 @@ }, "typeName": { "baseType": { - "id": 71502, + "id": 72288, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1226:7:117", + "src": "1226:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71503, + "id": 72289, "nodeType": "ArrayTypeName", - "src": "1226:9:117", + "src": "1226:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -3974,20 +3990,20 @@ "visibility": "internal" } ], - "id": 71505, + "id": 72291, "nodeType": "VariableDeclarationStatement", - "src": "1226:26:117" + "src": "1226:26:130" }, { "expression": { "arguments": [ { - "id": 71509, + "id": 72295, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1272:2:117", + "referencedDeclaration": 70587, + "src": "1272:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4002,33 +4018,33 @@ } ], "expression": { - "id": 71506, + "id": 72292, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1263:2:117", + "referencedDeclaration": 13541, + "src": "1263:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71508, + "id": 72294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1266:5:117", + "memberLocation": "1266:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1263:8:117", + "referencedDeclaration": 24720, + "src": "1263:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71510, + "id": 72296, "isConstant": false, "isLValue": false, "isPure": false, @@ -4037,31 +4053,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1263:12:117", + "src": "1263:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71511, + "id": 72297, "nodeType": "ExpressionStatement", - "src": "1263:12:117" + "src": "1263:12:130" }, { "assignments": [ - 71513 + 72299 ], "declarations": [ { "constant": false, - "id": 71513, + "id": 72299, "mutability": "mutable", "name": "pluginDefinitionID", - "nameLocation": "1293:18:117", + "nameLocation": "1293:18:130", "nodeType": "VariableDeclaration", - "scope": 71572, - "src": "1285:26:117", + "scope": 72358, + "src": "1285:26:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4069,10 +4085,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71512, + "id": 72298, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1285:7:117", + "src": "1285:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4081,18 +4097,18 @@ "visibility": "internal" } ], - "id": 71525, + "id": 72311, "initialValue": { "arguments": [ { "arguments": [ { - "id": 71518, + "id": 72304, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1358:2:117", + "referencedDeclaration": 70589, + "src": "1358:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4106,27 +4122,27 @@ "typeString": "address" } ], - "id": 71517, + "id": 72303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1350:8:117", + "src": "1350:8:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 71516, + "id": 72302, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1350:8:117", + "src": "1350:8:130", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 71519, + "id": 72305, "isConstant": false, "isLValue": false, "isPure": false, @@ -4135,7 +4151,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1350:11:117", + "src": "1350:11:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4144,14 +4160,14 @@ }, { "hexValue": "6f776e65722063616e2073706f6f66206d65746164617461", - "id": 71520, + "id": 72306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1363:26:117", + "src": "1363:26:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4c13ebec01b44a9ccdb306618e8038e6656dfd9a7b9226e7b71b62062b044365", "typeString": "literal_string \"owner can spoof metadata\"" @@ -4160,14 +4176,14 @@ }, { "hexValue": "30", - "id": 71521, + "id": 72307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1391:1:117", + "src": "1391:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4176,14 +4192,14 @@ }, { "hexValue": "74727565", - "id": 71522, + "id": 72308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1394:4:117", + "src": "1394:4:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4191,12 +4207,12 @@ "value": "true" }, { - "id": 71523, + "id": 72309, "name": "depmodrek", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71504, - "src": "1400:9:117", + "referencedDeclaration": 72290, + "src": "1400:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4227,33 +4243,33 @@ } ], "expression": { - "id": 71514, + "id": 72300, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1326:3:117", + "referencedDeclaration": 70555, + "src": "1326:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71515, + "id": 72301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1330:19:117", + "memberLocation": "1330:19:130", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1326:23:117", + "referencedDeclaration": 9556, + "src": "1326:23:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 71524, + "id": 72310, "isConstant": false, "isLValue": false, "isPure": false, @@ -4262,7 +4278,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1326:84:117", + "src": "1326:84:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4270,18 +4286,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1285:125:117" + "src": "1285:125:130" }, { "expression": { "arguments": [ { - "id": 71529, + "id": 72315, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1430:2:117", + "referencedDeclaration": 70587, + "src": "1430:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4296,33 +4312,33 @@ } ], "expression": { - "id": 71526, + "id": 72312, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1421:2:117", + "referencedDeclaration": 13541, + "src": "1421:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71528, + "id": 72314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1424:5:117", + "memberLocation": "1424:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1421:8:117", + "referencedDeclaration": 24720, + "src": "1421:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71530, + "id": 72316, "isConstant": false, "isLValue": false, "isPure": false, @@ -4331,16 +4347,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1421:12:117", + "src": "1421:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71531, + "id": 72317, "nodeType": "ExpressionStatement", - "src": "1421:12:117" + "src": "1421:12:130" }, { "expression": { @@ -4348,14 +4364,14 @@ { "arguments": [ { - "id": 71537, + "id": 72323, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1470:17:117", + "referencedDeclaration": 72162, + "src": "1470:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -4363,30 +4379,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71536, + "id": 72322, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1462:7:117", + "src": "1462:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71535, + "id": 72321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1462:7:117", + "src": "1462:7:130", "typeDescriptions": {} } }, - "id": 71538, + "id": 72324, "isConstant": false, "isLValue": false, "isPure": false, @@ -4395,7 +4411,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1462:26:117", + "src": "1462:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4403,12 +4419,12 @@ } }, { - "id": 71539, + "id": 72325, "name": "pluginDefinitionID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71513, - "src": "1490:18:117", + "referencedDeclaration": 72299, + "src": "1490:18:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4427,33 +4443,33 @@ } ], "expression": { - "id": 71532, + "id": 72318, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1443:3:117", + "referencedDeclaration": 70555, + "src": "1443:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71534, + "id": 72320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1447:14:117", + "memberLocation": "1447:14:130", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1443:18:117", + "referencedDeclaration": 9533, + "src": "1443:18:130", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 71540, + "id": 72326, "isConstant": false, "isLValue": false, "isPure": false, @@ -4462,31 +4478,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1443:66:117", + "src": "1443:66:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71541, + "id": 72327, "nodeType": "ExpressionStatement", - "src": "1443:66:117" + "src": "1443:66:130" }, { "expression": { - "id": 71550, + "id": 72336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71542, + "id": 72328, "name": "taskPluginId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71378, - "src": "1520:12:117", + "referencedDeclaration": 72164, + "src": "1520:12:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4499,14 +4515,14 @@ { "arguments": [ { - "id": 71547, + "id": 72333, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1566:17:117", + "referencedDeclaration": 72162, + "src": "1566:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -4514,30 +4530,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71546, + "id": 72332, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1558:7:117", + "src": "1558:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71545, + "id": 72331, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1558:7:117", + "src": "1558:7:130", "typeDescriptions": {} } }, - "id": 71548, + "id": 72334, "isConstant": false, "isLValue": false, "isPure": false, @@ -4546,7 +4562,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1558:26:117", + "src": "1558:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4562,33 +4578,33 @@ } ], "expression": { - "id": 71543, + "id": 72329, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1535:3:117", + "referencedDeclaration": 70555, + "src": "1535:3:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 71544, + "id": 72330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1539:18:117", + "memberLocation": "1539:18:130", "memberName": "tokenIdFromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8789, - "src": "1535:22:117", + "referencedDeclaration": 9540, + "src": "1535:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 71549, + "id": 72335, "isConstant": false, "isLValue": false, "isPure": false, @@ -4597,37 +4613,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1535:50:117", + "src": "1535:50:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1520:65:117", + "src": "1520:65:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71551, + "id": 72337, "nodeType": "ExpressionStatement", - "src": "1520:65:117" + "src": "1520:65:130" }, { "expression": { - "id": 71554, + "id": 72340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 71552, + "id": 72338, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "1596:5:117", + "referencedDeclaration": 72166, + "src": "1596:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4636,26 +4652,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 71553, + "id": 72339, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1604:2:117", + "referencedDeclaration": 70587, + "src": "1604:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1596:10:117", + "src": "1596:10:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 71555, + "id": 72341, "nodeType": "ExpressionStatement", - "src": "1596:10:117" + "src": "1596:10:130" }, { "expression": { @@ -4663,12 +4679,12 @@ { "arguments": [ { - "id": 71559, + "id": 72345, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "1640:5:117", + "referencedDeclaration": 72166, + "src": "1640:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4683,33 +4699,33 @@ } ], "expression": { - "id": 71557, + "id": 72343, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1627:4:117", + "referencedDeclaration": 70573, + "src": "1627:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 71558, + "id": 72344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1632:7:117", + "memberLocation": "1632:7:130", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "1627:12:117", + "referencedDeclaration": 6336, + "src": "1627:12:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 71560, + "id": 72346, "isConstant": false, "isLValue": false, "isPure": false, @@ -4718,7 +4734,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1627:19:117", + "src": "1627:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4727,14 +4743,14 @@ }, { "hexValue": "6578706563746564206465706c6f7965722061646d696e", - "id": 71561, + "id": 72347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1648:25:117", + "src": "1648:25:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fb9300d587932f561bfc732a8909fbd96688e967311865b90ccfeb075e3b849e", "typeString": "literal_string \"expected deployer admin\"" @@ -4753,21 +4769,21 @@ "typeString": "literal_string \"expected deployer admin\"" } ], - "id": 71556, + "id": 72342, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1616:10:117", + "referencedDeclaration": 11481, + "src": "1616:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71562, + "id": 72348, "isConstant": false, "isLValue": false, "isPure": false, @@ -4776,16 +4792,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1616:58:117", + "src": "1616:58:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71563, + "id": 72349, "nodeType": "ExpressionStatement", - "src": "1616:58:117" + "src": "1616:58:130" }, { "expression": { @@ -4793,12 +4809,12 @@ { "arguments": [ { - "id": 71567, + "id": 72353, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "1710:5:117", + "referencedDeclaration": 72166, + "src": "1710:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4813,33 +4829,33 @@ } ], "expression": { - "id": 71565, + "id": 72351, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1696:4:117", + "referencedDeclaration": 70573, + "src": "1696:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 71566, + "id": 72352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1701:8:117", + "memberLocation": "1701:8:130", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "1696:13:117", + "referencedDeclaration": 6323, + "src": "1696:13:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 71568, + "id": 72354, "isConstant": false, "isLValue": false, "isPure": false, @@ -4848,7 +4864,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1696:20:117", + "src": "1696:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4857,14 +4873,14 @@ }, { "hexValue": "6465706c6f7965722061646d696e206973206d656d626572", - "id": 71569, + "id": 72355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:26:117", + "src": "1718:26:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a52a5aafc1b59e7394a885abcbc8acb149c28a24ca9229e3f9bbcc10da4d6003", "typeString": "literal_string \"deployer admin is member\"" @@ -4883,21 +4899,21 @@ "typeString": "literal_string \"deployer admin is member\"" } ], - "id": 71564, + "id": 72350, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1684:11:117", + "referencedDeclaration": 13679, + "src": "1684:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71570, + "id": 72356, "isConstant": false, "isLValue": false, "isPure": false, @@ -4906,72 +4922,72 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1684:61:117", + "src": "1684:61:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71571, + "id": 72357, "nodeType": "ExpressionStatement", - "src": "1684:61:117" + "src": "1684:61:130" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "548:5:117", + "nameLocation": "548:5:130", "overrides": { - "id": 71382, + "id": 72168, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "563:8:117" + "src": "563:8:130" }, "parameters": { - "id": 71381, + "id": 72167, "nodeType": "ParameterList", "parameters": [], - "src": "553:2:117" + "src": "553:2:130" }, "returnParameters": { - "id": 71383, + "id": 72169, "nodeType": "ParameterList", "parameters": [], - "src": "572:0:117" + "src": "572:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71627, + "id": 72413, "nodeType": "FunctionDefinition", - "src": "1758:447:117", + "src": "1758:447:130", "nodes": [], "body": { - "id": 71626, + "id": 72412, "nodeType": "Block", - "src": "1804:401:117", + "src": "1804:401:130", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 71579, + "id": 72365, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1828:2:117", + "referencedDeclaration": 70589, + "src": "1828:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4986,33 +5002,33 @@ } ], "expression": { - "id": 71576, + "id": 72362, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1814:2:117", + "referencedDeclaration": 13541, + "src": "1814:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71578, + "id": 72364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1817:10:117", + "memberLocation": "1817:10:130", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "1814:13:117", + "referencedDeclaration": 24725, + "src": "1814:13:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71580, + "id": 72366, "isConstant": false, "isLValue": false, "isPure": false, @@ -5021,31 +5037,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1814:17:117", + "src": "1814:17:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71581, + "id": 72367, "nodeType": "ExpressionStatement", - "src": "1814:17:117" + "src": "1814:17:130" }, { "assignments": [ - 71583 + 72369 ], "declarations": [ { "constant": false, - "id": 71583, + "id": 72369, "mutability": "mutable", "name": "number1", - "nameLocation": "1849:7:117", + "nameLocation": "1849:7:130", "nodeType": "VariableDeclaration", - "scope": 71626, - "src": "1841:15:117", + "scope": 72412, + "src": "1841:15:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5053,10 +5069,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71582, + "id": 72368, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1841:7:117", + "src": "1841:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5065,39 +5081,39 @@ "visibility": "internal" } ], - "id": 71587, + "id": 72373, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 71584, + "id": 72370, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1859:17:117", + "referencedDeclaration": 72162, + "src": "1859:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71585, + "id": 72371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1877:6:117", + "memberLocation": "1877:6:130", "memberName": "number", "nodeType": "MemberAccess", - "referencedDeclaration": 7070, - "src": "1859:24:117", + "referencedDeclaration": 7821, + "src": "1859:24:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 71586, + "id": 72372, "isConstant": false, "isLValue": false, "isPure": false, @@ -5106,7 +5122,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1859:26:117", + "src": "1859:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5114,21 +5130,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1841:44:117" + "src": "1841:44:130" }, { "expression": { "arguments": [ { "hexValue": "", - "id": 71591, + "id": 72377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1929:2:117", + "src": "1929:2:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" @@ -5144,33 +5160,33 @@ } ], "expression": { - "id": 71588, + "id": 72374, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1895:17:117", + "referencedDeclaration": 72162, + "src": "1895:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71590, + "id": 72376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1913:15:117", + "memberLocation": "1913:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "1895:33:117", + "referencedDeclaration": 7856, + "src": "1895:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 71592, + "id": 72378, "isConstant": false, "isLValue": false, "isPure": false, @@ -5179,31 +5195,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1895:37:117", + "src": "1895:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71593, + "id": 72379, "nodeType": "ExpressionStatement", - "src": "1895:37:117" + "src": "1895:37:130" }, { "assignments": [ - 71595 + 72381 ], "declarations": [ { "constant": false, - "id": 71595, + "id": 72381, "mutability": "mutable", "name": "number2", - "nameLocation": "1950:7:117", + "nameLocation": "1950:7:130", "nodeType": "VariableDeclaration", - "scope": 71626, - "src": "1942:15:117", + "scope": 72412, + "src": "1942:15:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5211,10 +5227,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71594, + "id": 72380, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1942:7:117", + "src": "1942:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5223,39 +5239,39 @@ "visibility": "internal" } ], - "id": 71599, + "id": 72385, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 71596, + "id": 72382, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1960:17:117", + "referencedDeclaration": 72162, + "src": "1960:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71597, + "id": 72383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1978:6:117", + "memberLocation": "1978:6:130", "memberName": "number", "nodeType": "MemberAccess", - "referencedDeclaration": 7070, - "src": "1960:24:117", + "referencedDeclaration": 7821, + "src": "1960:24:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 71598, + "id": 72384, "isConstant": false, "isLValue": false, "isPure": false, @@ -5264,7 +5280,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1960:26:117", + "src": "1960:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5272,21 +5288,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1942:44:117" + "src": "1942:44:130" }, { "expression": { "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 71603, + "id": 72389, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:19:117", + "src": "2030:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -5302,33 +5318,33 @@ } ], "expression": { - "id": 71600, + "id": 72386, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "1996:17:117", + "referencedDeclaration": 72162, + "src": "1996:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71602, + "id": 72388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2014:15:117", + "memberLocation": "2014:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "1996:33:117", + "referencedDeclaration": 7856, + "src": "1996:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 71604, + "id": 72390, "isConstant": false, "isLValue": false, "isPure": false, @@ -5337,31 +5353,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1996:54:117", + "src": "1996:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71605, + "id": 72391, "nodeType": "ExpressionStatement", - "src": "1996:54:117" + "src": "1996:54:130" }, { "assignments": [ - 71607 + 72393 ], "declarations": [ { "constant": false, - "id": 71607, + "id": 72393, "mutability": "mutable", "name": "number3", - "nameLocation": "2068:7:117", + "nameLocation": "2068:7:130", "nodeType": "VariableDeclaration", - "scope": 71626, - "src": "2060:15:117", + "scope": 72412, + "src": "2060:15:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5369,10 +5385,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71606, + "id": 72392, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2060:7:117", + "src": "2060:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5381,39 +5397,39 @@ "visibility": "internal" } ], - "id": 71611, + "id": 72397, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 71608, + "id": 72394, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2078:17:117", + "referencedDeclaration": 72162, + "src": "2078:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71609, + "id": 72395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2096:6:117", + "memberLocation": "2096:6:130", "memberName": "number", "nodeType": "MemberAccess", - "referencedDeclaration": 7070, - "src": "2078:24:117", + "referencedDeclaration": 7821, + "src": "2078:24:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 71610, + "id": 72396, "isConstant": false, "isLValue": false, "isPure": false, @@ -5422,7 +5438,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2078:26:117", + "src": "2078:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5430,7 +5446,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2060:44:117" + "src": "2060:44:130" }, { "expression": { @@ -5440,7 +5456,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71617, + "id": 72403, "isConstant": false, "isLValue": false, "isPure": false, @@ -5450,18 +5466,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71615, + "id": 72401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 71613, + "id": 72399, "name": "number1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71583, - "src": "2125:7:117", + "referencedDeclaration": 72369, + "src": "2125:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5470,18 +5486,18 @@ "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { - "id": 71614, + "id": 72400, "name": "number2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71595, - "src": "2135:7:117", + "referencedDeclaration": 72381, + "src": "2135:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2125:17:117", + "src": "2125:17:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5490,18 +5506,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 71616, + "id": 72402, "name": "number3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71607, - "src": "2146:7:117", + "referencedDeclaration": 72393, + "src": "2146:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2125:28:117", + "src": "2125:28:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5509,14 +5525,14 @@ }, { "hexValue": "4e6f7420496e6372656d656e746564", - "id": 71618, + "id": 72404, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2155:17:117", + "src": "2155:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_de9540b0bf727dd389cd445e4c8d9b1ed8fbe7c858bfeeed2c7e4446d04f79fd", "typeString": "literal_string \"Not Incremented\"" @@ -5535,21 +5551,21 @@ "typeString": "literal_string \"Not Incremented\"" } ], - "id": 71612, + "id": 72398, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2114:10:117", + "referencedDeclaration": 11481, + "src": "2114:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71619, + "id": 72405, "isConstant": false, "isLValue": false, "isPure": false, @@ -5558,16 +5574,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2114:59:117", + "src": "2114:59:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71620, + "id": 72406, "nodeType": "ExpressionStatement", - "src": "2114:59:117" + "src": "2114:59:130" }, { "expression": { @@ -5575,33 +5591,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71621, + "id": 72407, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2184:2:117", + "referencedDeclaration": 13541, + "src": "2184:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71623, + "id": 72409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2187:9:117", + "memberLocation": "2187:9:130", "memberName": "stopPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23991, - "src": "2184:12:117", + "referencedDeclaration": 24742, + "src": "2184:12:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 71624, + "id": 72410, "isConstant": false, "isLValue": false, "isPure": false, @@ -5610,16 +5626,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2184:14:117", + "src": "2184:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71625, + "id": 72411, "nodeType": "ExpressionStatement", - "src": "2184:14:117" + "src": "2184:14:130" } ] }, @@ -5628,49 +5644,49 @@ "kind": "function", "modifiers": [], "name": "testUnconfiguredInteraction", - "nameLocation": "1767:27:117", + "nameLocation": "1767:27:130", "parameters": { - "id": 71574, + "id": 72360, "nodeType": "ParameterList", "parameters": [], - "src": "1794:2:117" + "src": "1794:2:130" }, "returnParameters": { - "id": 71575, + "id": 72361, "nodeType": "ParameterList", "parameters": [], - "src": "1804:0:117" + "src": "1804:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71828, + "id": 72614, "nodeType": "FunctionDefinition", - "src": "2211:1343:117", + "src": "2211:1343:130", "nodes": [], "body": { - "id": 71827, + "id": 72613, "nodeType": "Block", - "src": "2243:1311:117", + "src": "2243:1311:130", "nodes": [], "statements": [ { "assignments": [ - 71634 + 72420 ], "declarations": [ { "constant": false, - "id": 71634, + "id": 72420, "mutability": "mutable", "name": "datas", - "nameLocation": "2268:5:117", + "nameLocation": "2268:5:130", "nodeType": "VariableDeclaration", - "scope": 71827, - "src": "2253:20:117", + "scope": 72613, + "src": "2253:20:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5679,18 +5695,18 @@ }, "typeName": { "baseType": { - "id": 71632, + "id": 72418, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2253:5:117", + "src": "2253:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, - "id": 71633, + "id": 72419, "nodeType": "ArrayTypeName", - "src": "2253:7:117", + "src": "2253:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -5699,19 +5715,19 @@ "visibility": "internal" } ], - "id": 71640, + "id": 72426, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 71638, + "id": 72424, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2288:1:117", + "src": "2288:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -5726,38 +5742,38 @@ "typeString": "int_const 2" } ], - "id": 71637, + "id": 72423, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2276:11:117", + "src": "2276:11:130", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory[] memory)" }, "typeName": { "baseType": { - "id": 71635, + "id": 72421, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2280:5:117", + "src": "2280:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, - "id": 71636, + "id": 72422, "nodeType": "ArrayTypeName", - "src": "2280:7:117", + "src": "2280:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" } } }, - "id": 71639, + "id": 72425, "isConstant": false, "isLValue": false, "isPure": true, @@ -5766,7 +5782,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2276:14:117", + "src": "2276:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", @@ -5774,22 +5790,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2253:37:117" + "src": "2253:37:130" }, { "assignments": [ - 71645 + 72431 ], "declarations": [ { "constant": false, - "id": 71645, + "id": 72431, "mutability": "mutable", "name": "points", - "nameLocation": "2316:6:117", + "nameLocation": "2316:6:130", "nodeType": "VariableDeclaration", - "scope": 71827, - "src": "2300:22:117", + "scope": 72613, + "src": "2300:22:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5798,18 +5814,18 @@ }, "typeName": { "baseType": { - "id": 71643, + "id": 72429, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2300:6:117", + "src": "2300:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71644, + "id": 72430, "nodeType": "ArrayTypeName", - "src": "2300:8:117", + "src": "2300:8:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" @@ -5818,19 +5834,19 @@ "visibility": "internal" } ], - "id": 71651, + "id": 72437, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 71649, + "id": 72435, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2338:1:117", + "src": "2338:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -5845,38 +5861,38 @@ "typeString": "int_const 2" } ], - "id": 71648, + "id": 72434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2325:12:117", + "src": "2325:12:130", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint16[] memory)" }, "typeName": { "baseType": { - "id": 71646, + "id": 72432, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2329:6:117", + "src": "2329:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71647, + "id": 72433, "nodeType": "ArrayTypeName", - "src": "2329:8:117", + "src": "2329:8:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" } } }, - "id": 71650, + "id": 72436, "isConstant": false, "isLValue": false, "isPure": true, @@ -5885,7 +5901,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2325:15:117", + "src": "2325:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", @@ -5893,39 +5909,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2300:40:117" + "src": "2300:40:130" }, { "expression": { - "id": 71661, + "id": 72447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71652, + "id": 72438, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71634, - "src": "2351:5:117", + "referencedDeclaration": 72420, + "src": "2351:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, - "id": 71654, + "id": 72440, "indexExpression": { "hexValue": "30", - "id": 71653, + "id": 72439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2357:1:117", + "src": "2357:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -5937,7 +5953,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2351:8:117", + "src": "2351:8:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5950,41 +5966,41 @@ { "expression": { "expression": { - "id": 71657, + "id": 72443, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2379:17:117", + "referencedDeclaration": 72162, + "src": "2379:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71658, + "id": 72444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2397:22:117", + "memberLocation": "2397:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "2379:40:117", + "referencedDeclaration": 7872, + "src": "2379:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 71659, + "id": 72445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2420:8:117", + "memberLocation": "2420:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "2379:49:117", + "src": "2379:49:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5999,32 +6015,32 @@ } ], "expression": { - "id": 71655, + "id": 72441, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2362:3:117", + "src": "2362:3:130", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 71656, + "id": 72442, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2366:12:117", + "memberLocation": "2366:12:130", "memberName": "encodePacked", "nodeType": "MemberAccess", - "src": "2362:16:117", + "src": "2362:16:130", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 71660, + "id": 72446, "isConstant": false, "isLValue": false, "isPure": false, @@ -6033,54 +6049,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2362:67:117", + "src": "2362:67:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "src": "2351:78:117", + "src": "2351:78:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 71662, + "id": 72448, "nodeType": "ExpressionStatement", - "src": "2351:78:117" + "src": "2351:78:130" }, { "expression": { - "id": 71673, + "id": 72459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71663, + "id": 72449, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71634, - "src": "2439:5:117", + "referencedDeclaration": 72420, + "src": "2439:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, - "id": 71665, + "id": 72451, "indexExpression": { "hexValue": "31", - "id": 71664, + "id": 72450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2445:1:117", + "src": "2445:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6092,7 +6108,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2439:8:117", + "src": "2439:8:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6105,41 +6121,41 @@ { "expression": { "expression": { - "id": 71668, + "id": 72454, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2473:17:117", + "referencedDeclaration": 72162, + "src": "2473:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71669, + "id": 72455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2491:15:117", + "memberLocation": "2491:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "2473:33:117", + "referencedDeclaration": 7856, + "src": "2473:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 71670, + "id": 72456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2507:8:117", + "memberLocation": "2507:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "2473:42:117", + "src": "2473:42:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -6147,14 +6163,14 @@ }, { "hexValue": "617665727972616e646f6d737472696e67", - "id": 71671, + "id": 72457, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2517:19:117", + "src": "2517:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -6174,32 +6190,32 @@ } ], "expression": { - "id": 71666, + "id": 72452, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2450:3:117", + "src": "2450:3:130", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 71667, + "id": 72453, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2454:18:117", + "memberLocation": "2454:18:130", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", - "src": "2450:22:117", + "src": "2450:22:130", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 71672, + "id": 72458, "isConstant": false, "isLValue": false, "isPure": false, @@ -6208,54 +6224,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2450:87:117", + "src": "2450:87:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "src": "2439:98:117", + "src": "2439:98:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 71674, + "id": 72460, "nodeType": "ExpressionStatement", - "src": "2439:98:117" + "src": "2439:98:130" }, { "expression": { - "id": 71679, + "id": 72465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71675, + "id": 72461, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71645, - "src": "2548:6:117", + "referencedDeclaration": 72431, + "src": "2548:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 71677, + "id": 72463, "indexExpression": { "hexValue": "30", - "id": 71676, + "id": 72462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2555:1:117", + "src": "2555:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6267,7 +6283,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2548:9:117", + "src": "2548:9:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6277,61 +6293,61 @@ "operator": "=", "rightHandSide": { "hexValue": "35", - "id": 71678, + "id": 72464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2560:1:117", + "src": "2560:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, - "src": "2548:13:117", + "src": "2548:13:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71680, + "id": 72466, "nodeType": "ExpressionStatement", - "src": "2548:13:117" + "src": "2548:13:130" }, { "expression": { - "id": 71685, + "id": 72471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71681, + "id": 72467, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71645, - "src": "2571:6:117", + "referencedDeclaration": 72431, + "src": "2571:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 71683, + "id": 72469, "indexExpression": { "hexValue": "31", - "id": 71682, + "id": 72468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2578:1:117", + "src": "2578:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6343,7 +6359,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2571:9:117", + "src": "2571:9:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6353,29 +6369,29 @@ "operator": "=", "rightHandSide": { "hexValue": "39", - "id": 71684, + "id": 72470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2583:1:117", + "src": "2583:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, - "src": "2571:13:117", + "src": "2571:13:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71686, + "id": 72472, "nodeType": "ExpressionStatement", - "src": "2571:13:117" + "src": "2571:13:130" }, { "expression": { @@ -6383,41 +6399,41 @@ { "expression": { "expression": { - "id": 71690, + "id": 72476, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "2611:16:117", + "src": "2611:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 71691, + "id": 72477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2628:9:117", + "memberLocation": "2628:9:130", "memberName": "OnlyAdmin", "nodeType": "MemberAccess", "referencedDeclaration": 1274, - "src": "2611:26:117", + "src": "2611:26:130", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 71692, + "id": 72478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2638:8:117", + "memberLocation": "2638:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "2611:35:117", + "src": "2611:35:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -6432,33 +6448,33 @@ } ], "expression": { - "id": 71687, + "id": 72473, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2595:2:117", + "referencedDeclaration": 13541, + "src": "2595:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71689, + "id": 72475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2598:12:117", + "memberLocation": "2598:12:130", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "2595:15:117", + "referencedDeclaration": 24781, + "src": "2595:15:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 71693, + "id": 72479, "isConstant": false, "isLValue": false, "isPure": false, @@ -6467,16 +6483,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2595:52:117", + "src": "2595:52:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71694, + "id": 72480, "nodeType": "ExpressionStatement", - "src": "2595:52:117" + "src": "2595:52:130" }, { "expression": { @@ -6484,14 +6500,14 @@ { "arguments": [ { - "id": 71700, + "id": 72486, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2691:17:117", + "referencedDeclaration": 72162, + "src": "2691:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -6499,30 +6515,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71699, + "id": 72485, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2683:7:117", + "src": "2683:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71698, + "id": 72484, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2683:7:117", + "src": "2683:7:130", "typeDescriptions": {} } }, - "id": 71701, + "id": 72487, "isConstant": false, "isLValue": false, "isPure": false, @@ -6531,7 +6547,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2683:26:117", + "src": "2683:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6539,24 +6555,24 @@ } }, { - "id": 71702, + "id": 72488, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71634, - "src": "2711:5:117", + "referencedDeclaration": 72420, + "src": "2711:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, { - "id": 71703, + "id": 72489, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71645, - "src": "2718:6:117", + "referencedDeclaration": 72431, + "src": "2718:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" @@ -6579,33 +6595,33 @@ } ], "expression": { - "id": 71695, + "id": 72481, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "2657:3:117", + "referencedDeclaration": 70567, + "src": "2657:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71697, + "id": 72483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2661:21:117", + "memberLocation": "2661:21:130", "memberName": "setInteractionWeights", "nodeType": "MemberAccess", "referencedDeclaration": 1309, - "src": "2657:25:117", + "src": "2657:25:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory[] memory,uint16[] memory) external" } }, - "id": 71704, + "id": 72490, "isConstant": false, "isLValue": false, "isPure": false, @@ -6614,27 +6630,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2657:68:117", + "src": "2657:68:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71705, + "id": 72491, "nodeType": "ExpressionStatement", - "src": "2657:68:117" + "src": "2657:68:130" }, { "expression": { "arguments": [ { - "id": 71709, + "id": 72495, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "2745:5:117", + "referencedDeclaration": 72166, + "src": "2745:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6649,33 +6665,33 @@ } ], "expression": { - "id": 71706, + "id": 72492, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2736:2:117", + "referencedDeclaration": 13541, + "src": "2736:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71708, + "id": 72494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2739:5:117", + "memberLocation": "2739:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2736:8:117", + "referencedDeclaration": 24720, + "src": "2736:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71710, + "id": 72496, "isConstant": false, "isLValue": false, "isPure": false, @@ -6684,16 +6700,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2736:15:117", + "src": "2736:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71711, + "id": 72497, "nodeType": "ExpressionStatement", - "src": "2736:15:117" + "src": "2736:15:130" }, { "expression": { @@ -6701,14 +6717,14 @@ { "arguments": [ { - "id": 71717, + "id": 72503, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2795:17:117", + "referencedDeclaration": 72162, + "src": "2795:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -6716,30 +6732,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71716, + "id": 72502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2787:7:117", + "src": "2787:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71715, + "id": 72501, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2787:7:117", + "src": "2787:7:130", "typeDescriptions": {} } }, - "id": 71718, + "id": 72504, "isConstant": false, "isLValue": false, "isPure": false, @@ -6748,7 +6764,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2787:26:117", + "src": "2787:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6756,24 +6772,24 @@ } }, { - "id": 71719, + "id": 72505, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71634, - "src": "2815:5:117", + "referencedDeclaration": 72420, + "src": "2815:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, { - "id": 71720, + "id": 72506, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71645, - "src": "2822:6:117", + "referencedDeclaration": 72431, + "src": "2822:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" @@ -6796,33 +6812,33 @@ } ], "expression": { - "id": 71712, + "id": 72498, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "2761:3:117", + "referencedDeclaration": 70567, + "src": "2761:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71714, + "id": 72500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2765:21:117", + "memberLocation": "2765:21:130", "memberName": "setInteractionWeights", "nodeType": "MemberAccess", "referencedDeclaration": 1309, - "src": "2761:25:117", + "src": "2761:25:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory[] memory,uint16[] memory) external" } }, - "id": 71721, + "id": 72507, "isConstant": false, "isLValue": false, "isPure": false, @@ -6831,16 +6847,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2761:68:117", + "src": "2761:68:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71722, + "id": 72508, "nodeType": "ExpressionStatement", - "src": "2761:68:117" + "src": "2761:68:130" }, { "expression": { @@ -6848,33 +6864,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71723, + "id": 72509, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2840:17:117", + "referencedDeclaration": 72162, + "src": "2840:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71725, + "id": 72511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2858:6:117", + "memberLocation": "2858:6:130", "memberName": "number", "nodeType": "MemberAccess", - "referencedDeclaration": 7070, - "src": "2840:24:117", + "referencedDeclaration": 7821, + "src": "2840:24:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 71726, + "id": 72512, "isConstant": false, "isLValue": false, "isPure": false, @@ -6883,34 +6899,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2840:26:117", + "src": "2840:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71727, + "id": 72513, "nodeType": "ExpressionStatement", - "src": "2840:26:117" + "src": "2840:26:130" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 71728, + "id": 72514, "name": "testUnconfiguredInteraction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71627, - "src": "2876:27:117", + "referencedDeclaration": 72413, + "src": "2876:27:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 71729, + "id": 72515, "isConstant": false, "isLValue": false, "isPure": false, @@ -6919,16 +6935,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2876:29:117", + "src": "2876:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71730, + "id": 72516, "nodeType": "ExpressionStatement", - "src": "2876:29:117" + "src": "2876:29:130" }, { "expression": { @@ -6936,33 +6952,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71731, + "id": 72517, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "2915:17:117", + "referencedDeclaration": 72162, + "src": "2915:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71733, + "id": 72519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2933:6:117", + "memberLocation": "2933:6:130", "memberName": "number", "nodeType": "MemberAccess", - "referencedDeclaration": 7070, - "src": "2915:24:117", + "referencedDeclaration": 7821, + "src": "2915:24:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, - "id": 71734, + "id": 72520, "isConstant": false, "isLValue": false, "isPure": false, @@ -6971,31 +6987,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2915:26:117", + "src": "2915:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71735, + "id": 72521, "nodeType": "ExpressionStatement", - "src": "2915:26:117" + "src": "2915:26:130" }, { "assignments": [ - 71738 + 72524 ], "declarations": [ { "constant": false, - "id": 71738, + "id": 72524, "mutability": "mutable", "name": "IS1", - "nameLocation": "2975:3:117", + "nameLocation": "2975:3:130", "nodeType": "VariableDeclaration", - "scope": 71827, - "src": "2952:26:117", + "scope": 72613, + "src": "2952:26:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7003,20 +7019,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 71737, + "id": 72523, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71736, + "id": 72522, "name": "individualState", "nameLocations": [ - "2952:15:117" + "2952:15:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "2952:15:117" + "src": "2952:15:130" }, "referencedDeclaration": 1238, - "src": "2952:15:117", + "src": "2952:15:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -7025,16 +7041,16 @@ "visibility": "internal" } ], - "id": 71747, + "id": 72533, "initialValue": { "arguments": [ { - "id": 71741, + "id": 72527, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "3004:2:117", + "referencedDeclaration": 70591, + "src": "3004:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7043,14 +7059,14 @@ { "arguments": [ { - "id": 71744, + "id": 72530, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3016:4:117", + "referencedDeclaration": 70573, + "src": "3016:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -7058,30 +7074,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71743, + "id": 72529, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3008:7:117", + "src": "3008:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71742, + "id": 72528, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3008:7:117", + "src": "3008:7:130", "typeDescriptions": {} } }, - "id": 71745, + "id": 72531, "isConstant": false, "isLValue": false, "isPure": false, @@ -7090,7 +7106,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3008:13:117", + "src": "3008:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7110,33 +7126,33 @@ } ], "expression": { - "id": 71739, + "id": 72525, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "2981:3:117", + "referencedDeclaration": 70567, + "src": "2981:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71740, + "id": 72526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2985:18:117", + "memberLocation": "2985:18:130", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "2981:22:117", + "src": "2981:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 71746, + "id": 72532, "isConstant": false, "isLValue": false, "isPure": false, @@ -7145,7 +7161,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2981:41:117", + "src": "2981:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -7153,18 +7169,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2952:70:117" + "src": "2952:70:130" }, { "expression": { "arguments": [ { - "id": 71751, + "id": 72537, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "3042:2:117", + "referencedDeclaration": 70591, + "src": "3042:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7179,33 +7195,33 @@ } ], "expression": { - "id": 71748, + "id": 72534, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3033:2:117", + "referencedDeclaration": 13541, + "src": "3033:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71750, + "id": 72536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3036:5:117", + "memberLocation": "3036:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3033:8:117", + "referencedDeclaration": 24720, + "src": "3033:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71752, + "id": 72538, "isConstant": false, "isLValue": false, "isPure": false, @@ -7214,16 +7230,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3033:12:117", + "src": "3033:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71753, + "id": 72539, "nodeType": "ExpressionStatement", - "src": "3033:12:117" + "src": "3033:12:130" }, { "expression": { @@ -7231,33 +7247,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 71754, + "id": 72540, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "3055:17:117", + "referencedDeclaration": 72162, + "src": "3055:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71756, + "id": 72542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3073:22:117", + "memberLocation": "3073:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "3055:40:117", + "referencedDeclaration": 7872, + "src": "3055:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 71757, + "id": 72543, "isConstant": false, "isLValue": false, "isPure": false, @@ -7266,31 +7282,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3055:42:117", + "src": "3055:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71758, + "id": 72544, "nodeType": "ExpressionStatement", - "src": "3055:42:117" + "src": "3055:42:130" }, { "assignments": [ - 71761 + 72547 ], "declarations": [ { "constant": false, - "id": 71761, + "id": 72547, "mutability": "mutable", "name": "IS2", - "nameLocation": "3131:3:117", + "nameLocation": "3131:3:130", "nodeType": "VariableDeclaration", - "scope": 71827, - "src": "3108:26:117", + "scope": 72613, + "src": "3108:26:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7298,20 +7314,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 71760, + "id": 72546, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71759, + "id": 72545, "name": "individualState", "nameLocations": [ - "3108:15:117" + "3108:15:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "3108:15:117" + "src": "3108:15:130" }, "referencedDeclaration": 1238, - "src": "3108:15:117", + "src": "3108:15:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -7320,16 +7336,16 @@ "visibility": "internal" } ], - "id": 71770, + "id": 72556, "initialValue": { "arguments": [ { - "id": 71764, + "id": 72550, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "3160:2:117", + "referencedDeclaration": 70591, + "src": "3160:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7338,14 +7354,14 @@ { "arguments": [ { - "id": 71767, + "id": 72553, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3172:4:117", + "referencedDeclaration": 70573, + "src": "3172:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -7353,30 +7369,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71766, + "id": 72552, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3164:7:117", + "src": "3164:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71765, + "id": 72551, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3164:7:117", + "src": "3164:7:130", "typeDescriptions": {} } }, - "id": 71768, + "id": 72554, "isConstant": false, "isLValue": false, "isPure": false, @@ -7385,7 +7401,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3164:13:117", + "src": "3164:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7405,33 +7421,33 @@ } ], "expression": { - "id": 71762, + "id": 72548, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3137:3:117", + "referencedDeclaration": 70567, + "src": "3137:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71763, + "id": 72549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3141:18:117", + "memberLocation": "3141:18:130", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "3137:22:117", + "src": "3137:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 71769, + "id": 72555, "isConstant": false, "isLValue": false, "isPure": false, @@ -7440,7 +7456,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3137:41:117", + "src": "3137:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -7448,7 +7464,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3108:70:117" + "src": "3108:70:130" }, { "expression": { @@ -7458,34 +7474,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71775, + "id": 72561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71772, + "id": 72558, "name": "IS2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71761, - "src": "3199:3:117", + "referencedDeclaration": 72547, + "src": "3199:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71773, + "id": 72559, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3203:2:117", + "memberLocation": "3203:2:130", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3199:6:117", + "src": "3199:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -7495,21 +7511,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 71774, + "id": 72560, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3208:1:117", + "src": "3208:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "3199:10:117", + "src": "3199:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7517,14 +7533,14 @@ }, { "hexValue": "68617320736f6d6520706f696e7473", - "id": 71776, + "id": 72562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3211:17:117", + "src": "3211:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8b3c3af6781c46d22cdf5ef744a65c34b2b494716683fc96234c56a602db24ca", "typeString": "literal_string \"has some points\"" @@ -7543,21 +7559,21 @@ "typeString": "literal_string \"has some points\"" } ], - "id": 71771, + "id": 72557, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3188:10:117", + "referencedDeclaration": 11481, + "src": "3188:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71777, + "id": 72563, "isConstant": false, "isLValue": false, "isPure": false, @@ -7566,16 +7582,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3188:41:117", + "src": "3188:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71778, + "id": 72564, "nodeType": "ExpressionStatement", - "src": "3188:41:117" + "src": "3188:41:130" }, { "expression": { @@ -7585,34 +7601,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71784, + "id": 72570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71780, + "id": 72566, "name": "IS1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71738, - "src": "3250:3:117", + "referencedDeclaration": 72524, + "src": "3250:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71781, + "id": 72567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3254:2:117", + "memberLocation": "3254:2:130", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3250:6:117", + "src": "3250:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -7622,33 +7638,33 @@ "operator": "<", "rightExpression": { "expression": { - "id": 71782, + "id": 72568, "name": "IS2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71761, - "src": "3259:3:117", + "referencedDeclaration": 72547, + "src": "3259:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71783, + "id": 72569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3263:2:117", + "memberLocation": "3263:2:130", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3259:6:117", + "src": "3259:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "3250:15:117", + "src": "3250:15:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7656,14 +7672,14 @@ }, { "hexValue": "6e6f20706f696e7473206761696e6564", - "id": 71785, + "id": 72571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3267:18:117", + "src": "3267:18:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_68505bc76fd157111376887bb2e85793a3748c545ac5e55865c0f0037cc46b1d", "typeString": "literal_string \"no points gained\"" @@ -7682,21 +7698,21 @@ "typeString": "literal_string \"no points gained\"" } ], - "id": 71779, + "id": 72565, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3239:10:117", + "referencedDeclaration": 11481, + "src": "3239:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71786, + "id": 72572, "isConstant": false, "isLValue": false, "isPure": false, @@ -7705,27 +7721,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3239:47:117", + "src": "3239:47:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71787, + "id": 72573, "nodeType": "ExpressionStatement", - "src": "3239:47:117" + "src": "3239:47:130" }, { "expression": { "arguments": [ { - "id": 71791, + "id": 72577, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3306:2:117", + "referencedDeclaration": 70589, + "src": "3306:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7740,33 +7756,33 @@ } ], "expression": { - "id": 71788, + "id": 72574, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3297:2:117", + "referencedDeclaration": 13541, + "src": "3297:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71790, + "id": 72576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3300:5:117", + "memberLocation": "3300:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3297:8:117", + "referencedDeclaration": 24720, + "src": "3297:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71792, + "id": 72578, "isConstant": false, "isLValue": false, "isPure": false, @@ -7775,30 +7791,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3297:12:117", + "src": "3297:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71793, + "id": 72579, "nodeType": "ExpressionStatement", - "src": "3297:12:117" + "src": "3297:12:130" }, { "expression": { "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 71797, + "id": 72583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3353:19:117", + "src": "3353:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -7814,33 +7830,33 @@ } ], "expression": { - "id": 71794, + "id": 72580, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "3319:17:117", + "referencedDeclaration": 72162, + "src": "3319:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71796, + "id": 72582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3337:15:117", + "memberLocation": "3337:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "3319:33:117", + "referencedDeclaration": 7856, + "src": "3319:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 71798, + "id": 72584, "isConstant": false, "isLValue": false, "isPure": false, @@ -7849,31 +7865,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3319:54:117", + "src": "3319:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71799, + "id": 72585, "nodeType": "ExpressionStatement", - "src": "3319:54:117" + "src": "3319:54:130" }, { "assignments": [ - 71802 + 72588 ], "declarations": [ { "constant": false, - "id": 71802, + "id": 72588, "mutability": "mutable", "name": "IS3", - "nameLocation": "3406:3:117", + "nameLocation": "3406:3:130", "nodeType": "VariableDeclaration", - "scope": 71827, - "src": "3383:26:117", + "scope": 72613, + "src": "3383:26:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7881,20 +7897,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 71801, + "id": 72587, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71800, + "id": 72586, "name": "individualState", "nameLocations": [ - "3383:15:117" + "3383:15:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "3383:15:117" + "src": "3383:15:130" }, "referencedDeclaration": 1238, - "src": "3383:15:117", + "src": "3383:15:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -7903,16 +7919,16 @@ "visibility": "internal" } ], - "id": 71811, + "id": 72597, "initialValue": { "arguments": [ { - "id": 71805, + "id": 72591, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3435:2:117", + "referencedDeclaration": 70589, + "src": "3435:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7921,14 +7937,14 @@ { "arguments": [ { - "id": 71808, + "id": 72594, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3447:4:117", + "referencedDeclaration": 70573, + "src": "3447:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -7936,30 +7952,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71807, + "id": 72593, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3439:7:117", + "src": "3439:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71806, + "id": 72592, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3439:7:117", + "src": "3439:7:130", "typeDescriptions": {} } }, - "id": 71809, + "id": 72595, "isConstant": false, "isLValue": false, "isPure": false, @@ -7968,7 +7984,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3439:13:117", + "src": "3439:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7988,33 +8004,33 @@ } ], "expression": { - "id": 71803, + "id": 72589, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3412:3:117", + "referencedDeclaration": 70567, + "src": "3412:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71804, + "id": 72590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3416:18:117", + "memberLocation": "3416:18:130", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "3412:22:117", + "src": "3412:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 71810, + "id": 72596, "isConstant": false, "isLValue": false, "isPure": false, @@ -8023,7 +8039,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3412:41:117", + "src": "3412:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -8031,7 +8047,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3383:70:117" + "src": "3383:70:130" }, { "expression": { @@ -8041,34 +8057,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71816, + "id": 72602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71813, + "id": 72599, "name": "IS3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71802, - "src": "3474:3:117", + "referencedDeclaration": 72588, + "src": "3474:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71814, + "id": 72600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3478:2:117", + "memberLocation": "3478:2:130", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3474:6:117", + "src": "3474:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8078,21 +8094,21 @@ "operator": ">=", "rightExpression": { "hexValue": "39", - "id": 71815, + "id": 72601, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3484:1:117", + "src": "3484:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, - "src": "3474:11:117", + "src": "3474:11:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8100,14 +8116,14 @@ }, { "hexValue": "66756e6374696f6e2061726720706f696e7473206d69736d61746368", - "id": 71817, + "id": 72603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3487:30:117", + "src": "3487:30:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7b292268b3de7e76f412fec49f806e40f827117b73caec38bbe4823c850a0407", "typeString": "literal_string \"function arg points mismatch\"" @@ -8126,21 +8142,21 @@ "typeString": "literal_string \"function arg points mismatch\"" } ], - "id": 71812, + "id": 72598, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3463:10:117", + "referencedDeclaration": 11481, + "src": "3463:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71818, + "id": 72604, "isConstant": false, "isLValue": false, "isPure": false, @@ -8149,43 +8165,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3463:55:117", + "src": "3463:55:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71819, + "id": 72605, "nodeType": "ExpressionStatement", - "src": "3463:55:117" + "src": "3463:55:130" }, { "expression": { "arguments": [ { "expression": { - "id": 71823, + "id": 72609, "name": "IS3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71802, - "src": "3540:3:117", + "referencedDeclaration": 72588, + "src": "3540:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 71824, + "id": 72610, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3544:2:117", + "memberLocation": "3544:2:130", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3540:6:117", + "src": "3540:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8200,33 +8216,33 @@ } ], "expression": { - "id": 71820, + "id": 72606, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "3528:7:117", + "referencedDeclaration": 33186, + "src": "3528:7:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 71822, + "id": 72608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3536:3:117", + "memberLocation": "3536:3:130", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24952, - "src": "3528:11:117", + "referencedDeclaration": 25703, + "src": "3528:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view" } }, - "id": 71825, + "id": 72611, "isConstant": false, "isLValue": false, "isPure": false, @@ -8235,16 +8251,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3528:19:117", + "src": "3528:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71826, + "id": 72612, "nodeType": "ExpressionStatement", - "src": "3528:19:117" + "src": "3528:19:130" } ] }, @@ -8253,49 +8269,49 @@ "kind": "function", "modifiers": [], "name": "testSetWeight", - "nameLocation": "2220:13:117", + "nameLocation": "2220:13:130", "parameters": { - "id": 71628, + "id": 72414, "nodeType": "ParameterList", "parameters": [], - "src": "2233:2:117" + "src": "2233:2:130" }, "returnParameters": { - "id": 71629, + "id": 72415, "nodeType": "ParameterList", "parameters": [], - "src": "2243:0:117" + "src": "2243:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 71893, + "id": 72679, "nodeType": "FunctionDefinition", - "src": "3560:492:117", + "src": "3560:492:130", "nodes": [], "body": { - "id": 71892, + "id": 72678, "nodeType": "Block", - "src": "3599:453:117", + "src": "3599:453:130", "nodes": [], "statements": [ { "assignments": [ - 71833 + 72619 ], "declarations": [ { "constant": false, - "id": 71833, + "id": 72619, "mutability": "mutable", "name": "GS0", - "nameLocation": "3627:3:117", + "nameLocation": "3627:3:130", "nodeType": "VariableDeclaration", - "scope": 71892, - "src": "3609:21:117", + "scope": 72678, + "src": "3609:21:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8303,20 +8319,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 71832, + "id": 72618, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 71831, + "id": 72617, "name": "groupState", "nameLocations": [ - "3609:10:117" + "3609:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "3609:10:117" + "src": "3609:10:130" }, "referencedDeclaration": 1229, - "src": "3609:10:117", + "src": "3609:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -8325,20 +8341,20 @@ "visibility": "internal" } ], - "id": 71841, + "id": 72627, "initialValue": { "arguments": [ { "arguments": [ { - "id": 71838, + "id": 72624, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3659:4:117", + "referencedDeclaration": 70573, + "src": "3659:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -8346,30 +8362,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 71837, + "id": 72623, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3651:7:117", + "src": "3651:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71836, + "id": 72622, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3651:7:117", + "src": "3651:7:130", "typeDescriptions": {} } }, - "id": 71839, + "id": 72625, "isConstant": false, "isLValue": false, "isPure": false, @@ -8378,7 +8394,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3651:13:117", + "src": "3651:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8394,33 +8410,33 @@ } ], "expression": { - "id": 71834, + "id": 72620, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3633:3:117", + "referencedDeclaration": 70567, + "src": "3633:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71835, + "id": 72621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3637:13:117", + "memberLocation": "3637:13:130", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "3633:17:117", + "src": "3633:17:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 71840, + "id": 72626, "isConstant": false, "isLValue": false, "isPure": false, @@ -8429,7 +8445,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3633:32:117", + "src": "3633:32:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -8437,7 +8453,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3609:56:117" + "src": "3609:56:130" }, { "expression": { @@ -8447,34 +8463,34 @@ "typeIdentifier": "t_uint16", "typeString": "uint16" }, - "id": 71846, + "id": 72632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71843, + "id": 72629, "name": "GS0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71833, - "src": "3687:3:117", + "referencedDeclaration": 72619, + "src": "3687:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 71844, + "id": 72630, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3691:1:117", + "memberLocation": "3691:1:130", "memberName": "k", "nodeType": "MemberAccess", "referencedDeclaration": 1215, - "src": "3687:5:117", + "src": "3687:5:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -8484,21 +8500,21 @@ "operator": "==", "rightExpression": { "hexValue": "3330", - "id": 71845, + "id": 72631, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3696:2:117", + "src": "3696:2:130", "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", "typeString": "int_const 30" }, "value": "30" }, - "src": "3687:11:117", + "src": "3687:11:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8506,14 +8522,14 @@ }, { "hexValue": "6b206e6f742064656661756c74203330", - "id": 71847, + "id": 72633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3700:18:117", + "src": "3700:18:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8e3ed18a68a3d058ed4964f464df5890694a7097b02c19e460f8e1c14d06bc91", "typeString": "literal_string \"k not default 30\"" @@ -8532,21 +8548,21 @@ "typeString": "literal_string \"k not default 30\"" } ], - "id": 71842, + "id": 72628, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3676:10:117", + "referencedDeclaration": 11481, + "src": "3676:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71848, + "id": 72634, "isConstant": false, "isLValue": false, "isPure": false, @@ -8555,16 +8571,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3676:43:117", + "src": "3676:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71849, + "id": 72635, "nodeType": "ExpressionStatement", - "src": "3676:43:117" + "src": "3676:43:130" }, { "expression": { @@ -8574,34 +8590,34 @@ "typeIdentifier": "t_uint32", "typeString": "uint32" }, - "id": 71854, + "id": 72640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71851, + "id": 72637, "name": "GS0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71833, - "src": "3740:3:117", + "referencedDeclaration": 72619, + "src": "3740:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 71852, + "id": 72638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3744:1:117", + "memberLocation": "3744:1:130", "memberName": "p", "nodeType": "MemberAccess", "referencedDeclaration": 1221, - "src": "3740:5:117", + "src": "3740:5:130", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -8611,14 +8627,14 @@ "operator": "==", "rightExpression": { "hexValue": "3330", - "id": 71853, + "id": 72639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3749:7:117", + "src": "3749:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2592000_by_1", @@ -8626,7 +8642,7 @@ }, "value": "30" }, - "src": "3740:16:117", + "src": "3740:16:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8634,14 +8650,14 @@ }, { "hexValue": "6d696e20706572696f64206e6f742033302064617973", - "id": 71855, + "id": 72641, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3758:24:117", + "src": "3758:24:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_05c405a141538700e884d54b7aa3c53ff942af1572d91ae9bf2b1bdf232d251f", "typeString": "literal_string \"min period not 30 days\"" @@ -8660,21 +8676,21 @@ "typeString": "literal_string \"min period not 30 days\"" } ], - "id": 71850, + "id": 72636, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3729:10:117", + "referencedDeclaration": 11481, + "src": "3729:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71856, + "id": 72642, "isConstant": false, "isLValue": false, "isPure": false, @@ -8683,16 +8699,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3729:54:117", + "src": "3729:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71857, + "id": 72643, "nodeType": "ExpressionStatement", - "src": "3729:54:117" + "src": "3729:54:130" }, { "expression": { @@ -8702,34 +8718,34 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71863, + "id": 72649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71859, + "id": 72645, "name": "GS0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71833, - "src": "3804:3:117", + "referencedDeclaration": 72619, + "src": "3804:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 71860, + "id": 72646, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3808:10:117", + "memberLocation": "3808:10:130", "memberName": "lastPeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1209, - "src": "3804:14:117", + "src": "3804:14:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8739,32 +8755,32 @@ "operator": ">=", "rightExpression": { "expression": { - "id": 71861, + "id": 72647, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "3822:5:117", + "src": "3822:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 71862, + "id": 72648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3828:9:117", + "memberLocation": "3828:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "3822:15:117", + "src": "3822:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3804:33:117", + "src": "3804:33:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8772,14 +8788,14 @@ }, { "hexValue": "6c6173742070657269646f6e20756e696e6974", - "id": 71864, + "id": 72650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3839:21:117", + "src": "3839:21:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a874e0f086f462240a27ee64f36c332dd530c8d32b1acd6b99382a97382ecb7c", "typeString": "literal_string \"last peridon uninit\"" @@ -8798,21 +8814,21 @@ "typeString": "literal_string \"last peridon uninit\"" } ], - "id": 71858, + "id": 72644, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3793:10:117", + "referencedDeclaration": 11481, + "src": "3793:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71865, + "id": 72651, "isConstant": false, "isLValue": false, "isPure": false, @@ -8821,31 +8837,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3793:68:117", + "src": "3793:68:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71866, + "id": 72652, "nodeType": "ExpressionStatement", - "src": "3793:68:117" + "src": "3793:68:130" }, { "assignments": [ - 71871 + 72657 ], "declarations": [ { "constant": false, - "id": 71871, + "id": 72657, "mutability": "mutable", "name": "members", - "nameLocation": "3889:7:117", + "nameLocation": "3889:7:130", "nodeType": "VariableDeclaration", - "scope": 71892, - "src": "3872:24:117", + "scope": 72678, + "src": "3872:24:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8854,18 +8870,18 @@ }, "typeName": { "baseType": { - "id": 71869, + "id": 72655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3872:7:117", + "src": "3872:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 71870, + "id": 72656, "nodeType": "ArrayTypeName", - "src": "3872:9:117", + "src": "3872:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -8874,39 +8890,39 @@ "visibility": "internal" } ], - "id": 71875, + "id": 72661, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 71872, + "id": 72658, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3899:4:117", + "referencedDeclaration": 70573, + "src": "3899:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 71873, + "id": 72659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3904:13:117", + "memberLocation": "3904:13:130", "memberName": "getAllMembers", "nodeType": "MemberAccess", - "referencedDeclaration": 5598, - "src": "3899:18:117", + "referencedDeclaration": 6349, + "src": "3899:18:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function () view external returns (address[] memory)" } }, - "id": 71874, + "id": 72660, "isConstant": false, "isLValue": false, "isPure": false, @@ -8915,7 +8931,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3899:20:117", + "src": "3899:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -8923,7 +8939,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3872:47:117" + "src": "3872:47:130" }, { "expression": { @@ -8933,33 +8949,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71880, + "id": 72666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71877, + "id": 72663, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71871, - "src": "3940:7:117", + "referencedDeclaration": 72657, + "src": "3940:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 71878, + "id": 72664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3948:6:117", + "memberLocation": "3948:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "3940:14:117", + "src": "3940:14:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8969,21 +8985,21 @@ "operator": "==", "rightExpression": { "hexValue": "31", - "id": 71879, + "id": 72665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3958:1:117", + "src": "3958:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "3940:19:117", + "src": "3940:19:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8991,14 +9007,14 @@ }, { "hexValue": "6e6f74206d6f7265207468616e2031206d656d626572", - "id": 71881, + "id": 72667, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3961:24:117", + "src": "3961:24:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9890b7537d0d01313664a121ecabae730967fe7a9f2be9e7f7252c50349cb68b", "typeString": "literal_string \"not more than 1 member\"" @@ -9017,21 +9033,21 @@ "typeString": "literal_string \"not more than 1 member\"" } ], - "id": 71876, + "id": 72662, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3929:10:117", + "referencedDeclaration": 11481, + "src": "3929:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71882, + "id": 72668, "isConstant": false, "isLValue": false, "isPure": false, @@ -9040,16 +9056,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3929:57:117", + "src": "3929:57:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71883, + "id": 72669, "nodeType": "ExpressionStatement", - "src": "3929:57:117" + "src": "3929:57:130" }, { "expression": { @@ -9059,34 +9075,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 71888, + "id": 72674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 71885, + "id": 72671, "name": "GS0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71833, - "src": "4007:3:117", + "referencedDeclaration": 72619, + "src": "4007:3:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 71886, + "id": 72672, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4011:3:117", + "memberLocation": "4011:3:130", "memberName": "TCL", "nodeType": "MemberAccess", "referencedDeclaration": 1211, - "src": "4007:7:117", + "src": "4007:7:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -9096,21 +9112,21 @@ "operator": "==", "rightExpression": { "hexValue": "34", - "id": 71887, + "id": 72673, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4018:1:117", + "src": "4018:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "4007:12:117", + "src": "4007:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9118,14 +9134,14 @@ }, { "hexValue": "31206d656d6265722074636c20696e207365747570", - "id": 71889, + "id": 72675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4021:23:117", + "src": "4021:23:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_bb84a0c65f071a38ac3e96507cb43f744074becc72e3d95eb338194e9b304d03", "typeString": "literal_string \"1 member tcl in setup\"" @@ -9144,21 +9160,21 @@ "typeString": "literal_string \"1 member tcl in setup\"" } ], - "id": 71884, + "id": 72670, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3996:10:117", + "referencedDeclaration": 11481, + "src": "3996:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 71890, + "id": 72676, "isConstant": false, "isLValue": false, "isPure": false, @@ -9167,16 +9183,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3996:49:117", + "src": "3996:49:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71891, + "id": 72677, "nodeType": "ExpressionStatement", - "src": "3996:49:117" + "src": "3996:49:130" } ] }, @@ -9185,49 +9201,49 @@ "kind": "function", "modifiers": [], "name": "testGroupInitDefault", - "nameLocation": "3569:20:117", + "nameLocation": "3569:20:130", "parameters": { - "id": 71829, + "id": 72615, "nodeType": "ParameterList", "parameters": [], - "src": "3589:2:117" + "src": "3589:2:130" }, "returnParameters": { - "id": 71830, + "id": 72616, "nodeType": "ParameterList", "parameters": [], - "src": "3599:0:117" + "src": "3599:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72094, + "id": 72880, "nodeType": "FunctionDefinition", - "src": "4058:1298:117", + "src": "4058:1298:130", "nodes": [], "body": { - "id": 72093, + "id": 72879, "nodeType": "Block", - "src": "4105:1251:117", + "src": "4105:1251:130", "nodes": [], "statements": [ { "assignments": [ - 71897 + 72683 ], "declarations": [ { "constant": false, - "id": 71897, + "id": 72683, "mutability": "mutable", "name": "membersAmt", - "nameLocation": "4123:10:117", + "nameLocation": "4123:10:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4115:18:117", + "scope": 72879, + "src": "4115:18:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9235,10 +9251,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71896, + "id": 72682, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4115:7:117", + "src": "4115:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9247,17 +9263,17 @@ "visibility": "internal" } ], - "id": 71899, + "id": 72685, "initialValue": { "hexValue": "33", - "id": 71898, + "id": 72684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4136:1:117", + "src": "4136:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -9265,22 +9281,22 @@ "value": "3" }, "nodeType": "VariableDeclarationStatement", - "src": "4115:22:117" + "src": "4115:22:130" }, { "assignments": [ - 71901 + 72687 ], "declarations": [ { "constant": false, - "id": 71901, + "id": 72687, "mutability": "mutable", "name": "firsPoints", - "nameLocation": "4154:10:117", + "nameLocation": "4154:10:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4147:17:117", + "scope": 72879, + "src": "4147:17:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9288,10 +9304,10 @@ "typeString": "uint16" }, "typeName": { - "id": 71900, + "id": 72686, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "4147:6:117", + "src": "4147:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9300,17 +9316,17 @@ "visibility": "internal" } ], - "id": 71903, + "id": 72689, "initialValue": { "hexValue": "31", - "id": 71902, + "id": 72688, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4167:1:117", + "src": "4167:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -9318,22 +9334,22 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "4147:21:117" + "src": "4147:21:130" }, { "assignments": [ - 71905 + 72691 ], "declarations": [ { "constant": false, - "id": 71905, + "id": 72691, "mutability": "mutable", "name": "secondPoints", - "nameLocation": "4185:12:117", + "nameLocation": "4185:12:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4178:19:117", + "scope": 72879, + "src": "4178:19:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9341,10 +9357,10 @@ "typeString": "uint16" }, "typeName": { - "id": 71904, + "id": 72690, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "4178:6:117", + "src": "4178:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9353,17 +9369,17 @@ "visibility": "internal" } ], - "id": 71907, + "id": 72693, "initialValue": { "hexValue": "35", - "id": 71906, + "id": 72692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4200:1:117", + "src": "4200:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -9371,22 +9387,22 @@ "value": "5" }, "nodeType": "VariableDeclarationStatement", - "src": "4178:23:117" + "src": "4178:23:130" }, { "assignments": [ - 71912 + 72698 ], "declarations": [ { "constant": false, - "id": 71912, + "id": 72698, "mutability": "mutable", "name": "datas", - "nameLocation": "4227:5:117", + "nameLocation": "4227:5:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4212:20:117", + "scope": 72879, + "src": "4212:20:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9395,18 +9411,18 @@ }, "typeName": { "baseType": { - "id": 71910, + "id": 72696, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4212:5:117", + "src": "4212:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, - "id": 71911, + "id": 72697, "nodeType": "ArrayTypeName", - "src": "4212:7:117", + "src": "4212:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" @@ -9415,19 +9431,19 @@ "visibility": "internal" } ], - "id": 71918, + "id": 72704, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 71916, + "id": 72702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4247:1:117", + "src": "4247:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -9442,38 +9458,38 @@ "typeString": "int_const 2" } ], - "id": 71915, + "id": 72701, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4235:11:117", + "src": "4235:11:130", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory[] memory)" }, "typeName": { "baseType": { - "id": 71913, + "id": 72699, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4239:5:117", + "src": "4239:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, - "id": 71914, + "id": 72700, "nodeType": "ArrayTypeName", - "src": "4239:7:117", + "src": "4239:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" } } }, - "id": 71917, + "id": 72703, "isConstant": false, "isLValue": false, "isPure": true, @@ -9482,7 +9498,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4235:14:117", + "src": "4235:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", @@ -9490,22 +9506,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4212:37:117" + "src": "4212:37:130" }, { "assignments": [ - 71923 + 72709 ], "declarations": [ { "constant": false, - "id": 71923, + "id": 72709, "mutability": "mutable", "name": "points", - "nameLocation": "4275:6:117", + "nameLocation": "4275:6:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4259:22:117", + "scope": 72879, + "src": "4259:22:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9514,18 +9530,18 @@ }, "typeName": { "baseType": { - "id": 71921, + "id": 72707, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "4259:6:117", + "src": "4259:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71922, + "id": 72708, "nodeType": "ArrayTypeName", - "src": "4259:8:117", + "src": "4259:8:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" @@ -9534,19 +9550,19 @@ "visibility": "internal" } ], - "id": 71929, + "id": 72715, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 71927, + "id": 72713, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4297:1:117", + "src": "4297:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -9561,38 +9577,38 @@ "typeString": "int_const 2" } ], - "id": 71926, + "id": 72712, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4284:12:117", + "src": "4284:12:130", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint16[] memory)" }, "typeName": { "baseType": { - "id": 71924, + "id": 72710, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "4288:6:117", + "src": "4288:6:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71925, + "id": 72711, "nodeType": "ArrayTypeName", - "src": "4288:8:117", + "src": "4288:8:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" } } }, - "id": 71928, + "id": 72714, "isConstant": false, "isLValue": false, "isPure": true, @@ -9601,7 +9617,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4284:15:117", + "src": "4284:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", @@ -9609,39 +9625,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4259:40:117" + "src": "4259:40:130" }, { "expression": { - "id": 71939, + "id": 72725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71930, + "id": 72716, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71912, - "src": "4310:5:117", + "referencedDeclaration": 72698, + "src": "4310:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, - "id": 71932, + "id": 72718, "indexExpression": { "hexValue": "30", - "id": 71931, + "id": 72717, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4316:1:117", + "src": "4316:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -9653,7 +9669,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4310:8:117", + "src": "4310:8:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -9666,41 +9682,41 @@ { "expression": { "expression": { - "id": 71935, + "id": 72721, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "4338:17:117", + "referencedDeclaration": 72162, + "src": "4338:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71936, + "id": 72722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4356:22:117", + "memberLocation": "4356:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "4338:40:117", + "referencedDeclaration": 7872, + "src": "4338:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 71937, + "id": 72723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4379:8:117", + "memberLocation": "4379:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "4338:49:117", + "src": "4338:49:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -9715,32 +9731,32 @@ } ], "expression": { - "id": 71933, + "id": 72719, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "4321:3:117", + "src": "4321:3:130", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 71934, + "id": 72720, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "4325:12:117", + "memberLocation": "4325:12:130", "memberName": "encodePacked", "nodeType": "MemberAccess", - "src": "4321:16:117", + "src": "4321:16:130", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 71938, + "id": 72724, "isConstant": false, "isLValue": false, "isPure": false, @@ -9749,54 +9765,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4321:67:117", + "src": "4321:67:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "src": "4310:78:117", + "src": "4310:78:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 71940, + "id": 72726, "nodeType": "ExpressionStatement", - "src": "4310:78:117" + "src": "4310:78:130" }, { "expression": { - "id": 71951, + "id": 72737, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71941, + "id": 72727, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71912, - "src": "4398:5:117", + "referencedDeclaration": 72698, + "src": "4398:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, - "id": 71943, + "id": 72729, "indexExpression": { "hexValue": "31", - "id": 71942, + "id": 72728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4404:1:117", + "src": "4404:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -9808,7 +9824,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4398:8:117", + "src": "4398:8:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -9821,41 +9837,41 @@ { "expression": { "expression": { - "id": 71946, + "id": 72732, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "4432:17:117", + "referencedDeclaration": 72162, + "src": "4432:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 71947, + "id": 72733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4450:15:117", + "memberLocation": "4450:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "4432:33:117", + "referencedDeclaration": 7856, + "src": "4432:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 71948, + "id": 72734, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4466:8:117", + "memberLocation": "4466:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "4432:42:117", + "src": "4432:42:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -9863,14 +9879,14 @@ }, { "hexValue": "617665727972616e646f6d737472696e67", - "id": 71949, + "id": 72735, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4476:19:117", + "src": "4476:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -9890,32 +9906,32 @@ } ], "expression": { - "id": 71944, + "id": 72730, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "4409:3:117", + "src": "4409:3:130", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 71945, + "id": 72731, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "4413:18:117", + "memberLocation": "4413:18:130", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", - "src": "4409:22:117", + "src": "4409:22:130", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 71950, + "id": 72736, "isConstant": false, "isLValue": false, "isPure": false, @@ -9924,54 +9940,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4409:87:117", + "src": "4409:87:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "src": "4398:98:117", + "src": "4398:98:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 71952, + "id": 72738, "nodeType": "ExpressionStatement", - "src": "4398:98:117" + "src": "4398:98:130" }, { "expression": { - "id": 71957, + "id": 72743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71953, + "id": 72739, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71923, - "src": "4507:6:117", + "referencedDeclaration": 72709, + "src": "4507:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 71955, + "id": 72741, "indexExpression": { "hexValue": "30", - "id": 71954, + "id": 72740, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4514:1:117", + "src": "4514:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -9983,7 +9999,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4507:9:117", + "src": "4507:9:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -9992,58 +10008,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 71956, + "id": 72742, "name": "firsPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71901, - "src": "4519:10:117", + "referencedDeclaration": 72687, + "src": "4519:10:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "4507:22:117", + "src": "4507:22:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71958, + "id": 72744, "nodeType": "ExpressionStatement", - "src": "4507:22:117" + "src": "4507:22:130" }, { "expression": { - "id": 71963, + "id": 72749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 71959, + "id": 72745, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71923, - "src": "4539:6:117", + "referencedDeclaration": 72709, + "src": "4539:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 71961, + "id": 72747, "indexExpression": { "hexValue": "31", - "id": 71960, + "id": 72746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4546:1:117", + "src": "4546:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -10055,7 +10071,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4539:9:117", + "src": "4539:9:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -10064,37 +10080,37 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 71962, + "id": 72748, "name": "secondPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71905, - "src": "4551:12:117", + "referencedDeclaration": 72691, + "src": "4551:12:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "src": "4539:24:117", + "src": "4539:24:130", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 71964, + "id": 72750, "nodeType": "ExpressionStatement", - "src": "4539:24:117" + "src": "4539:24:130" }, { "expression": { "arguments": [ { - "id": 71968, + "id": 72754, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "4583:5:117", + "referencedDeclaration": 72166, + "src": "4583:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10109,33 +10125,33 @@ } ], "expression": { - "id": 71965, + "id": 72751, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4574:2:117", + "referencedDeclaration": 13541, + "src": "4574:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71967, + "id": 72753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4577:5:117", + "memberLocation": "4577:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4574:8:117", + "referencedDeclaration": 24720, + "src": "4574:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 71969, + "id": 72755, "isConstant": false, "isLValue": false, "isPure": false, @@ -10144,16 +10160,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4574:15:117", + "src": "4574:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71970, + "id": 72756, "nodeType": "ExpressionStatement", - "src": "4574:15:117" + "src": "4574:15:130" }, { "expression": { @@ -10161,14 +10177,14 @@ { "arguments": [ { - "id": 71976, + "id": 72762, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "4633:17:117", + "referencedDeclaration": 72162, + "src": "4633:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -10176,30 +10192,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 71975, + "id": 72761, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4625:7:117", + "src": "4625:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71974, + "id": 72760, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4625:7:117", + "src": "4625:7:130", "typeDescriptions": {} } }, - "id": 71977, + "id": 72763, "isConstant": false, "isLValue": false, "isPure": false, @@ -10208,7 +10224,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4625:26:117", + "src": "4625:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10216,24 +10232,24 @@ } }, { - "id": 71978, + "id": 72764, "name": "datas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71912, - "src": "4653:5:117", + "referencedDeclaration": 72698, + "src": "4653:5:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, { - "id": 71979, + "id": 72765, "name": "points", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71923, - "src": "4660:6:117", + "referencedDeclaration": 72709, + "src": "4660:6:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" @@ -10256,33 +10272,33 @@ } ], "expression": { - "id": 71971, + "id": 72757, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4599:3:117", + "referencedDeclaration": 70567, + "src": "4599:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 71973, + "id": 72759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4603:21:117", + "memberLocation": "4603:21:130", "memberName": "setInteractionWeights", "nodeType": "MemberAccess", "referencedDeclaration": 1309, - "src": "4599:25:117", + "src": "4599:25:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory[] memory,uint16[] memory) external" } }, - "id": 71980, + "id": 72766, "isConstant": false, "isLValue": false, "isPure": false, @@ -10291,31 +10307,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4599:68:117", + "src": "4599:68:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 71981, + "id": 72767, "nodeType": "ExpressionStatement", - "src": "4599:68:117" + "src": "4599:68:130" }, { "assignments": [ - 71983 + 72769 ], "declarations": [ { "constant": false, - "id": 71983, + "id": 72769, "mutability": "mutable", "name": "i", - "nameLocation": "4686:1:117", + "nameLocation": "4686:1:130", "nodeType": "VariableDeclaration", - "scope": 72093, - "src": "4678:9:117", + "scope": 72879, + "src": "4678:9:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10323,10 +10339,10 @@ "typeString": "uint256" }, "typeName": { - "id": 71982, + "id": 72768, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4678:7:117", + "src": "4678:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10335,17 +10351,17 @@ "visibility": "internal" } ], - "id": 71985, + "id": 72771, "initialValue": { "hexValue": "31", - "id": 71984, + "id": 72770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4690:1:117", + "src": "4690:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -10353,13 +10369,13 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "4678:13:117" + "src": "4678:13:130" }, { "body": { - "id": 72077, + "id": 72863, "nodeType": "Block", - "src": "4719:528:117", + "src": "4719:528:130", "statements": [ { "expression": { @@ -10369,12 +10385,12 @@ { "arguments": [ { - "id": 71998, + "id": 72784, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4758:1:117", + "referencedDeclaration": 72769, + "src": "4758:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10388,26 +10404,26 @@ "typeString": "uint256" } ], - "id": 71997, + "id": 72783, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4750:7:117", + "src": "4750:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 71996, + "id": 72782, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "4750:7:117", + "src": "4750:7:130", "typeDescriptions": {} } }, - "id": 71999, + "id": 72785, "isConstant": false, "isLValue": false, "isPure": false, @@ -10416,7 +10432,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4750:10:117", + "src": "4750:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10431,26 +10447,26 @@ "typeString": "uint160" } ], - "id": 71995, + "id": 72781, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4742:7:117", + "src": "4742:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 71994, + "id": 72780, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4742:7:117", + "src": "4742:7:130", "typeDescriptions": {} } }, - "id": 72000, + "id": 72786, "isConstant": false, "isLValue": false, "isPure": false, @@ -10459,7 +10475,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4742:19:117", + "src": "4742:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10475,33 +10491,33 @@ } ], "expression": { - "id": 71991, + "id": 72777, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4733:2:117", + "referencedDeclaration": 13541, + "src": "4733:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 71993, + "id": 72779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4736:5:117", + "memberLocation": "4736:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4733:8:117", + "referencedDeclaration": 24720, + "src": "4733:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72001, + "id": 72787, "isConstant": false, "isLValue": false, "isPure": false, @@ -10510,16 +10526,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4733:29:117", + "src": "4733:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72002, + "id": 72788, "nodeType": "ExpressionStatement", - "src": "4733:29:117" + "src": "4733:29:130" }, { "expression": { @@ -10527,12 +10543,12 @@ { "arguments": [ { - "id": 72008, + "id": 72794, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4797:1:117", + "referencedDeclaration": 72769, + "src": "4797:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10547,33 +10563,33 @@ } ], "expression": { - "id": 72006, + "id": 72792, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4785:2:117", + "referencedDeclaration": 13541, + "src": "4785:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72007, + "id": 72793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4788:8:117", + "memberLocation": "4788:8:130", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "4785:11:117", + "referencedDeclaration": 24129, + "src": "4785:11:130", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 72009, + "id": 72795, "isConstant": false, "isLValue": false, "isPure": false, @@ -10582,7 +10598,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4785:14:117", + "src": "4785:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -10591,14 +10607,14 @@ }, { "hexValue": "75726c6c6c", - "id": 72010, + "id": 72796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4801:7:117", + "src": "4801:7:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -10607,14 +10623,14 @@ }, { "hexValue": "31", - "id": 72011, + "id": 72797, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4810:1:117", + "src": "4810:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -10623,14 +10639,14 @@ }, { "hexValue": "34", - "id": 72012, + "id": 72798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4813:1:117", + "src": "4813:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -10640,14 +10656,14 @@ { "arguments": [ { - "id": 72015, + "id": 72801, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "4824:4:117", + "referencedDeclaration": 70573, + "src": "4824:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -10655,30 +10671,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72014, + "id": 72800, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4816:7:117", + "src": "4816:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72013, + "id": 72799, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4816:7:117", + "src": "4816:7:130", "typeDescriptions": {} } }, - "id": 72016, + "id": 72802, "isConstant": false, "isLValue": false, "isPure": false, @@ -10687,7 +10703,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4816:13:117", + "src": "4816:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10719,33 +10735,33 @@ } ], "expression": { - "id": 72003, + "id": 72789, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "4776:3:117", + "referencedDeclaration": 70549, + "src": "4776:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72005, + "id": 72791, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4780:4:117", + "memberLocation": "4780:4:130", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "4776:8:117", + "src": "4776:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 72017, + "id": 72803, "isConstant": false, "isLValue": false, "isPure": false, @@ -10754,16 +10770,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4776:54:117", + "src": "4776:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72018, + "id": 72804, "nodeType": "ExpressionStatement", - "src": "4776:54:117" + "src": "4776:54:130" }, { "expression": { @@ -10773,33 +10789,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72025, + "id": 72811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72022, + "id": 72808, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "4853:5:117", + "src": "4853:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72023, + "id": 72809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4859:9:117", + "memberLocation": "4859:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "4853:15:117", + "src": "4853:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10809,21 +10825,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 72024, + "id": 72810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4871:1:117", + "src": "4871:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "4853:19:117", + "src": "4853:19:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10838,33 +10854,33 @@ } ], "expression": { - "id": 72019, + "id": 72805, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4845:2:117", + "referencedDeclaration": 13541, + "src": "4845:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72021, + "id": 72807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4848:4:117", + "memberLocation": "4848:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "4845:7:117", + "referencedDeclaration": 24657, + "src": "4845:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72026, + "id": 72812, "isConstant": false, "isLValue": false, "isPure": false, @@ -10873,16 +10889,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4845:28:117", + "src": "4845:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72027, + "id": 72813, "nodeType": "ExpressionStatement", - "src": "4845:28:117" + "src": "4845:28:130" }, { "expression": { @@ -10892,12 +10908,12 @@ { "arguments": [ { - "id": 72035, + "id": 72821, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4913:1:117", + "referencedDeclaration": 72769, + "src": "4913:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10911,26 +10927,26 @@ "typeString": "uint256" } ], - "id": 72034, + "id": 72820, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4905:7:117", + "src": "4905:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 72033, + "id": 72819, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "4905:7:117", + "src": "4905:7:130", "typeDescriptions": {} } }, - "id": 72036, + "id": 72822, "isConstant": false, "isLValue": false, "isPure": false, @@ -10939,7 +10955,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4905:10:117", + "src": "4905:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -10954,26 +10970,26 @@ "typeString": "uint160" } ], - "id": 72032, + "id": 72818, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4897:7:117", + "src": "4897:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72031, + "id": 72817, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4897:7:117", + "src": "4897:7:130", "typeDescriptions": {} } }, - "id": 72037, + "id": 72823, "isConstant": false, "isLValue": false, "isPure": false, @@ -10982,7 +10998,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4897:19:117", + "src": "4897:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -10998,33 +11014,33 @@ } ], "expression": { - "id": 72028, + "id": 72814, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4888:2:117", + "referencedDeclaration": 13541, + "src": "4888:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72030, + "id": 72816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4891:5:117", + "memberLocation": "4891:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4888:8:117", + "referencedDeclaration": 24720, + "src": "4888:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72038, + "id": 72824, "isConstant": false, "isLValue": false, "isPure": false, @@ -11033,16 +11049,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4888:29:117", + "src": "4888:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72039, + "id": 72825, "nodeType": "ExpressionStatement", - "src": "4888:29:117" + "src": "4888:29:130" }, { "expression": { @@ -11053,7 +11069,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72044, + "id": 72830, "isConstant": false, "isLValue": false, "isPure": false, @@ -11063,18 +11079,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72042, + "id": 72828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72040, + "id": 72826, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4932:1:117", + "referencedDeclaration": 72769, + "src": "4932:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11084,21 +11100,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72041, + "id": 72827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4936:1:117", + "src": "4936:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "4932:5:117", + "src": "4932:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11108,35 +11124,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72043, + "id": 72829, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4941:1:117", + "src": "4941:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "4932:10:117", + "src": "4932:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72045, + "id": 72831, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4931:12:117", + "src": "4931:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11146,14 +11162,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72051, + "id": 72837, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5057:19:117", + "src": "5057:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -11169,33 +11185,33 @@ } ], "expression": { - "id": 72049, + "id": 72835, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "5023:17:117", + "referencedDeclaration": 72162, + "src": "5023:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72050, + "id": 72836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5041:15:117", + "memberLocation": "5041:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "5023:33:117", + "referencedDeclaration": 7856, + "src": "5023:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72052, + "id": 72838, "isConstant": false, "isLValue": false, "isPure": false, @@ -11204,52 +11220,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5023:54:117", + "src": "5023:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72053, + "id": 72839, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "4931:146:117", + "src": "4931:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72046, + "id": 72832, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "4962:17:117", + "referencedDeclaration": 72162, + "src": "4962:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72047, + "id": 72833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4980:22:117", + "memberLocation": "4980:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "4962:40:117", + "referencedDeclaration": 7872, + "src": "4962:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72048, + "id": 72834, "isConstant": false, "isLValue": false, "isPure": false, @@ -11258,7 +11274,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4962:42:117", + "src": "4962:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11270,9 +11286,9 @@ "typeString": "uint256" } }, - "id": 72054, + "id": 72840, "nodeType": "ExpressionStatement", - "src": "4931:146:117" + "src": "4931:146:130" }, { "expression": { @@ -11282,33 +11298,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72061, + "id": 72847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72058, + "id": 72844, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "5100:5:117", + "src": "5100:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72059, + "id": 72845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5106:9:117", + "memberLocation": "5106:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "5100:15:117", + "src": "5100:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11318,21 +11334,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 72060, + "id": 72846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5118:1:117", + "src": "5118:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "5100:19:117", + "src": "5100:19:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11347,33 +11363,33 @@ } ], "expression": { - "id": 72055, + "id": 72841, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5092:2:117", + "referencedDeclaration": 13541, + "src": "5092:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72057, + "id": 72843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5095:4:117", + "memberLocation": "5095:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "5092:7:117", + "referencedDeclaration": 24657, + "src": "5092:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72062, + "id": 72848, "isConstant": false, "isLValue": false, "isPure": false, @@ -11382,25 +11398,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5092:28:117", + "src": "5092:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72063, + "id": 72849, "nodeType": "ExpressionStatement", - "src": "5092:28:117" + "src": "5092:28:130" }, { - "id": 72067, + "id": 72853, "nodeType": "UncheckedBlock", - "src": "5135:46:117", + "src": "5135:46:130", "statements": [ { "expression": { - "id": 72065, + "id": 72851, "isConstant": false, "isLValue": false, "isPure": false, @@ -11408,14 +11424,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "5163:3:117", + "src": "5163:3:130", "subExpression": { - "id": 72064, + "id": 72850, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "5165:1:117", + "referencedDeclaration": 72769, + "src": "5165:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11426,9 +11442,9 @@ "typeString": "uint256" } }, - "id": 72066, + "id": 72852, "nodeType": "ExpressionStatement", - "src": "5163:3:117" + "src": "5163:3:130" } ] }, @@ -11438,14 +11454,14 @@ { "arguments": [ { - "id": 72073, + "id": 72859, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5230:4:117", + "referencedDeclaration": 70573, + "src": "5230:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -11453,30 +11469,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72072, + "id": 72858, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5222:7:117", + "src": "5222:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72071, + "id": 72857, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5222:7:117", + "src": "5222:7:130", "typeDescriptions": {} } }, - "id": 72074, + "id": 72860, "isConstant": false, "isLValue": false, "isPure": false, @@ -11485,7 +11501,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5222:13:117", + "src": "5222:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -11501,33 +11517,33 @@ } ], "expression": { - "id": 72068, + "id": 72854, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5195:3:117", + "referencedDeclaration": 70567, + "src": "5195:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72070, + "id": 72856, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5199:22:117", + "memberLocation": "5199:22:130", "memberName": "updateCommitmentLevels", "nodeType": "MemberAccess", "referencedDeclaration": 1346, - "src": "5195:26:117", + "src": "5195:26:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72075, + "id": 72861, "isConstant": false, "isLValue": false, "isPure": false, @@ -11536,16 +11552,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5195:41:117", + "src": "5195:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72076, + "id": 72862, "nodeType": "ExpressionStatement", - "src": "5195:41:117" + "src": "5195:41:130" } ] }, @@ -11554,18 +11570,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 71990, + "id": 72776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 71988, + "id": 72774, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4709:1:117", + "referencedDeclaration": 72769, + "src": "4709:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11575,46 +11591,46 @@ "operator": "<", "rightExpression": { "hexValue": "313030", - "id": 71989, + "id": 72775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4713:3:117", + "src": "4713:3:130", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "4709:7:117", + "src": "4709:7:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 72078, + "id": 72864, "initializationExpression": { "expression": { - "id": 71986, + "id": 72772, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71983, - "src": "4706:1:117", + "referencedDeclaration": 72769, + "src": "4706:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 71987, + "id": 72773, "nodeType": "ExpressionStatement", - "src": "4706:1:117" + "src": "4706:1:130" }, "nodeType": "ForStatement", - "src": "4701:546:117" + "src": "4701:546:130" }, { "expression": { @@ -11624,7 +11640,7 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72089, + "id": 72875, "isConstant": false, "isLValue": false, "isPure": false, @@ -11635,14 +11651,14 @@ { "arguments": [ { - "id": 72084, + "id": 72870, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5293:4:117", + "referencedDeclaration": 70573, + "src": "5293:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -11650,30 +11666,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72083, + "id": 72869, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5285:7:117", + "src": "5285:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72082, + "id": 72868, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5285:7:117", + "src": "5285:7:130", "typeDescriptions": {} } }, - "id": 72085, + "id": 72871, "isConstant": false, "isLValue": false, "isPure": false, @@ -11682,7 +11698,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5285:13:117", + "src": "5285:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -11698,33 +11714,33 @@ } ], "expression": { - "id": 72080, + "id": 72866, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5267:3:117", + "referencedDeclaration": 70567, + "src": "5267:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72081, + "id": 72867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5271:13:117", + "memberLocation": "5271:13:130", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "5267:17:117", + "src": "5267:17:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 72086, + "id": 72872, "isConstant": false, "isLValue": false, "isPure": false, @@ -11733,23 +11749,23 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5267:32:117", + "src": "5267:32:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 72087, + "id": 72873, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5300:10:117", + "memberLocation": "5300:10:130", "memberName": "lastPeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1209, - "src": "5267:43:117", + "src": "5267:43:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -11759,21 +11775,21 @@ "operator": ">", "rightExpression": { "hexValue": "31", - "id": 72088, + "id": 72874, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5313:1:117", + "src": "5313:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "5267:47:117", + "src": "5267:47:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -11781,14 +11797,14 @@ }, { "hexValue": "6c617374506572696f64206e6f7420626c6f636b2e74696d657374616d70", - "id": 72090, + "id": 72876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5316:32:117", + "src": "5316:32:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_56ad98f48a74fb4c51b0eae3acc0e530bb9eda1bd40d564bb28bf2b0fe1498c1", "typeString": "literal_string \"lastPeriod not block.timestamp\"" @@ -11807,21 +11823,21 @@ "typeString": "literal_string \"lastPeriod not block.timestamp\"" } ], - "id": 72079, + "id": 72865, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5256:10:117", + "referencedDeclaration": 11481, + "src": "5256:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72091, + "id": 72877, "isConstant": false, "isLValue": false, "isPure": false, @@ -11830,16 +11846,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5256:93:117", + "src": "5256:93:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72092, + "id": 72878, "nodeType": "ExpressionStatement", - "src": "5256:93:117" + "src": "5256:93:130" } ] }, @@ -11848,33 +11864,33 @@ "kind": "function", "modifiers": [], "name": "testWithSameCommitmentPeriod", - "nameLocation": "4067:28:117", + "nameLocation": "4067:28:130", "parameters": { - "id": 71894, + "id": 72680, "nodeType": "ParameterList", "parameters": [], - "src": "4095:2:117" + "src": "4095:2:130" }, "returnParameters": { - "id": 71895, + "id": 72681, "nodeType": "ParameterList", "parameters": [], - "src": "4105:0:117" + "src": "4105:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72190, + "id": 72976, "nodeType": "FunctionDefinition", - "src": "5362:672:117", + "src": "5362:672:130", "nodes": [], "body": { - "id": 72189, + "id": 72975, "nodeType": "Block", - "src": "5410:624:117", + "src": "5410:624:130", "nodes": [], "statements": [ { @@ -11885,33 +11901,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72103, + "id": 72889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72100, + "id": 72886, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "5428:5:117", + "src": "5428:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72101, + "id": 72887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5434:9:117", + "memberLocation": "5434:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "5428:15:117", + "src": "5428:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11921,14 +11937,14 @@ "operator": "+", "rightExpression": { "hexValue": "313030", - "id": 72102, + "id": 72888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5446:8:117", + "src": "5446:8:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_8640000_by_1", @@ -11936,7 +11952,7 @@ }, "value": "100" }, - "src": "5428:26:117", + "src": "5428:26:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11951,33 +11967,33 @@ } ], "expression": { - "id": 72097, + "id": 72883, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5420:2:117", + "referencedDeclaration": 13541, + "src": "5420:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72099, + "id": 72885, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5423:4:117", + "memberLocation": "5423:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "5420:7:117", + "referencedDeclaration": 24657, + "src": "5420:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72104, + "id": 72890, "isConstant": false, "isLValue": false, "isPure": false, @@ -11986,34 +12002,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5420:35:117", + "src": "5420:35:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72105, + "id": 72891, "nodeType": "ExpressionStatement", - "src": "5420:35:117" + "src": "5420:35:130" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 72106, + "id": 72892, "name": "testWithSameCommitmentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72094, - "src": "5465:28:117", + "referencedDeclaration": 72880, + "src": "5465:28:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72107, + "id": 72893, "isConstant": false, "isLValue": false, "isPure": false, @@ -12022,31 +12038,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5465:30:117", + "src": "5465:30:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72108, + "id": 72894, "nodeType": "ExpressionStatement", - "src": "5465:30:117" + "src": "5465:30:130" }, { "assignments": [ - 72111 + 72897 ], "declarations": [ { "constant": false, - "id": 72111, + "id": 72897, "mutability": "mutable", "name": "GSbefore", - "nameLocation": "5523:8:117", + "nameLocation": "5523:8:130", "nodeType": "VariableDeclaration", - "scope": 72189, - "src": "5505:26:117", + "scope": 72975, + "src": "5505:26:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12054,20 +12070,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 72110, + "id": 72896, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72109, + "id": 72895, "name": "groupState", "nameLocations": [ - "5505:10:117" + "5505:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "5505:10:117" + "src": "5505:10:130" }, "referencedDeclaration": 1229, - "src": "5505:10:117", + "src": "5505:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -12076,20 +12092,20 @@ "visibility": "internal" } ], - "id": 72119, + "id": 72905, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72116, + "id": 72902, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5560:4:117", + "referencedDeclaration": 70573, + "src": "5560:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -12097,30 +12113,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72115, + "id": 72901, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5552:7:117", + "src": "5552:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72114, + "id": 72900, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5552:7:117", + "src": "5552:7:130", "typeDescriptions": {} } }, - "id": 72117, + "id": 72903, "isConstant": false, "isLValue": false, "isPure": false, @@ -12129,7 +12145,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5552:13:117", + "src": "5552:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12145,33 +12161,33 @@ } ], "expression": { - "id": 72112, + "id": 72898, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5534:3:117", + "referencedDeclaration": 70567, + "src": "5534:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72113, + "id": 72899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5538:13:117", + "memberLocation": "5538:13:130", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "5534:17:117", + "src": "5534:17:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 72118, + "id": 72904, "isConstant": false, "isLValue": false, "isPure": false, @@ -12180,7 +12196,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5534:32:117", + "src": "5534:32:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -12188,18 +12204,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5505:61:117" + "src": "5505:61:130" }, { "expression": { "arguments": [ { - "id": 72123, + "id": 72909, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "5586:2:117", + "referencedDeclaration": 70587, + "src": "5586:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12214,33 +12230,33 @@ } ], "expression": { - "id": 72120, + "id": 72906, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5577:2:117", + "referencedDeclaration": 13541, + "src": "5577:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72122, + "id": 72908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5580:5:117", + "memberLocation": "5580:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "5577:8:117", + "referencedDeclaration": 24720, + "src": "5577:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72124, + "id": 72910, "isConstant": false, "isLValue": false, "isPure": false, @@ -12249,31 +12265,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5577:12:117", + "src": "5577:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72125, + "id": 72911, "nodeType": "ExpressionStatement", - "src": "5577:12:117" + "src": "5577:12:130" }, { "assignments": [ - 72127 + 72913 ], "declarations": [ { "constant": false, - "id": 72127, + "id": 72913, "mutability": "mutable", "name": "nextUpdateAt", - "nameLocation": "5607:12:117", + "nameLocation": "5607:12:130", "nodeType": "VariableDeclaration", - "scope": 72189, - "src": "5599:20:117", + "scope": 72975, + "src": "5599:20:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12281,10 +12297,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72126, + "id": 72912, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5599:7:117", + "src": "5599:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12293,20 +12309,20 @@ "visibility": "internal" } ], - "id": 72135, + "id": 72921, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72132, + "id": 72918, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5659:4:117", + "referencedDeclaration": 70573, + "src": "5659:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -12314,30 +12330,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72131, + "id": 72917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5651:7:117", + "src": "5651:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72130, + "id": 72916, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5651:7:117", + "src": "5651:7:130", "typeDescriptions": {} } }, - "id": 72133, + "id": 72919, "isConstant": false, "isLValue": false, "isPure": false, @@ -12346,7 +12362,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5651:13:117", + "src": "5651:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12362,33 +12378,33 @@ } ], "expression": { - "id": 72128, + "id": 72914, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5622:3:117", + "referencedDeclaration": 70567, + "src": "5622:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72129, + "id": 72915, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5626:24:117", + "memberLocation": "5626:24:130", "memberName": "periodicGroupStateUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1362, - "src": "5622:28:117", + "src": "5622:28:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) external returns (uint256)" } }, - "id": 72134, + "id": 72920, "isConstant": false, "isLValue": false, "isPure": false, @@ -12397,7 +12413,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5622:43:117", + "src": "5622:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12405,18 +12421,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5599:66:117" + "src": "5599:66:130" }, { "expression": { "arguments": [ { - "id": 72139, + "id": 72925, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "5684:2:117", + "referencedDeclaration": 70587, + "src": "5684:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12431,33 +12447,33 @@ } ], "expression": { - "id": 72136, + "id": 72922, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5675:2:117", + "referencedDeclaration": 13541, + "src": "5675:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72138, + "id": 72924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5678:5:117", + "memberLocation": "5678:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "5675:8:117", + "referencedDeclaration": 24720, + "src": "5675:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72140, + "id": 72926, "isConstant": false, "isLValue": false, "isPure": false, @@ -12466,16 +12482,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5675:12:117", + "src": "5675:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72141, + "id": 72927, "nodeType": "ExpressionStatement", - "src": "5675:12:117" + "src": "5675:12:130" }, { "expression": { @@ -12483,14 +12499,14 @@ { "arguments": [ { - "id": 72147, + "id": 72933, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5728:4:117", + "referencedDeclaration": 70573, + "src": "5728:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -12498,30 +12514,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72146, + "id": 72932, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5720:7:117", + "src": "5720:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72145, + "id": 72931, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5720:7:117", + "src": "5720:7:130", "typeDescriptions": {} } }, - "id": 72148, + "id": 72934, "isConstant": false, "isLValue": false, "isPure": false, @@ -12530,7 +12546,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5720:13:117", + "src": "5720:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12546,33 +12562,33 @@ } ], "expression": { - "id": 72142, + "id": 72928, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5697:3:117", + "referencedDeclaration": 70567, + "src": "5697:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72144, + "id": 72930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5701:18:117", + "memberLocation": "5701:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "5697:22:117", + "src": "5697:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72149, + "id": 72935, "isConstant": false, "isLValue": false, "isPure": false, @@ -12581,31 +12597,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5697:37:117", + "src": "5697:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72150, + "id": 72936, "nodeType": "ExpressionStatement", - "src": "5697:37:117" + "src": "5697:37:130" }, { "assignments": [ - 72153 + 72939 ], "declarations": [ { "constant": false, - "id": 72153, + "id": 72939, "mutability": "mutable", "name": "GSafer", - "nameLocation": "5763:6:117", + "nameLocation": "5763:6:130", "nodeType": "VariableDeclaration", - "scope": 72189, - "src": "5745:24:117", + "scope": 72975, + "src": "5745:24:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12613,20 +12629,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 72152, + "id": 72938, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72151, + "id": 72937, "name": "groupState", "nameLocations": [ - "5745:10:117" + "5745:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "5745:10:117" + "src": "5745:10:130" }, "referencedDeclaration": 1229, - "src": "5745:10:117", + "src": "5745:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -12635,20 +12651,20 @@ "visibility": "internal" } ], - "id": 72161, + "id": 72947, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72158, + "id": 72944, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "5798:4:117", + "referencedDeclaration": 70573, + "src": "5798:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -12656,30 +12672,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72157, + "id": 72943, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5790:7:117", + "src": "5790:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72156, + "id": 72942, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5790:7:117", + "src": "5790:7:130", "typeDescriptions": {} } }, - "id": 72159, + "id": 72945, "isConstant": false, "isLValue": false, "isPure": false, @@ -12688,7 +12704,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5790:13:117", + "src": "5790:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -12704,33 +12720,33 @@ } ], "expression": { - "id": 72154, + "id": 72940, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "5772:3:117", + "referencedDeclaration": 70567, + "src": "5772:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72155, + "id": 72941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5776:13:117", + "memberLocation": "5776:13:130", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "5772:17:117", + "src": "5772:17:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 72160, + "id": 72946, "isConstant": false, "isLValue": false, "isPure": false, @@ -12739,7 +12755,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5772:32:117", + "src": "5772:32:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -12747,22 +12763,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5745:59:117" + "src": "5745:59:130" }, { "expression": { - "id": 72168, + "id": 72954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 72162, + "id": 72948, "name": "nextUpdateAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72127, - "src": "5815:12:117", + "referencedDeclaration": 72913, + "src": "5815:12:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12775,34 +12791,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72167, + "id": 72953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72163, + "id": 72949, "name": "GSafer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72153, - "src": "5830:6:117", + "referencedDeclaration": 72939, + "src": "5830:6:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 72164, + "id": 72950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5837:10:117", + "memberLocation": "5837:10:130", "memberName": "lastPeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1209, - "src": "5830:17:117", + "src": "5830:17:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -12812,47 +12828,47 @@ "operator": "+", "rightExpression": { "expression": { - "id": 72165, + "id": 72951, "name": "GSafer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72153, - "src": "5850:6:117", + "referencedDeclaration": 72939, + "src": "5850:6:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 72166, + "id": 72952, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5857:1:117", + "memberLocation": "5857:1:130", "memberName": "p", "nodeType": "MemberAccess", "referencedDeclaration": 1221, - "src": "5850:8:117", + "src": "5850:8:130", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "src": "5830:28:117", + "src": "5830:28:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "5815:43:117", + "src": "5815:43:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72169, + "id": 72955, "nodeType": "ExpressionStatement", - "src": "5815:43:117" + "src": "5815:43:130" }, { "expression": { @@ -12862,18 +12878,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72174, + "id": 72960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72171, + "id": 72957, "name": "nextUpdateAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72127, - "src": "5880:12:117", + "referencedDeclaration": 72913, + "src": "5880:12:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12883,32 +12899,32 @@ "operator": ">=", "rightExpression": { "expression": { - "id": 72172, + "id": 72958, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "5896:5:117", + "src": "5896:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72173, + "id": 72959, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5902:9:117", + "memberLocation": "5902:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "5896:15:117", + "src": "5896:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5880:31:117", + "src": "5880:31:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -12916,14 +12932,14 @@ }, { "hexValue": "73686f756c64206265206c61746572", - "id": 72175, + "id": 72961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5913:17:117", + "src": "5913:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_aa47daa7d0ad4ed285f2589d1da8eb0bafa3540b5db0f6484ebfee5dbe6c304f", "typeString": "literal_string \"should be later\"" @@ -12942,21 +12958,21 @@ "typeString": "literal_string \"should be later\"" } ], - "id": 72170, + "id": 72956, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5869:10:117", + "referencedDeclaration": 11481, + "src": "5869:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72176, + "id": 72962, "isConstant": false, "isLValue": false, "isPure": false, @@ -12965,16 +12981,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5869:62:117", + "src": "5869:62:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72177, + "id": 72963, "nodeType": "ExpressionStatement", - "src": "5869:62:117" + "src": "5869:62:130" }, { "expression": { @@ -12984,18 +13000,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72185, + "id": 72971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72179, + "id": 72965, "name": "nextUpdateAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72127, - "src": "5952:12:117", + "referencedDeclaration": 72913, + "src": "5952:12:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13008,34 +13024,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72184, + "id": 72970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72180, + "id": 72966, "name": "GSbefore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72111, - "src": "5968:8:117", + "referencedDeclaration": 72897, + "src": "5968:8:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 72181, + "id": 72967, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5977:10:117", + "memberLocation": "5977:10:130", "memberName": "lastPeriod", "nodeType": "MemberAccess", "referencedDeclaration": 1209, - "src": "5968:19:117", + "src": "5968:19:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -13045,39 +13061,39 @@ "operator": "+", "rightExpression": { "expression": { - "id": 72182, + "id": 72968, "name": "GSbefore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72111, - "src": "5990:8:117", + "referencedDeclaration": 72897, + "src": "5990:8:130", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", "typeString": "struct groupState memory" } }, - "id": 72183, + "id": 72969, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "5999:1:117", + "memberLocation": "5999:1:130", "memberName": "p", "nodeType": "MemberAccess", "referencedDeclaration": 1221, - "src": "5990:10:117", + "src": "5990:10:130", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, - "src": "5968:32:117", + "src": "5968:32:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "5952:48:117", + "src": "5952:48:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13085,14 +13101,14 @@ }, { "hexValue": "706572696f6420696e6372656d656e74206661756c74", - "id": 72186, + "id": 72972, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6002:24:117", + "src": "6002:24:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5eacb2c4d3df96e5c059532d8a68abd8cfa68e6a5b33bb3fc2e7d94ad028f382", "typeString": "literal_string \"period increment fault\"" @@ -13111,21 +13127,21 @@ "typeString": "literal_string \"period increment fault\"" } ], - "id": 72178, + "id": 72964, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "5941:10:117", + "referencedDeclaration": 11481, + "src": "5941:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72187, + "id": 72973, "isConstant": false, "isLValue": false, "isPure": false, @@ -13134,16 +13150,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5941:86:117", + "src": "5941:86:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72188, + "id": 72974, "nodeType": "ExpressionStatement", - "src": "5941:86:117" + "src": "5941:86:130" } ] }, @@ -13152,49 +13168,49 @@ "kind": "function", "modifiers": [], "name": "testSimpleGroupPeriodicUpdate", - "nameLocation": "5371:29:117", + "nameLocation": "5371:29:130", "parameters": { - "id": 72095, + "id": 72881, "nodeType": "ParameterList", "parameters": [], - "src": "5400:2:117" + "src": "5400:2:130" }, "returnParameters": { - "id": 72096, + "id": 72882, "nodeType": "ParameterList", "parameters": [], - "src": "5410:0:117" + "src": "5410:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72338, + "id": 73124, "nodeType": "FunctionDefinition", - "src": "6040:978:117", + "src": "6040:978:130", "nodes": [], "body": { - "id": 72337, + "id": 73123, "nodeType": "Block", - "src": "6081:937:117", + "src": "6081:937:130", "nodes": [], "statements": [ { "assignments": [ - 72194 + 72980 ], "declarations": [ { "constant": false, - "id": 72194, + "id": 72980, "mutability": "mutable", "name": "A55", - "nameLocation": "6099:3:117", + "nameLocation": "6099:3:130", "nodeType": "VariableDeclaration", - "scope": 72337, - "src": "6091:11:117", + "scope": 73123, + "src": "6091:11:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13202,10 +13218,10 @@ "typeString": "address" }, "typeName": { - "id": 72193, + "id": 72979, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6091:7:117", + "src": "6091:7:130", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13215,19 +13231,19 @@ "visibility": "internal" } ], - "id": 72199, + "id": 72985, "initialValue": { "arguments": [ { "hexValue": "35", - "id": 72197, + "id": 72983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6113:1:117", + "src": "6113:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -13242,26 +13258,26 @@ "typeString": "int_const 5" } ], - "id": 72196, + "id": 72982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6105:7:117", + "src": "6105:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72195, + "id": 72981, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6105:7:117", + "src": "6105:7:130", "typeDescriptions": {} } }, - "id": 72198, + "id": 72984, "isConstant": false, "isLValue": false, "isPure": true, @@ -13270,7 +13286,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6105:10:117", + "src": "6105:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -13278,7 +13294,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6091:24:117" + "src": "6091:24:130" }, { "expression": { @@ -13286,41 +13302,41 @@ { "expression": { "expression": { - "id": 72203, + "id": 72989, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "6142:16:117", + "src": "6142:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 72204, + "id": 72990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6159:12:117", + "memberLocation": "6159:12:130", "memberName": "Unauthorised", "nodeType": "MemberAccess", "referencedDeclaration": 1264, - "src": "6142:29:117", + "src": "6142:29:130", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 72205, + "id": 72991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6172:8:117", + "memberLocation": "6172:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "6142:38:117", + "src": "6142:38:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -13335,33 +13351,33 @@ } ], "expression": { - "id": 72200, + "id": 72986, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6126:2:117", + "referencedDeclaration": 13541, + "src": "6126:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72202, + "id": 72988, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6129:12:117", + "memberLocation": "6129:12:130", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "6126:15:117", + "referencedDeclaration": 24781, + "src": "6126:15:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 72206, + "id": 72992, "isConstant": false, "isLValue": false, "isPure": false, @@ -13370,31 +13386,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6126:55:117", + "src": "6126:55:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72207, + "id": 72993, "nodeType": "ExpressionStatement", - "src": "6126:55:117" + "src": "6126:55:130" }, { "assignments": [ - 72209 + 72995 ], "declarations": [ { "constant": false, - "id": 72209, + "id": 72995, "mutability": "mutable", "name": "prevScore", - "nameLocation": "6199:9:117", + "nameLocation": "6199:9:130", "nodeType": "VariableDeclaration", - "scope": 72337, - "src": "6191:17:117", + "scope": 73123, + "src": "6191:17:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13402,10 +13418,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72208, + "id": 72994, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6191:7:117", + "src": "6191:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13414,16 +13430,16 @@ "visibility": "internal" } ], - "id": 72218, + "id": 73004, "initialValue": { "arguments": [ { - "id": 72212, + "id": 72998, "name": "A55", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72194, - "src": "6234:3:117", + "referencedDeclaration": 72980, + "src": "6234:3:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13432,14 +13448,14 @@ { "arguments": [ { - "id": 72215, + "id": 73001, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6247:4:117", + "referencedDeclaration": 70573, + "src": "6247:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -13447,30 +13463,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72214, + "id": 73000, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6239:7:117", + "src": "6239:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72213, + "id": 72999, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6239:7:117", + "src": "6239:7:130", "typeDescriptions": {} } }, - "id": 72216, + "id": 73002, "isConstant": false, "isLValue": false, "isPure": false, @@ -13479,7 +13495,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6239:13:117", + "src": "6239:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -13499,33 +13515,33 @@ } ], "expression": { - "id": 72210, + "id": 72996, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6211:3:117", + "referencedDeclaration": 70567, + "src": "6211:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72211, + "id": 72997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6215:18:117", + "memberLocation": "6215:18:130", "memberName": "updateIndividualLR", "nodeType": "MemberAccess", "referencedDeclaration": 1355, - "src": "6211:22:117", + "src": "6211:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) external returns (uint256)" } }, - "id": 72217, + "id": 73003, "isConstant": false, "isLValue": false, "isPure": false, @@ -13534,7 +13550,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6211:42:117", + "src": "6211:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13542,7 +13558,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6191:62:117" + "src": "6191:62:130" }, { "expression": { @@ -13550,41 +13566,41 @@ { "expression": { "expression": { - "id": 72222, + "id": 73008, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "6280:16:117", + "src": "6280:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 72223, + "id": 73009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6297:13:117", + "memberLocation": "6297:13:130", "memberName": "ZeroUnallawed", "nodeType": "MemberAccess", "referencedDeclaration": 1282, - "src": "6280:30:117", + "src": "6280:30:130", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 72224, + "id": 73010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6311:8:117", + "memberLocation": "6311:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "6280:39:117", + "src": "6280:39:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -13599,33 +13615,33 @@ } ], "expression": { - "id": 72219, + "id": 73005, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6264:2:117", + "referencedDeclaration": 13541, + "src": "6264:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72221, + "id": 73007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6267:12:117", + "memberLocation": "6267:12:130", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "6264:15:117", + "referencedDeclaration": 24781, + "src": "6264:15:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 72225, + "id": 73011, "isConstant": false, "isLValue": false, "isPure": false, @@ -13634,27 +13650,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6264:56:117", + "src": "6264:56:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72226, + "id": 73012, "nodeType": "ExpressionStatement", - "src": "6264:56:117" + "src": "6264:56:130" }, { "expression": { "arguments": [ { - "id": 72230, + "id": 73016, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "6339:2:117", + "referencedDeclaration": 70587, + "src": "6339:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13669,33 +13685,33 @@ } ], "expression": { - "id": 72227, + "id": 73013, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6330:2:117", + "referencedDeclaration": 13541, + "src": "6330:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72229, + "id": 73015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6333:5:117", + "memberLocation": "6333:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "6330:8:117", + "referencedDeclaration": 24720, + "src": "6330:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72231, + "id": 73017, "isConstant": false, "isLValue": false, "isPure": false, @@ -13704,31 +13720,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6330:12:117", + "src": "6330:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72232, + "id": 73018, "nodeType": "ExpressionStatement", - "src": "6330:12:117" + "src": "6330:12:130" }, { "expression": { - "id": 72242, + "id": 73028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 72233, + "id": 73019, "name": "prevScore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72209, - "src": "6352:9:117", + "referencedDeclaration": 72995, + "src": "6352:9:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13739,12 +13755,12 @@ "rightHandSide": { "arguments": [ { - "id": 72236, + "id": 73022, "name": "A55", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72194, - "src": "6387:3:117", + "referencedDeclaration": 72980, + "src": "6387:3:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13753,14 +13769,14 @@ { "arguments": [ { - "id": 72239, + "id": 73025, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6400:4:117", + "referencedDeclaration": 70573, + "src": "6400:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -13768,30 +13784,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72238, + "id": 73024, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6392:7:117", + "src": "6392:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72237, + "id": 73023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6392:7:117", + "src": "6392:7:130", "typeDescriptions": {} } }, - "id": 72240, + "id": 73026, "isConstant": false, "isLValue": false, "isPure": false, @@ -13800,7 +13816,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6392:13:117", + "src": "6392:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -13820,33 +13836,33 @@ } ], "expression": { - "id": 72234, + "id": 73020, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6364:3:117", + "referencedDeclaration": 70567, + "src": "6364:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72235, + "id": 73021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6368:18:117", + "memberLocation": "6368:18:130", "memberName": "updateIndividualLR", "nodeType": "MemberAccess", "referencedDeclaration": 1355, - "src": "6364:22:117", + "src": "6364:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) external returns (uint256)" } }, - "id": 72241, + "id": 73027, "isConstant": false, "isLValue": false, "isPure": false, @@ -13855,22 +13871,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6364:42:117", + "src": "6364:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6352:54:117", + "src": "6352:54:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72243, + "id": 73029, "nodeType": "ExpressionStatement", - "src": "6352:54:117" + "src": "6352:54:130" }, { "expression": { @@ -13880,18 +13896,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72247, + "id": 73033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72245, + "id": 73031, "name": "prevScore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72209, - "src": "6428:9:117", + "referencedDeclaration": 72995, + "src": "6428:9:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13901,21 +13917,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72246, + "id": 73032, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6441:1:117", + "src": "6441:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "6428:14:117", + "src": "6428:14:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -13923,14 +13939,14 @@ }, { "hexValue": "4e6f207570646174652073636f726520697320626c616e6b", - "id": 72248, + "id": 73034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6444:26:117", + "src": "6444:26:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3d1e90a9483f430a175b994fc1491554da04f1294cd002eca5effb2cfbedd205", "typeString": "literal_string \"No update score is blank\"" @@ -13949,21 +13965,21 @@ "typeString": "literal_string \"No update score is blank\"" } ], - "id": 72244, + "id": 73030, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "6417:10:117", + "referencedDeclaration": 11481, + "src": "6417:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72249, + "id": 73035, "isConstant": false, "isLValue": false, "isPure": false, @@ -13972,34 +13988,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6417:54:117", + "src": "6417:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72250, + "id": 73036, "nodeType": "ExpressionStatement", - "src": "6417:54:117" + "src": "6417:54:130" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 72251, + "id": 73037, "name": "testWithSameCommitmentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72094, - "src": "6481:28:117", + "referencedDeclaration": 72880, + "src": "6481:28:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72252, + "id": 73038, "isConstant": false, "isLValue": false, "isPure": false, @@ -14008,16 +14024,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6481:30:117", + "src": "6481:30:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72253, + "id": 73039, "nodeType": "ExpressionStatement", - "src": "6481:30:117" + "src": "6481:30:130" }, { "expression": { @@ -14027,33 +14043,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72260, + "id": 73046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72257, + "id": 73043, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "6530:5:117", + "src": "6530:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72258, + "id": 73044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6536:9:117", + "memberLocation": "6536:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "6530:15:117", + "src": "6530:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14063,14 +14079,14 @@ "operator": "+", "rightExpression": { "hexValue": "3331", - "id": 72259, + "id": 73045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6548:7:117", + "src": "6548:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2678400_by_1", @@ -14078,7 +14094,7 @@ }, "value": "31" }, - "src": "6530:25:117", + "src": "6530:25:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14093,33 +14109,33 @@ } ], "expression": { - "id": 72254, + "id": 73040, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6522:2:117", + "referencedDeclaration": 13541, + "src": "6522:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72256, + "id": 73042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6525:4:117", + "memberLocation": "6525:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "6522:7:117", + "referencedDeclaration": 24657, + "src": "6522:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72261, + "id": 73047, "isConstant": false, "isLValue": false, "isPure": false, @@ -14128,27 +14144,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6522:34:117", + "src": "6522:34:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72262, + "id": 73048, "nodeType": "ExpressionStatement", - "src": "6522:34:117" + "src": "6522:34:130" }, { "expression": { "arguments": [ { - "id": 72266, + "id": 73052, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "6580:2:117", + "referencedDeclaration": 70587, + "src": "6580:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14163,33 +14179,33 @@ } ], "expression": { - "id": 72263, + "id": 73049, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6566:2:117", + "referencedDeclaration": 13541, + "src": "6566:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72265, + "id": 73051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6569:10:117", + "memberLocation": "6569:10:130", "memberName": "startPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23974, - "src": "6566:13:117", + "referencedDeclaration": 24725, + "src": "6566:13:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72267, + "id": 73053, "isConstant": false, "isLValue": false, "isPure": false, @@ -14198,31 +14214,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6566:17:117", + "src": "6566:17:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72268, + "id": 73054, "nodeType": "ExpressionStatement", - "src": "6566:17:117" + "src": "6566:17:130" }, { "assignments": [ - 72270 + 73056 ], "declarations": [ { "constant": false, - "id": 72270, + "id": 73056, "mutability": "mutable", "name": "newScore", - "nameLocation": "6601:8:117", + "nameLocation": "6601:8:130", "nodeType": "VariableDeclaration", - "scope": 72337, - "src": "6593:16:117", + "scope": 73123, + "src": "6593:16:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14230,10 +14246,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72269, + "id": 73055, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6593:7:117", + "src": "6593:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14242,16 +14258,16 @@ "visibility": "internal" } ], - "id": 72279, + "id": 73065, "initialValue": { "arguments": [ { - "id": 72273, + "id": 73059, "name": "A55", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72194, - "src": "6635:3:117", + "referencedDeclaration": 72980, + "src": "6635:3:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14260,14 +14276,14 @@ { "arguments": [ { - "id": 72276, + "id": 73062, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6648:4:117", + "referencedDeclaration": 70573, + "src": "6648:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -14275,30 +14291,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72275, + "id": 73061, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6640:7:117", + "src": "6640:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72274, + "id": 73060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6640:7:117", + "src": "6640:7:130", "typeDescriptions": {} } }, - "id": 72277, + "id": 73063, "isConstant": false, "isLValue": false, "isPure": false, @@ -14307,7 +14323,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6640:13:117", + "src": "6640:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -14327,33 +14343,33 @@ } ], "expression": { - "id": 72271, + "id": 73057, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6612:3:117", + "referencedDeclaration": 70567, + "src": "6612:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72272, + "id": 73058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6616:18:117", + "memberLocation": "6616:18:130", "memberName": "updateIndividualLR", "nodeType": "MemberAccess", "referencedDeclaration": 1355, - "src": "6612:22:117", + "src": "6612:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) external returns (uint256)" } }, - "id": 72278, + "id": 73064, "isConstant": false, "isLValue": false, "isPure": false, @@ -14362,7 +14378,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6612:42:117", + "src": "6612:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14370,7 +14386,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6593:61:117" + "src": "6593:61:130" }, { "expression": { @@ -14380,18 +14396,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72283, + "id": 73069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72281, + "id": 73067, "name": "newScore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72270, - "src": "6675:8:117", + "referencedDeclaration": 73056, + "src": "6675:8:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14401,21 +14417,21 @@ "operator": ">", "rightExpression": { "hexValue": "31", - "id": 72282, + "id": 73068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6686:1:117", + "src": "6686:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "6675:12:117", + "src": "6675:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -14423,14 +14439,14 @@ }, { "hexValue": "6e6f742075706461746564", - "id": 72284, + "id": 73070, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6689:13:117", + "src": "6689:13:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_148060eee5b5093f99bf5e7b7741c5896740b1b50044ee3a21f96e232e73a1d4", "typeString": "literal_string \"not updated\"" @@ -14449,21 +14465,21 @@ "typeString": "literal_string \"not updated\"" } ], - "id": 72280, + "id": 73066, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "6664:10:117", + "referencedDeclaration": 11481, + "src": "6664:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72285, + "id": 73071, "isConstant": false, "isLValue": false, "isPure": false, @@ -14472,31 +14488,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6664:39:117", + "src": "6664:39:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72286, + "id": 73072, "nodeType": "ExpressionStatement", - "src": "6664:39:117" + "src": "6664:39:130" }, { "assignments": [ - 72288 + 73074 ], "declarations": [ { "constant": false, - "id": 72288, + "id": 73074, "mutability": "mutable", "name": "nextUpdateAt", - "nameLocation": "6722:12:117", + "nameLocation": "6722:12:130", "nodeType": "VariableDeclaration", - "scope": 72337, - "src": "6714:20:117", + "scope": 73123, + "src": "6714:20:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14504,10 +14520,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72287, + "id": 73073, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6714:7:117", + "src": "6714:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14516,20 +14532,20 @@ "visibility": "internal" } ], - "id": 72296, + "id": 73082, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72293, + "id": 73079, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6774:4:117", + "referencedDeclaration": 70573, + "src": "6774:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -14537,30 +14553,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72292, + "id": 73078, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6766:7:117", + "src": "6766:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72291, + "id": 73077, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6766:7:117", + "src": "6766:7:130", "typeDescriptions": {} } }, - "id": 72294, + "id": 73080, "isConstant": false, "isLValue": false, "isPure": false, @@ -14569,7 +14585,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6766:13:117", + "src": "6766:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -14585,33 +14601,33 @@ } ], "expression": { - "id": 72289, + "id": 73075, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6737:3:117", + "referencedDeclaration": 70567, + "src": "6737:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72290, + "id": 73076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6741:24:117", + "memberLocation": "6741:24:130", "memberName": "periodicGroupStateUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1362, - "src": "6737:28:117", + "src": "6737:28:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) external returns (uint256)" } }, - "id": 72295, + "id": 73081, "isConstant": false, "isLValue": false, "isPure": false, @@ -14620,7 +14636,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6737:43:117", + "src": "6737:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14628,7 +14644,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6714:66:117" + "src": "6714:66:130" }, { "expression": { @@ -14638,18 +14654,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72302, + "id": 73088, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72300, + "id": 73086, "name": "nextUpdateAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72288, - "src": "6799:12:117", + "referencedDeclaration": 73074, + "src": "6799:12:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14659,21 +14675,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 72301, + "id": 73087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6814:1:117", + "src": "6814:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "6799:16:117", + "src": "6799:16:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14688,33 +14704,33 @@ } ], "expression": { - "id": 72297, + "id": 73083, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6791:2:117", + "referencedDeclaration": 13541, + "src": "6791:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72299, + "id": 73085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6794:4:117", + "memberLocation": "6794:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "6791:7:117", + "referencedDeclaration": 24657, + "src": "6791:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72303, + "id": 73089, "isConstant": false, "isLValue": false, "isPure": false, @@ -14723,16 +14739,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6791:25:117", + "src": "6791:25:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72304, + "id": 73090, "nodeType": "ExpressionStatement", - "src": "6791:25:117" + "src": "6791:25:130" }, { "expression": { @@ -14740,14 +14756,14 @@ { "arguments": [ { - "id": 72310, + "id": 73096, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6863:4:117", + "referencedDeclaration": 70573, + "src": "6863:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -14755,30 +14771,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72309, + "id": 73095, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6855:7:117", + "src": "6855:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72308, + "id": 73094, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6855:7:117", + "src": "6855:7:130", "typeDescriptions": {} } }, - "id": 72311, + "id": 73097, "isConstant": false, "isLValue": false, "isPure": false, @@ -14787,7 +14803,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6855:13:117", + "src": "6855:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -14803,33 +14819,33 @@ } ], "expression": { - "id": 72305, + "id": 73091, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6826:3:117", + "referencedDeclaration": 70567, + "src": "6826:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72307, + "id": 73093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6830:24:117", + "memberLocation": "6830:24:130", "memberName": "periodicGroupStateUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1362, - "src": "6826:28:117", + "src": "6826:28:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) external returns (uint256)" } }, - "id": 72312, + "id": 73098, "isConstant": false, "isLValue": false, "isPure": false, @@ -14838,31 +14854,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6826:43:117", + "src": "6826:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72313, + "id": 73099, "nodeType": "ExpressionStatement", - "src": "6826:43:117" + "src": "6826:43:130" }, { "expression": { - "id": 72323, + "id": 73109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 72314, + "id": 73100, "name": "newScore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72270, - "src": "6880:8:117", + "referencedDeclaration": 73056, + "src": "6880:8:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14873,12 +14889,12 @@ "rightHandSide": { "arguments": [ { - "id": 72317, + "id": 73103, "name": "A55", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72194, - "src": "6914:3:117", + "referencedDeclaration": 72980, + "src": "6914:3:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14887,14 +14903,14 @@ { "arguments": [ { - "id": 72320, + "id": 73106, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "6927:4:117", + "referencedDeclaration": 70573, + "src": "6927:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -14902,30 +14918,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72319, + "id": 73105, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6919:7:117", + "src": "6919:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72318, + "id": 73104, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6919:7:117", + "src": "6919:7:130", "typeDescriptions": {} } }, - "id": 72321, + "id": 73107, "isConstant": false, "isLValue": false, "isPure": false, @@ -14934,7 +14950,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6919:13:117", + "src": "6919:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -14954,33 +14970,33 @@ } ], "expression": { - "id": 72315, + "id": 73101, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "6891:3:117", + "referencedDeclaration": 70567, + "src": "6891:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72316, + "id": 73102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "6895:18:117", + "memberLocation": "6895:18:130", "memberName": "updateIndividualLR", "nodeType": "MemberAccess", "referencedDeclaration": 1355, - "src": "6891:22:117", + "src": "6891:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) external returns (uint256)" } }, - "id": 72322, + "id": 73108, "isConstant": false, "isLValue": false, "isPure": false, @@ -14989,22 +15005,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6891:42:117", + "src": "6891:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6880:53:117", + "src": "6880:53:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72324, + "id": 73110, "nodeType": "ExpressionStatement", - "src": "6880:53:117" + "src": "6880:53:130" }, { "expression": { @@ -15014,18 +15030,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72328, + "id": 73114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72326, + "id": 73112, "name": "newScore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72270, - "src": "6954:8:117", + "referencedDeclaration": 73056, + "src": "6954:8:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15035,21 +15051,21 @@ "operator": ">", "rightExpression": { "hexValue": "31", - "id": 72327, + "id": 73113, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6965:1:117", + "src": "6965:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "6954:12:117", + "src": "6954:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -15057,14 +15073,14 @@ }, { "hexValue": "6861732061637475616c2073636f7265", - "id": 72329, + "id": 73115, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6968:18:117", + "src": "6968:18:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5ec2755e9b6ef9590264c776b9a963ba24672edb6d84459f63790d99aebbdda5", "typeString": "literal_string \"has actual score\"" @@ -15083,21 +15099,21 @@ "typeString": "literal_string \"has actual score\"" } ], - "id": 72325, + "id": 73111, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "6943:10:117", + "referencedDeclaration": 11481, + "src": "6943:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72330, + "id": 73116, "isConstant": false, "isLValue": false, "isPure": false, @@ -15106,16 +15122,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6943:44:117", + "src": "6943:44:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72331, + "id": 73117, "nodeType": "ExpressionStatement", - "src": "6943:44:117" + "src": "6943:44:130" }, { "expression": { @@ -15123,33 +15139,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 72332, + "id": 73118, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "6997:2:117", + "referencedDeclaration": 13541, + "src": "6997:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72334, + "id": 73120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7000:9:117", + "memberLocation": "7000:9:130", "memberName": "stopPrank", "nodeType": "MemberAccess", - "referencedDeclaration": 23991, - "src": "6997:12:117", + "referencedDeclaration": 24742, + "src": "6997:12:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 72335, + "id": 73121, "isConstant": false, "isLValue": false, "isPure": false, @@ -15158,16 +15174,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6997:14:117", + "src": "6997:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72336, + "id": 73122, "nodeType": "ExpressionStatement", - "src": "6997:14:117" + "src": "6997:14:130" } ] }, @@ -15176,33 +15192,33 @@ "kind": "function", "modifiers": [], "name": "testIndividualLRUpdate", - "nameLocation": "6049:22:117", + "nameLocation": "6049:22:130", "parameters": { - "id": 72191, + "id": 72977, "nodeType": "ParameterList", "parameters": [], - "src": "6071:2:117" + "src": "6071:2:130" }, "returnParameters": { - "id": 72192, + "id": 72978, "nodeType": "ParameterList", "parameters": [], - "src": "6081:0:117" + "src": "6081:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72400, + "id": 73186, "nodeType": "FunctionDefinition", - "src": "7024:375:117", + "src": "7024:375:130", "nodes": [], "body": { - "id": 72399, + "id": 73185, "nodeType": "Block", - "src": "7057:342:117", + "src": "7057:342:130", "nodes": [], "statements": [ { @@ -15210,18 +15226,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 72341, + "id": 73127, "name": "testWithSameCommitmentPeriod", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72094, - "src": "7067:28:117", + "referencedDeclaration": 72880, + "src": "7067:28:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72342, + "id": 73128, "isConstant": false, "isLValue": false, "isPure": false, @@ -15230,16 +15246,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7067:30:117", + "src": "7067:30:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72343, + "id": 73129, "nodeType": "ExpressionStatement", - "src": "7067:30:117" + "src": "7067:30:130" }, { "expression": { @@ -15247,41 +15263,41 @@ { "expression": { "expression": { - "id": 72347, + "id": 73133, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "7124:16:117", + "src": "7124:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 72348, + "id": 73134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7141:15:117", + "memberLocation": "7141:15:130", "memberName": "PeriodUnelapsed", "nodeType": "MemberAccess", "referencedDeclaration": 1280, - "src": "7124:32:117", + "src": "7124:32:130", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 72349, + "id": 73135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7157:8:117", + "memberLocation": "7157:8:130", "memberName": "selector", "nodeType": "MemberAccess", - "src": "7124:41:117", + "src": "7124:41:130", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -15296,33 +15312,33 @@ } ], "expression": { - "id": 72344, + "id": 73130, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7108:2:117", + "referencedDeclaration": 13541, + "src": "7108:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72346, + "id": 73132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7111:12:117", + "memberLocation": "7111:12:130", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "7108:15:117", + "referencedDeclaration": 24781, + "src": "7108:15:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 72350, + "id": 73136, "isConstant": false, "isLValue": false, "isPure": false, @@ -15331,27 +15347,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7108:58:117", + "src": "7108:58:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72351, + "id": 73137, "nodeType": "ExpressionStatement", - "src": "7108:58:117" + "src": "7108:58:130" }, { "expression": { "arguments": [ { - "id": 72355, + "id": 73141, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "7185:2:117", + "referencedDeclaration": 70587, + "src": "7185:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15366,33 +15382,33 @@ } ], "expression": { - "id": 72352, + "id": 73138, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7176:2:117", + "referencedDeclaration": 13541, + "src": "7176:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72354, + "id": 73140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7179:5:117", + "memberLocation": "7179:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "7176:8:117", + "referencedDeclaration": 24720, + "src": "7176:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72356, + "id": 73142, "isConstant": false, "isLValue": false, "isPure": false, @@ -15401,31 +15417,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7176:12:117", + "src": "7176:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72357, + "id": 73143, "nodeType": "ExpressionStatement", - "src": "7176:12:117" + "src": "7176:12:130" }, { "assignments": [ - 72362 + 73148 ], "declarations": [ { "constant": false, - "id": 72362, + "id": 73148, "mutability": "mutable", "name": "scores1", - "nameLocation": "7215:7:117", + "nameLocation": "7215:7:130", "nodeType": "VariableDeclaration", - "scope": 72399, - "src": "7198:24:117", + "scope": 73185, + "src": "7198:24:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -15434,18 +15450,18 @@ }, "typeName": { "baseType": { - "id": 72360, + "id": 73146, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7198:7:117", + "src": "7198:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72361, + "id": 73147, "nodeType": "ArrayTypeName", - "src": "7198:9:117", + "src": "7198:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -15454,20 +15470,20 @@ "visibility": "internal" } ], - "id": 72370, + "id": 73156, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72367, + "id": 73153, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "7256:4:117", + "referencedDeclaration": 70573, + "src": "7256:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -15475,30 +15491,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72366, + "id": 73152, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7248:7:117", + "src": "7248:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72365, + "id": 73151, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7248:7:117", + "src": "7248:7:130", "typeDescriptions": {} } }, - "id": 72368, + "id": 73154, "isConstant": false, "isLValue": false, "isPure": false, @@ -15507,7 +15523,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7248:13:117", + "src": "7248:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -15523,33 +15539,33 @@ } ], "expression": { - "id": 72363, + "id": 73149, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "7225:3:117", + "referencedDeclaration": 70567, + "src": "7225:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72364, + "id": 73150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7229:18:117", + "memberLocation": "7229:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "7225:22:117", + "src": "7225:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72369, + "id": 73155, "isConstant": false, "isLValue": false, "isPure": false, @@ -15558,7 +15574,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7225:37:117", + "src": "7225:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -15566,7 +15582,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7198:64:117" + "src": "7198:64:130" }, { "expression": { @@ -15576,33 +15592,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72380, + "id": 73166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72374, + "id": 73160, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "7281:5:117", + "src": "7281:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72375, + "id": 73161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7287:9:117", + "memberLocation": "7287:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "7281:15:117", + "src": "7281:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15617,21 +15633,21 @@ "typeIdentifier": "t_rational_2592000_by_1", "typeString": "int_const 2592000" }, - "id": 72378, + "id": 73164, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3330", - "id": 72376, + "id": 73162, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7300:2:117", + "src": "7300:2:130", "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", "typeString": "int_const 30" @@ -15642,14 +15658,14 @@ "operator": "*", "rightExpression": { "hexValue": "31", - "id": 72377, + "id": 73163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7305:6:117", + "src": "7305:6:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -15657,27 +15673,27 @@ }, "value": "1" }, - "src": "7300:11:117", + "src": "7300:11:130", "typeDescriptions": { "typeIdentifier": "t_rational_2592000_by_1", "typeString": "int_const 2592000" } } ], - "id": 72379, + "id": 73165, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "7299:13:117", + "src": "7299:13:130", "typeDescriptions": { "typeIdentifier": "t_rational_2592000_by_1", "typeString": "int_const 2592000" } }, - "src": "7281:31:117", + "src": "7281:31:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15692,33 +15708,33 @@ } ], "expression": { - "id": 72371, + "id": 73157, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7273:2:117", + "referencedDeclaration": 13541, + "src": "7273:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72373, + "id": 73159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7276:4:117", + "memberLocation": "7276:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "7273:7:117", + "referencedDeclaration": 24657, + "src": "7273:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72381, + "id": 73167, "isConstant": false, "isLValue": false, "isPure": false, @@ -15727,27 +15743,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7273:40:117", + "src": "7273:40:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72382, + "id": 73168, "nodeType": "ExpressionStatement", - "src": "7273:40:117" + "src": "7273:40:130" }, { "expression": { "arguments": [ { - "id": 72386, + "id": 73172, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "7332:2:117", + "referencedDeclaration": 70587, + "src": "7332:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15762,33 +15778,33 @@ } ], "expression": { - "id": 72383, + "id": 73169, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7323:2:117", + "referencedDeclaration": 13541, + "src": "7323:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72385, + "id": 73171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7326:5:117", + "memberLocation": "7326:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "7323:8:117", + "referencedDeclaration": 24720, + "src": "7323:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72387, + "id": 73173, "isConstant": false, "isLValue": false, "isPure": false, @@ -15797,31 +15813,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7323:12:117", + "src": "7323:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72388, + "id": 73174, "nodeType": "ExpressionStatement", - "src": "7323:12:117" + "src": "7323:12:130" }, { "expression": { - "id": 72397, + "id": 73183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 72389, + "id": 73175, "name": "scores1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72362, - "src": "7345:7:117", + "referencedDeclaration": 73148, + "src": "7345:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -15834,14 +15850,14 @@ { "arguments": [ { - "id": 72394, + "id": 73180, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "7386:4:117", + "referencedDeclaration": 70573, + "src": "7386:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -15849,30 +15865,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72393, + "id": 73179, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7378:7:117", + "src": "7378:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72392, + "id": 73178, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7378:7:117", + "src": "7378:7:130", "typeDescriptions": {} } }, - "id": 72395, + "id": 73181, "isConstant": false, "isLValue": false, "isPure": false, @@ -15881,7 +15897,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7378:13:117", + "src": "7378:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -15897,33 +15913,33 @@ } ], "expression": { - "id": 72390, + "id": 73176, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "7355:3:117", + "referencedDeclaration": 70567, + "src": "7355:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72391, + "id": 73177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7359:18:117", + "memberLocation": "7359:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "7355:22:117", + "src": "7355:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72396, + "id": 73182, "isConstant": false, "isLValue": false, "isPure": false, @@ -15932,22 +15948,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7355:37:117", + "src": "7355:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "src": "7345:47:117", + "src": "7345:47:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72398, + "id": 73184, "nodeType": "ExpressionStatement", - "src": "7345:47:117" + "src": "7345:47:130" } ] }, @@ -15956,33 +15972,33 @@ "kind": "function", "modifiers": [], "name": "testPeriodFlip", - "nameLocation": "7033:14:117", + "nameLocation": "7033:14:130", "parameters": { - "id": 72339, + "id": 73125, "nodeType": "ParameterList", "parameters": [], - "src": "7047:2:117" + "src": "7047:2:130" }, "returnParameters": { - "id": 72340, + "id": 73126, "nodeType": "ParameterList", "parameters": [], - "src": "7057:0:117" + "src": "7057:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72553, + "id": 73339, "nodeType": "FunctionDefinition", - "src": "7405:1183:117", + "src": "7405:1183:130", "nodes": [], "body": { - "id": 72552, + "id": 73338, "nodeType": "Block", - "src": "7449:1139:117", + "src": "7449:1139:130", "nodes": [], "statements": [ { @@ -15990,18 +16006,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 72403, + "id": 73189, "name": "testPeriodFlip", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72400, - "src": "7459:14:117", + "referencedDeclaration": 73186, + "src": "7459:14:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72404, + "id": 73190, "isConstant": false, "isLValue": false, "isPure": false, @@ -16010,16 +16026,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7459:16:117", + "src": "7459:16:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72405, + "id": 73191, "nodeType": "ExpressionStatement", - "src": "7459:16:117" + "src": "7459:16:130" }, { "expression": { @@ -16029,33 +16045,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72412, + "id": 73198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72409, + "id": 73195, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "7494:5:117", + "src": "7494:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72410, + "id": 73196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7500:9:117", + "memberLocation": "7500:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "7494:15:117", + "src": "7494:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16065,21 +16081,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 72411, + "id": 73197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7512:1:117", + "src": "7512:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "7494:19:117", + "src": "7494:19:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16094,33 +16110,33 @@ } ], "expression": { - "id": 72406, + "id": 73192, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "7486:2:117", + "referencedDeclaration": 13541, + "src": "7486:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72408, + "id": 73194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7489:4:117", + "memberLocation": "7489:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "7486:7:117", + "referencedDeclaration": 24657, + "src": "7486:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72413, + "id": 73199, "isConstant": false, "isLValue": false, "isPure": false, @@ -16129,32 +16145,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7486:28:117", + "src": "7486:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72414, + "id": 73200, "nodeType": "ExpressionStatement", - "src": "7486:28:117" + "src": "7486:28:130" }, { "assignments": [ - 72416, - 72418 + 73202, + 73204 ], "declarations": [ { "constant": false, - "id": 72416, + "id": 73202, "mutability": "mutable", "name": "avComm", - "nameLocation": "7534:6:117", + "nameLocation": "7534:6:130", "nodeType": "VariableDeclaration", - "scope": 72552, - "src": "7526:14:117", + "scope": 73338, + "src": "7526:14:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16162,10 +16178,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72415, + "id": 73201, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7526:7:117", + "src": "7526:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16175,13 +16191,13 @@ }, { "constant": false, - "id": 72418, + "id": 73204, "mutability": "mutable", "name": "avRep", - "nameLocation": "7550:5:117", + "nameLocation": "7550:5:130", "nodeType": "VariableDeclaration", - "scope": 72552, - "src": "7542:13:117", + "scope": 73338, + "src": "7542:13:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16189,10 +16205,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72417, + "id": 73203, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7542:7:117", + "src": "7542:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16201,20 +16217,20 @@ "visibility": "internal" } ], - "id": 72426, + "id": 73212, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72423, + "id": 73209, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "7600:4:117", + "referencedDeclaration": 70573, + "src": "7600:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -16222,30 +16238,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72422, + "id": 73208, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7592:7:117", + "src": "7592:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72421, + "id": 73207, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7592:7:117", + "src": "7592:7:130", "typeDescriptions": {} } }, - "id": 72424, + "id": 73210, "isConstant": false, "isLValue": false, "isPure": false, @@ -16254,7 +16270,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7592:13:117", + "src": "7592:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -16270,33 +16286,33 @@ } ], "expression": { - "id": 72419, + "id": 73205, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "7559:3:117", + "referencedDeclaration": 70567, + "src": "7559:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72420, + "id": 73206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7563:28:117", + "memberLocation": "7563:28:130", "memberName": "getAvReputationAndCommitment", "nodeType": "MemberAccess", "referencedDeclaration": 1379, - "src": "7559:32:117", + "src": "7559:32:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address) view external returns (uint256,uint256)" } }, - "id": 72425, + "id": 73211, "isConstant": false, "isLValue": false, "isPure": false, @@ -16305,7 +16321,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7559:47:117", + "src": "7559:47:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -16313,22 +16329,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7525:81:117" + "src": "7525:81:130" }, { "assignments": [ - 72431 + 73217 ], "declarations": [ { "constant": false, - "id": 72431, + "id": 73217, "mutability": "mutable", "name": "allMembers", - "nameLocation": "7633:10:117", + "nameLocation": "7633:10:130", "nodeType": "VariableDeclaration", - "scope": 72552, - "src": "7616:27:117", + "scope": 73338, + "src": "7616:27:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -16337,18 +16353,18 @@ }, "typeName": { "baseType": { - "id": 72429, + "id": 73215, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7616:7:117", + "src": "7616:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 72430, + "id": 73216, "nodeType": "ArrayTypeName", - "src": "7616:9:117", + "src": "7616:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -16357,39 +16373,39 @@ "visibility": "internal" } ], - "id": 72435, + "id": 73221, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72432, + "id": 73218, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "7646:4:117", + "referencedDeclaration": 70573, + "src": "7646:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 72433, + "id": 73219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7651:13:117", + "memberLocation": "7651:13:130", "memberName": "getAllMembers", "nodeType": "MemberAccess", - "referencedDeclaration": 5598, - "src": "7646:18:117", + "referencedDeclaration": 6349, + "src": "7646:18:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function () view external returns (address[] memory)" } }, - "id": 72434, + "id": 73220, "isConstant": false, "isLValue": false, "isPure": false, @@ -16398,7 +16414,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7646:20:117", + "src": "7646:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -16406,22 +16422,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7616:50:117" + "src": "7616:50:130" }, { "assignments": [ - 72440 + 73226 ], "declarations": [ { "constant": false, - "id": 72440, + "id": 73226, "mutability": "mutable", "name": "allCommitments", - "nameLocation": "7693:14:117", + "nameLocation": "7693:14:130", "nodeType": "VariableDeclaration", - "scope": 72552, - "src": "7676:31:117", + "scope": 73338, + "src": "7676:31:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -16430,18 +16446,18 @@ }, "typeName": { "baseType": { - "id": 72438, + "id": 73224, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7676:7:117", + "src": "7676:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72439, + "id": 73225, "nodeType": "ArrayTypeName", - "src": "7676:9:117", + "src": "7676:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -16450,16 +16466,16 @@ "visibility": "internal" } ], - "id": 72449, + "id": 73235, "initialValue": { "arguments": [ { - "id": 72443, + "id": 73229, "name": "allMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72431, - "src": "7734:10:117", + "referencedDeclaration": 73217, + "src": "7734:10:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -16468,14 +16484,14 @@ { "arguments": [ { - "id": 72446, + "id": 73232, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "7754:4:117", + "referencedDeclaration": 70573, + "src": "7754:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -16483,30 +16499,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72445, + "id": 73231, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7746:7:117", + "src": "7746:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72444, + "id": 73230, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7746:7:117", + "src": "7746:7:130", "typeDescriptions": {} } }, - "id": 72447, + "id": 73233, "isConstant": false, "isLValue": false, "isPure": false, @@ -16515,7 +16531,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7746:13:117", + "src": "7746:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -16535,33 +16551,33 @@ } ], "expression": { - "id": 72441, + "id": 73227, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "7710:3:117", + "referencedDeclaration": 70549, + "src": "7710:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72442, + "id": 73228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7714:19:117", + "memberLocation": "7714:19:130", "memberName": "getCommitmentsOfFor", "nodeType": "MemberAccess", "referencedDeclaration": 1193, - "src": "7710:23:117", + "src": "7710:23:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address[] memory,address) view external returns (uint256[] memory)" } }, - "id": 72448, + "id": 73234, "isConstant": false, "isLValue": false, "isPure": false, @@ -16570,7 +16586,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7710:50:117", + "src": "7710:50:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -16578,7 +16594,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7676:84:117" + "src": "7676:84:130" }, { "expression": { @@ -16588,33 +16604,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72455, + "id": 73241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72451, + "id": 73237, "name": "allMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72431, - "src": "7782:10:117", + "referencedDeclaration": 73217, + "src": "7782:10:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72452, + "id": 73238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7793:6:117", + "memberLocation": "7793:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "7782:17:117", + "src": "7782:17:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16624,32 +16640,32 @@ "operator": "==", "rightExpression": { "expression": { - "id": 72453, + "id": 73239, "name": "allCommitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72440, - "src": "7803:14:117", + "referencedDeclaration": 73226, + "src": "7803:14:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72454, + "id": 73240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7818:6:117", + "memberLocation": "7818:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "7803:21:117", + "src": "7803:21:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7782:42:117", + "src": "7782:42:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16657,14 +16673,14 @@ }, { "hexValue": "6d656d62657220636f6d6d2e206c656e206d69736d61746368", - "id": 72456, + "id": 73242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7826:27:117", + "src": "7826:27:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ddae2a413a3ce11dae878da2d415b93261737a59bf8349eb97efaea1c471f74f", "typeString": "literal_string \"member comm. len mismatch\"" @@ -16683,21 +16699,21 @@ "typeString": "literal_string \"member comm. len mismatch\"" } ], - "id": 72450, + "id": 73236, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "7771:10:117", + "referencedDeclaration": 11481, + "src": "7771:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72457, + "id": 73243, "isConstant": false, "isLValue": false, "isPure": false, @@ -16706,16 +16722,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7771:83:117", + "src": "7771:83:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72458, + "id": 73244, "nodeType": "ExpressionStatement", - "src": "7771:83:117" + "src": "7771:83:130" }, { "expression": { @@ -16725,35 +16741,35 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72466, + "id": 73252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { - "id": 72460, + "id": 73246, "name": "allCommitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72440, - "src": "7875:14:117", + "referencedDeclaration": 73226, + "src": "7875:14:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72462, + "id": 73248, "indexExpression": { "hexValue": "31", - "id": 72461, + "id": 73247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7890:1:117", + "src": "7890:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -16765,7 +16781,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7875:17:117", + "src": "7875:17:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16775,28 +16791,28 @@ "operator": "==", "rightExpression": { "baseExpression": { - "id": 72463, + "id": 73249, "name": "allCommitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72440, - "src": "7896:14:117", + "referencedDeclaration": 73226, + "src": "7896:14:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72465, + "id": 73251, "indexExpression": { "hexValue": "32", - "id": 72464, + "id": 73250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7911:1:117", + "src": "7911:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -16808,13 +16824,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7896:17:117", + "src": "7896:17:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7875:38:117", + "src": "7875:38:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16822,14 +16838,14 @@ }, { "hexValue": "616c6c20686176652073616d6520636f6d6d69746d656e74", - "id": 72467, + "id": 73253, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7915:26:117", + "src": "7915:26:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_63e6fb327b54e3f4b1b8e25272118860e874ce2009065028427d41b255bced7a", "typeString": "literal_string \"all have same commitment\"" @@ -16848,21 +16864,21 @@ "typeString": "literal_string \"all have same commitment\"" } ], - "id": 72459, + "id": 73245, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "7864:10:117", + "referencedDeclaration": 11481, + "src": "7864:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72468, + "id": 73254, "isConstant": false, "isLValue": false, "isPure": false, @@ -16871,16 +16887,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7864:78:117", + "src": "7864:78:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72469, + "id": 73255, "nodeType": "ExpressionStatement", - "src": "7864:78:117" + "src": "7864:78:130" }, { "expression": { @@ -16890,18 +16906,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72473, + "id": 73259, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72471, + "id": 73257, "name": "avRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72418, - "src": "7964:5:117", + "referencedDeclaration": 73204, + "src": "7964:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16911,14 +16927,14 @@ "operator": ">=", "rightExpression": { "hexValue": "302e3031", - "id": 72472, + "id": 73258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7973:10:117", + "src": "7973:10:130", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_10000000000000000_by_1", @@ -16926,7 +16942,7 @@ }, "value": "0.01" }, - "src": "7964:19:117", + "src": "7964:19:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -16934,14 +16950,14 @@ }, { "hexValue": "31206d656d62657273206f6e6c7920", - "id": 72474, + "id": 73260, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7985:17:117", + "src": "7985:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_80a3fa57c45efcbc01f4b1f85055127481b1f8837268565577c33dabcb8f5856", "typeString": "literal_string \"1 members only \"" @@ -16960,21 +16976,21 @@ "typeString": "literal_string \"1 members only \"" } ], - "id": 72470, + "id": 73256, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "7953:10:117", + "referencedDeclaration": 11481, + "src": "7953:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72475, + "id": 73261, "isConstant": false, "isLValue": false, "isPure": false, @@ -16983,16 +16999,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7953:50:117", + "src": "7953:50:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72476, + "id": 73262, "nodeType": "ExpressionStatement", - "src": "7953:50:117" + "src": "7953:50:130" }, { "expression": { @@ -17002,18 +17018,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72480, + "id": 73266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72478, + "id": 73264, "name": "avRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72418, - "src": "8024:5:117", + "referencedDeclaration": 73204, + "src": "8024:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17023,14 +17039,14 @@ "operator": "<", "rightExpression": { "hexValue": "3130", - "id": 72479, + "id": 73265, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8032:8:117", + "src": "8032:8:130", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_10000000000000000000_by_1", @@ -17038,7 +17054,7 @@ }, "value": "10" }, - "src": "8024:16:117", + "src": "8024:16:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17046,14 +17062,14 @@ }, { "hexValue": "31206d656d62657273206f6e6c7920", - "id": 72481, + "id": 73267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8042:17:117", + "src": "8042:17:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_80a3fa57c45efcbc01f4b1f85055127481b1f8837268565577c33dabcb8f5856", "typeString": "literal_string \"1 members only \"" @@ -17072,21 +17088,21 @@ "typeString": "literal_string \"1 members only \"" } ], - "id": 72477, + "id": 73263, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "8013:10:117", + "referencedDeclaration": 11481, + "src": "8013:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72482, + "id": 73268, "isConstant": false, "isLValue": false, "isPure": false, @@ -17095,16 +17111,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8013:47:117", + "src": "8013:47:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72483, + "id": 73269, "nodeType": "ExpressionStatement", - "src": "8013:47:117" + "src": "8013:47:130" }, { "expression": { @@ -17114,18 +17130,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72487, + "id": 73273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72485, + "id": 73271, "name": "avComm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72416, - "src": "8082:6:117", + "referencedDeclaration": 73202, + "src": "8082:6:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -17135,21 +17151,21 @@ "operator": "==", "rightExpression": { "hexValue": "34", - "id": 72486, + "id": 73272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8092:1:117", + "src": "8092:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "8082:11:117", + "src": "8082:11:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17157,14 +17173,14 @@ }, { "hexValue": "616c6c206861766520342c20657870656365642034", - "id": 72488, + "id": 73274, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8095:23:117", + "src": "8095:23:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_58f217a21d35cd7ea166ca61d18bed1b5e765945277bb3c703046f21cdec9a9e", "typeString": "literal_string \"all have 4, expeced 4\"" @@ -17183,21 +17199,21 @@ "typeString": "literal_string \"all have 4, expeced 4\"" } ], - "id": 72484, + "id": 73270, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "8071:10:117", + "referencedDeclaration": 11481, + "src": "8071:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72489, + "id": 73275, "isConstant": false, "isLValue": false, "isPure": false, @@ -17206,31 +17222,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8071:48:117", + "src": "8071:48:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72490, + "id": 73276, "nodeType": "ExpressionStatement", - "src": "8071:48:117" + "src": "8071:48:130" }, { "assignments": [ - 72493 + 73279 ], "declarations": [ { "constant": false, - "id": 72493, + "id": 73279, "mutability": "mutable", "name": "periodTypeData", - "nameLocation": "8148:14:117", + "nameLocation": "8148:14:130", "nodeType": "VariableDeclaration", - "scope": 72552, - "src": "8130:32:117", + "scope": 73338, + "src": "8130:32:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -17238,20 +17254,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 72492, + "id": 73278, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72491, + "id": 73277, "name": "periodData", "nameLocations": [ - "8130:10:117" + "8130:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "8130:10:117" + "src": "8130:10:130" }, "referencedDeclaration": 1207, - "src": "8130:10:117", + "src": "8130:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -17260,20 +17276,20 @@ "visibility": "internal" } ], - "id": 72501, + "id": 73287, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72498, + "id": 73284, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "8201:4:117", + "referencedDeclaration": 70573, + "src": "8201:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -17281,30 +17297,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72497, + "id": 73283, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8193:7:117", + "src": "8193:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72496, + "id": 73282, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8193:7:117", + "src": "8193:7:130", "typeDescriptions": {} } }, - "id": 72499, + "id": 73285, "isConstant": false, "isLValue": false, "isPure": false, @@ -17313,7 +17329,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8193:13:117", + "src": "8193:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -17329,33 +17345,33 @@ } ], "expression": { - "id": 72494, + "id": 73280, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "8165:3:117", + "referencedDeclaration": 70567, + "src": "8165:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72495, + "id": 73281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8169:23:117", + "memberLocation": "8169:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "8165:27:117", + "src": "8165:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 72500, + "id": 73286, "isConstant": false, "isLValue": false, "isPure": false, @@ -17364,7 +17380,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8165:42:117", + "src": "8165:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -17372,7 +17388,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "8130:77:117" + "src": "8130:77:130" }, { "expression": { @@ -17382,34 +17398,34 @@ "typeIdentifier": "t_int32", "typeString": "int32" }, - "id": 72506, + "id": 73292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72503, + "id": 73289, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72493, - "src": "8229:14:117", + "referencedDeclaration": 73279, + "src": "8229:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72504, + "id": 73290, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8244:14:117", + "memberLocation": "8244:14:130", "memberName": "aDiffMembersLP", "nodeType": "MemberAccess", "referencedDeclaration": 1198, - "src": "8229:29:117", + "src": "8229:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" @@ -17419,21 +17435,21 @@ "operator": ">", "rightExpression": { "hexValue": "31", - "id": 72505, + "id": 73291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8261:1:117", + "src": "8261:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "8229:33:117", + "src": "8229:33:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17441,14 +17457,14 @@ }, { "hexValue": "657870206d656d626572732077657265206164646564", - "id": 72507, + "id": 73293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8264:24:117", + "src": "8264:24:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1963ad08d0bc1b06cc412f26373e1357393a452e78593f9552ab56ccae247a62", "typeString": "literal_string \"exp members were added\"" @@ -17467,21 +17483,21 @@ "typeString": "literal_string \"exp members were added\"" } ], - "id": 72502, + "id": 73288, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "8218:10:117", + "referencedDeclaration": 11481, + "src": "8218:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72508, + "id": 73294, "isConstant": false, "isLValue": false, "isPure": false, @@ -17490,16 +17506,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8218:71:117", + "src": "8218:71:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72509, + "id": 73295, "nodeType": "ExpressionStatement", - "src": "8218:71:117" + "src": "8218:71:130" }, { "expression": { @@ -17509,7 +17525,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72521, + "id": 73307, "isConstant": false, "isLValue": false, "isPure": false, @@ -17520,27 +17536,27 @@ "arguments": [ { "expression": { - "id": 72515, + "id": 73301, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72493, - "src": "8326:14:117", + "referencedDeclaration": 73279, + "src": "8326:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72516, + "id": 73302, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8341:14:117", + "memberLocation": "8341:14:130", "memberName": "bMembersLastLP", "nodeType": "MemberAccess", "referencedDeclaration": 1200, - "src": "8326:29:117", + "src": "8326:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" @@ -17554,26 +17570,26 @@ "typeString": "int32" } ], - "id": 72514, + "id": 73300, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8319:6:117", + "src": "8319:6:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { - "id": 72513, + "id": 73299, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "8319:6:117", + "src": "8319:6:130", "typeDescriptions": {} } }, - "id": 72517, + "id": 73303, "isConstant": false, "isLValue": false, "isPure": false, @@ -17582,7 +17598,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8319:37:117", + "src": "8319:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", @@ -17597,26 +17613,26 @@ "typeString": "uint32" } ], - "id": 72512, + "id": 73298, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8311:7:117", + "src": "8311:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 72511, + "id": 73297, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8311:7:117", + "src": "8311:7:130", "typeDescriptions": {} } }, - "id": 72518, + "id": 73304, "isConstant": false, "isLValue": false, "isPure": false, @@ -17625,7 +17641,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8311:46:117", + "src": "8311:46:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17636,32 +17652,32 @@ "operator": "==", "rightExpression": { "expression": { - "id": 72519, + "id": 73305, "name": "allMembers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72431, - "src": "8361:10:117", + "referencedDeclaration": 73217, + "src": "8361:10:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72520, + "id": 73306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8372:6:117", + "memberLocation": "8372:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "8361:17:117", + "src": "8361:17:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8311:67:117", + "src": "8311:67:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17675,21 +17691,21 @@ "typeString": "bool" } ], - "id": 72510, + "id": 73296, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10709, - "src": "8300:10:117", + "referencedDeclaration": 11460, + "src": "8300:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool)" } }, - "id": 72522, + "id": 73308, "isConstant": false, "isLValue": false, "isPure": false, @@ -17698,16 +17714,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8300:79:117", + "src": "8300:79:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72523, + "id": 73309, "nodeType": "ExpressionStatement", - "src": "8300:79:117" + "src": "8300:79:130" }, { "expression": { @@ -17717,7 +17733,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72534, + "id": 73320, "isConstant": false, "isLValue": false, "isPure": false, @@ -17728,27 +17744,27 @@ "arguments": [ { "expression": { - "id": 72529, + "id": 73315, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72493, - "src": "8415:14:117", + "referencedDeclaration": 73279, + "src": "8415:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72530, + "id": 73316, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8430:13:117", + "memberLocation": "8430:13:130", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "8415:28:117", + "src": "8415:28:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -17762,26 +17778,26 @@ "typeString": "uint64" } ], - "id": 72528, + "id": 73314, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8408:6:117", + "src": "8408:6:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { - "id": 72527, + "id": 73313, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "8408:6:117", + "src": "8408:6:130", "typeDescriptions": {} } }, - "id": 72531, + "id": 73317, "isConstant": false, "isLValue": false, "isPure": false, @@ -17790,7 +17806,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8408:36:117", + "src": "8408:36:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -17805,26 +17821,26 @@ "typeString": "uint64" } ], - "id": 72526, + "id": 73312, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8400:7:117", + "src": "8400:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 72525, + "id": 73311, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8400:7:117", + "src": "8400:7:130", "typeDescriptions": {} } }, - "id": 72532, + "id": 73318, "isConstant": false, "isLValue": false, "isPure": false, @@ -17833,7 +17849,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8400:45:117", + "src": "8400:45:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17843,18 +17859,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 72533, + "id": 73319, "name": "avRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72418, - "src": "8449:5:117", + "referencedDeclaration": 73204, + "src": "8449:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8400:54:117", + "src": "8400:54:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -17862,14 +17878,14 @@ }, { "hexValue": "73686f756c642062652073616d65206c6966656379636c65", - "id": 72535, + "id": 73321, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8456:26:117", + "src": "8456:26:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1f005e3496b66d228f6d18b7c10afa174771aa243d5f7b30404297862fea640a", "typeString": "literal_string \"should be same lifecycle\"" @@ -17888,21 +17904,21 @@ "typeString": "literal_string \"should be same lifecycle\"" } ], - "id": 72524, + "id": 73310, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "8389:10:117", + "referencedDeclaration": 11481, + "src": "8389:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72536, + "id": 73322, "isConstant": false, "isLValue": false, "isPure": false, @@ -17911,16 +17927,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8389:94:117", + "src": "8389:94:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72537, + "id": 73323, "nodeType": "ExpressionStatement", - "src": "8389:94:117" + "src": "8389:94:130" }, { "expression": { @@ -17930,7 +17946,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72548, + "id": 73334, "isConstant": false, "isLValue": false, "isPure": false, @@ -17941,27 +17957,27 @@ "arguments": [ { "expression": { - "id": 72543, + "id": 73329, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72493, - "src": "8519:14:117", + "referencedDeclaration": 73279, + "src": "8519:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72544, + "id": 73330, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "8534:20:117", + "memberLocation": "8534:20:130", "memberName": "dAverageCommitmentLP", "nodeType": "MemberAccess", "referencedDeclaration": 1204, - "src": "8519:35:117", + "src": "8519:35:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -17975,26 +17991,26 @@ "typeString": "uint64" } ], - "id": 72542, + "id": 73328, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8512:6:117", + "src": "8512:6:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { - "id": 72541, + "id": 73327, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "8512:6:117", + "src": "8512:6:130", "typeDescriptions": {} } }, - "id": 72545, + "id": 73331, "isConstant": false, "isLValue": false, "isPure": false, @@ -18003,7 +18019,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8512:43:117", + "src": "8512:43:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", @@ -18018,26 +18034,26 @@ "typeString": "uint64" } ], - "id": 72540, + "id": 73326, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8504:7:117", + "src": "8504:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 72539, + "id": 73325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8504:7:117", + "src": "8504:7:130", "typeDescriptions": {} } }, - "id": 72546, + "id": 73332, "isConstant": false, "isLValue": false, "isPure": false, @@ -18046,7 +18062,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8504:52:117", + "src": "8504:52:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -18056,18 +18072,18 @@ "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "id": 72547, + "id": 73333, "name": "avComm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72416, - "src": "8560:6:117", + "referencedDeclaration": 73202, + "src": "8560:6:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "8504:62:117", + "src": "8504:62:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -18075,14 +18091,14 @@ }, { "hexValue": "616c6c20776572652034", - "id": 72549, + "id": 73335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8568:12:117", + "src": "8568:12:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c267c82d36b4244290705aced6a0e79eb5808d80de5ea0f5afe0828adf00d168", "typeString": "literal_string \"all were 4\"" @@ -18101,21 +18117,21 @@ "typeString": "literal_string \"all were 4\"" } ], - "id": 72538, + "id": 73324, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "8493:10:117", + "referencedDeclaration": 11481, + "src": "8493:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72550, + "id": 73336, "isConstant": false, "isLValue": false, "isPure": false, @@ -18124,16 +18140,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8493:88:117", + "src": "8493:88:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72551, + "id": 73337, "nodeType": "ExpressionStatement", - "src": "8493:88:117" + "src": "8493:88:130" } ] }, @@ -18142,33 +18158,33 @@ "kind": "function", "modifiers": [], "name": "testperiodTypeDataUpdates", - "nameLocation": "7414:25:117", + "nameLocation": "7414:25:130", "parameters": { - "id": 72401, + "id": 73187, "nodeType": "ParameterList", "parameters": [], - "src": "7439:2:117" + "src": "7439:2:130" }, "returnParameters": { - "id": 72402, + "id": 73188, "nodeType": "ParameterList", "parameters": [], - "src": "7449:0:117" + "src": "7449:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72726, + "id": 73512, "nodeType": "FunctionDefinition", - "src": "8594:1271:117", + "src": "8594:1271:130", "nodes": [], "body": { - "id": 72725, + "id": 73511, "nodeType": "Block", - "src": "8631:1234:117", + "src": "8631:1234:130", "nodes": [], "statements": [ { @@ -18176,18 +18192,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 72556, + "id": 73342, "name": "testPeriodFlip", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72400, - "src": "8641:14:117", + "referencedDeclaration": 73186, + "src": "8641:14:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72557, + "id": 73343, "isConstant": false, "isLValue": false, "isPure": false, @@ -18196,31 +18212,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8641:16:117", + "src": "8641:16:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72558, + "id": 73344, "nodeType": "ExpressionStatement", - "src": "8641:16:117" + "src": "8641:16:130" }, { "assignments": [ - 72561 + 73347 ], "declarations": [ { "constant": false, - "id": 72561, + "id": 73347, "mutability": "mutable", "name": "prevperiodTypeData", - "nameLocation": "8685:18:117", + "nameLocation": "8685:18:130", "nodeType": "VariableDeclaration", - "scope": 72725, - "src": "8667:36:117", + "scope": 73511, + "src": "8667:36:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -18228,20 +18244,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 72560, + "id": 73346, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72559, + "id": 73345, "name": "periodData", "nameLocations": [ - "8667:10:117" + "8667:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "8667:10:117" + "src": "8667:10:130" }, "referencedDeclaration": 1207, - "src": "8667:10:117", + "src": "8667:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -18250,20 +18266,20 @@ "visibility": "internal" } ], - "id": 72569, + "id": 73355, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72566, + "id": 73352, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "8742:4:117", + "referencedDeclaration": 70573, + "src": "8742:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -18271,30 +18287,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72565, + "id": 73351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8734:7:117", + "src": "8734:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72564, + "id": 73350, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8734:7:117", + "src": "8734:7:130", "typeDescriptions": {} } }, - "id": 72567, + "id": 73353, "isConstant": false, "isLValue": false, "isPure": false, @@ -18303,7 +18319,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8734:13:117", + "src": "8734:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -18319,33 +18335,33 @@ } ], "expression": { - "id": 72562, + "id": 73348, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "8706:3:117", + "referencedDeclaration": 70567, + "src": "8706:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72563, + "id": 73349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8710:23:117", + "memberLocation": "8710:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "8706:27:117", + "src": "8706:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 72568, + "id": 73354, "isConstant": false, "isLValue": false, "isPure": false, @@ -18354,7 +18370,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8706:42:117", + "src": "8706:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -18362,22 +18378,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "8667:81:117" + "src": "8667:81:130" }, { "assignments": [ - 72571 + 73357 ], "declarations": [ { "constant": false, - "id": 72571, + "id": 73357, "mutability": "mutable", "name": "i", - "nameLocation": "8767:1:117", + "nameLocation": "8767:1:130", "nodeType": "VariableDeclaration", - "scope": 72725, - "src": "8759:9:117", + "scope": 73511, + "src": "8759:9:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18385,10 +18401,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72570, + "id": 73356, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8759:7:117", + "src": "8759:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18397,17 +18413,17 @@ "visibility": "internal" } ], - "id": 72573, + "id": 73359, "initialValue": { "hexValue": "38383838383838383838383838383838", - "id": 72572, + "id": 73358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8771:16:117", + "src": "8771:16:130", "typeDescriptions": { "typeIdentifier": "t_rational_8888888888888888_by_1", "typeString": "int_const 8888888888888888" @@ -18415,13 +18431,13 @@ "value": "8888888888888888" }, "nodeType": "VariableDeclarationStatement", - "src": "8759:28:117" + "src": "8759:28:130" }, { "body": { - "id": 72638, + "id": 73424, "nodeType": "Block", - "src": "8828:389:117", + "src": "8828:389:130", "statements": [ { "expression": { @@ -18431,12 +18447,12 @@ { "arguments": [ { - "id": 72586, + "id": 73372, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "8867:1:117", + "referencedDeclaration": 73357, + "src": "8867:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18450,26 +18466,26 @@ "typeString": "uint256" } ], - "id": 72585, + "id": 73371, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8859:7:117", + "src": "8859:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 72584, + "id": 73370, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "8859:7:117", + "src": "8859:7:130", "typeDescriptions": {} } }, - "id": 72587, + "id": 73373, "isConstant": false, "isLValue": false, "isPure": false, @@ -18478,7 +18494,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8859:10:117", + "src": "8859:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -18493,26 +18509,26 @@ "typeString": "uint160" } ], - "id": 72583, + "id": 73369, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8851:7:117", + "src": "8851:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72582, + "id": 73368, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8851:7:117", + "src": "8851:7:130", "typeDescriptions": {} } }, - "id": 72588, + "id": 73374, "isConstant": false, "isLValue": false, "isPure": false, @@ -18521,7 +18537,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8851:19:117", + "src": "8851:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -18537,33 +18553,33 @@ } ], "expression": { - "id": 72579, + "id": 73365, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "8842:2:117", + "referencedDeclaration": 13541, + "src": "8842:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72581, + "id": 73367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8845:5:117", + "memberLocation": "8845:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "8842:8:117", + "referencedDeclaration": 24720, + "src": "8842:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72589, + "id": 73375, "isConstant": false, "isLValue": false, "isPure": false, @@ -18572,16 +18588,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8842:29:117", + "src": "8842:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72590, + "id": 73376, "nodeType": "ExpressionStatement", - "src": "8842:29:117" + "src": "8842:29:130" }, { "expression": { @@ -18589,12 +18605,12 @@ { "arguments": [ { - "id": 72596, + "id": 73382, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "8906:1:117", + "referencedDeclaration": 73357, + "src": "8906:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18609,33 +18625,33 @@ } ], "expression": { - "id": 72594, + "id": 73380, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "8894:2:117", + "referencedDeclaration": 13541, + "src": "8894:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72595, + "id": 73381, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8897:8:117", + "memberLocation": "8897:8:130", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "8894:11:117", + "referencedDeclaration": 24129, + "src": "8894:11:130", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 72597, + "id": 73383, "isConstant": false, "isLValue": false, "isPure": false, @@ -18644,7 +18660,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8894:14:117", + "src": "8894:14:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -18653,14 +18669,14 @@ }, { "hexValue": "68747470733a2f2f", - "id": 72598, + "id": 73384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8910:10:117", + "src": "8910:10:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_22a0bccaefa7e44032d5e21026b45254e49ef9bce8763cb450aaa27db3ce52a1", "typeString": "literal_string \"https://\"" @@ -18669,14 +18685,14 @@ }, { "hexValue": "31", - "id": 72599, + "id": 73385, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8922:1:117", + "src": "8922:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -18685,14 +18701,14 @@ }, { "hexValue": "39", - "id": 72600, + "id": 73386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8925:1:117", + "src": "8925:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" @@ -18702,14 +18718,14 @@ { "arguments": [ { - "id": 72603, + "id": 73389, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "8936:4:117", + "referencedDeclaration": 70573, + "src": "8936:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -18717,30 +18733,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72602, + "id": 73388, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8928:7:117", + "src": "8928:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72601, + "id": 73387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8928:7:117", + "src": "8928:7:130", "typeDescriptions": {} } }, - "id": 72604, + "id": 73390, "isConstant": false, "isLValue": false, "isPure": false, @@ -18749,7 +18765,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8928:13:117", + "src": "8928:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -18781,33 +18797,33 @@ } ], "expression": { - "id": 72591, + "id": 73377, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "8885:3:117", + "referencedDeclaration": 70549, + "src": "8885:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72593, + "id": 73379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8889:4:117", + "memberLocation": "8889:4:130", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "8885:8:117", + "src": "8885:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 72605, + "id": 73391, "isConstant": false, "isLValue": false, "isPure": false, @@ -18816,16 +18832,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8885:57:117", + "src": "8885:57:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72606, + "id": 73392, "nodeType": "ExpressionStatement", - "src": "8885:57:117" + "src": "8885:57:130" }, { "expression": { @@ -18835,12 +18851,12 @@ { "arguments": [ { - "id": 72614, + "id": 73400, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "8982:1:117", + "referencedDeclaration": 73357, + "src": "8982:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18854,26 +18870,26 @@ "typeString": "uint256" } ], - "id": 72613, + "id": 73399, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8974:7:117", + "src": "8974:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 72612, + "id": 73398, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "8974:7:117", + "src": "8974:7:130", "typeDescriptions": {} } }, - "id": 72615, + "id": 73401, "isConstant": false, "isLValue": false, "isPure": false, @@ -18882,7 +18898,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8974:10:117", + "src": "8974:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -18897,26 +18913,26 @@ "typeString": "uint160" } ], - "id": 72611, + "id": 73397, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8966:7:117", + "src": "8966:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72610, + "id": 73396, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8966:7:117", + "src": "8966:7:130", "typeDescriptions": {} } }, - "id": 72616, + "id": 73402, "isConstant": false, "isLValue": false, "isPure": false, @@ -18925,7 +18941,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8966:19:117", + "src": "8966:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -18941,33 +18957,33 @@ } ], "expression": { - "id": 72607, + "id": 73393, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "8957:2:117", + "referencedDeclaration": 13541, + "src": "8957:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72609, + "id": 73395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "8960:5:117", + "memberLocation": "8960:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "8957:8:117", + "referencedDeclaration": 24720, + "src": "8957:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72617, + "id": 73403, "isConstant": false, "isLValue": false, "isPure": false, @@ -18976,16 +18992,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8957:29:117", + "src": "8957:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72618, + "id": 73404, "nodeType": "ExpressionStatement", - "src": "8957:29:117" + "src": "8957:29:130" }, { "expression": { @@ -18996,7 +19012,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72623, + "id": 73409, "isConstant": false, "isLValue": false, "isPure": false, @@ -19006,18 +19022,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72621, + "id": 73407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72619, + "id": 73405, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "9001:1:117", + "referencedDeclaration": 73357, + "src": "9001:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19027,21 +19043,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72620, + "id": 73406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9005:1:117", + "src": "9005:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "9001:5:117", + "src": "9001:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19051,35 +19067,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72622, + "id": 73408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9010:1:117", + "src": "9010:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "9001:10:117", + "src": "9001:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72624, + "id": 73410, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "9000:12:117", + "src": "9000:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -19089,14 +19105,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72630, + "id": 73416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9126:19:117", + "src": "9126:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -19112,33 +19128,33 @@ } ], "expression": { - "id": 72628, + "id": 73414, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "9092:17:117", + "referencedDeclaration": 72162, + "src": "9092:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72629, + "id": 73415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9110:15:117", + "memberLocation": "9110:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "9092:33:117", + "referencedDeclaration": 7856, + "src": "9092:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72631, + "id": 73417, "isConstant": false, "isLValue": false, "isPure": false, @@ -19147,52 +19163,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9092:54:117", + "src": "9092:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72632, + "id": 73418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "9000:146:117", + "src": "9000:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72625, + "id": 73411, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "9031:17:117", + "referencedDeclaration": 72162, + "src": "9031:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72626, + "id": 73412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9049:22:117", + "memberLocation": "9049:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "9031:40:117", + "referencedDeclaration": 7872, + "src": "9031:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72627, + "id": 73413, "isConstant": false, "isLValue": false, "isPure": false, @@ -19201,7 +19217,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9031:42:117", + "src": "9031:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -19213,18 +19229,18 @@ "typeString": "uint256" } }, - "id": 72633, + "id": 73419, "nodeType": "ExpressionStatement", - "src": "9000:146:117" + "src": "9000:146:130" }, { - "id": 72637, + "id": 73423, "nodeType": "UncheckedBlock", - "src": "9161:46:117", + "src": "9161:46:130", "statements": [ { "expression": { - "id": 72635, + "id": 73421, "isConstant": false, "isLValue": false, "isPure": false, @@ -19232,14 +19248,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "9189:3:117", + "src": "9189:3:130", "subExpression": { - "id": 72634, + "id": 73420, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "9191:1:117", + "referencedDeclaration": 73357, + "src": "9191:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19250,9 +19266,9 @@ "typeString": "uint256" } }, - "id": 72636, + "id": 73422, "nodeType": "ExpressionStatement", - "src": "9189:3:117" + "src": "9189:3:130" } ] } @@ -19263,18 +19279,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72578, + "id": 73364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72576, + "id": 73362, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "8805:1:117", + "referencedDeclaration": 73357, + "src": "8805:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19284,46 +19300,46 @@ "operator": "<", "rightExpression": { "hexValue": "38383838383838383838383838393438", - "id": 72577, + "id": 73363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8809:16:117", + "src": "8809:16:130", "typeDescriptions": { "typeIdentifier": "t_rational_8888888888888948_by_1", "typeString": "int_const 8888888888888948" }, "value": "8888888888888948" }, - "src": "8805:20:117", + "src": "8805:20:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 72639, + "id": 73425, "initializationExpression": { "expression": { - "id": 72574, + "id": 73360, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72571, - "src": "8802:1:117", + "referencedDeclaration": 73357, + "src": "8802:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72575, + "id": 73361, "nodeType": "ExpressionStatement", - "src": "8802:1:117" + "src": "8802:1:130" }, "nodeType": "ForStatement", - "src": "8797:420:117" + "src": "8797:420:130" }, { "expression": { @@ -19333,33 +19349,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72646, + "id": 73432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72643, + "id": 73429, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "9235:5:117", + "src": "9235:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72644, + "id": 73430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9241:9:117", + "memberLocation": "9241:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "9235:15:117", + "src": "9235:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19369,14 +19385,14 @@ "operator": "+", "rightExpression": { "hexValue": "3331", - "id": 72645, + "id": 73431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9253:7:117", + "src": "9253:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2678400_by_1", @@ -19384,7 +19400,7 @@ }, "value": "31" }, - "src": "9235:25:117", + "src": "9235:25:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19399,33 +19415,33 @@ } ], "expression": { - "id": 72640, + "id": 73426, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "9227:2:117", + "referencedDeclaration": 13541, + "src": "9227:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72642, + "id": 73428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9230:4:117", + "memberLocation": "9230:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "9227:7:117", + "referencedDeclaration": 24657, + "src": "9227:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72647, + "id": 73433, "isConstant": false, "isLValue": false, "isPure": false, @@ -19434,27 +19450,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9227:34:117", + "src": "9227:34:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72648, + "id": 73434, "nodeType": "ExpressionStatement", - "src": "9227:34:117" + "src": "9227:34:130" }, { "expression": { "arguments": [ { - "id": 72652, + "id": 73438, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "9280:5:117", + "referencedDeclaration": 72166, + "src": "9280:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -19469,33 +19485,33 @@ } ], "expression": { - "id": 72649, + "id": 73435, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "9271:2:117", + "referencedDeclaration": 13541, + "src": "9271:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72651, + "id": 73437, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9274:5:117", + "memberLocation": "9274:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "9271:8:117", + "referencedDeclaration": 24720, + "src": "9271:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72653, + "id": 73439, "isConstant": false, "isLValue": false, "isPure": false, @@ -19504,16 +19520,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9271:15:117", + "src": "9271:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72654, + "id": 73440, "nodeType": "ExpressionStatement", - "src": "9271:15:117" + "src": "9271:15:130" }, { "expression": { @@ -19521,14 +19537,14 @@ { "arguments": [ { - "id": 72660, + "id": 73446, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "9327:4:117", + "referencedDeclaration": 70573, + "src": "9327:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -19536,30 +19552,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72659, + "id": 73445, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9319:7:117", + "src": "9319:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72658, + "id": 73444, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9319:7:117", + "src": "9319:7:130", "typeDescriptions": {} } }, - "id": 72661, + "id": 73447, "isConstant": false, "isLValue": false, "isPure": false, @@ -19568,7 +19584,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9319:13:117", + "src": "9319:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -19584,33 +19600,33 @@ } ], "expression": { - "id": 72655, + "id": 73441, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "9296:3:117", + "referencedDeclaration": 70567, + "src": "9296:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72657, + "id": 73443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9300:18:117", + "memberLocation": "9300:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "9296:22:117", + "src": "9296:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72662, + "id": 73448, "isConstant": false, "isLValue": false, "isPure": false, @@ -19619,32 +19635,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9296:37:117", + "src": "9296:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72663, + "id": 73449, "nodeType": "ExpressionStatement", - "src": "9296:37:117" + "src": "9296:37:130" }, { "assignments": [ - 72665, - 72667 + 73451, + 73453 ], "declarations": [ { "constant": false, - "id": 72665, + "id": 73451, "mutability": "mutable", "name": "avComm", - "nameLocation": "9352:6:117", + "nameLocation": "9352:6:130", "nodeType": "VariableDeclaration", - "scope": 72725, - "src": "9344:14:117", + "scope": 73511, + "src": "9344:14:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19652,10 +19668,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72664, + "id": 73450, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9344:7:117", + "src": "9344:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19665,13 +19681,13 @@ }, { "constant": false, - "id": 72667, + "id": 73453, "mutability": "mutable", "name": "avRep", - "nameLocation": "9368:5:117", + "nameLocation": "9368:5:130", "nodeType": "VariableDeclaration", - "scope": 72725, - "src": "9360:13:117", + "scope": 73511, + "src": "9360:13:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19679,10 +19695,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72666, + "id": 73452, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9360:7:117", + "src": "9360:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19691,20 +19707,20 @@ "visibility": "internal" } ], - "id": 72675, + "id": 73461, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72672, + "id": 73458, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "9418:4:117", + "referencedDeclaration": 70573, + "src": "9418:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -19712,30 +19728,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72671, + "id": 73457, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9410:7:117", + "src": "9410:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72670, + "id": 73456, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9410:7:117", + "src": "9410:7:130", "typeDescriptions": {} } }, - "id": 72673, + "id": 73459, "isConstant": false, "isLValue": false, "isPure": false, @@ -19744,7 +19760,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9410:13:117", + "src": "9410:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -19760,33 +19776,33 @@ } ], "expression": { - "id": 72668, + "id": 73454, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "9377:3:117", + "referencedDeclaration": 70567, + "src": "9377:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72669, + "id": 73455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9381:28:117", + "memberLocation": "9381:28:130", "memberName": "getAvReputationAndCommitment", "nodeType": "MemberAccess", "referencedDeclaration": 1379, - "src": "9377:32:117", + "src": "9377:32:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address) view external returns (uint256,uint256)" } }, - "id": 72674, + "id": 73460, "isConstant": false, "isLValue": false, "isPure": false, @@ -19795,7 +19811,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9377:47:117", + "src": "9377:47:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -19803,22 +19819,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9343:81:117" + "src": "9343:81:130" }, { "assignments": [ - 72678 + 73464 ], "declarations": [ { "constant": false, - "id": 72678, + "id": 73464, "mutability": "mutable", "name": "periodTypeData", - "nameLocation": "9452:14:117", + "nameLocation": "9452:14:130", "nodeType": "VariableDeclaration", - "scope": 72725, - "src": "9434:32:117", + "scope": 73511, + "src": "9434:32:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -19826,20 +19842,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 72677, + "id": 73463, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72676, + "id": 73462, "name": "periodData", "nameLocations": [ - "9434:10:117" + "9434:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "9434:10:117" + "src": "9434:10:130" }, "referencedDeclaration": 1207, - "src": "9434:10:117", + "src": "9434:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -19848,20 +19864,20 @@ "visibility": "internal" } ], - "id": 72686, + "id": 73472, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72683, + "id": 73469, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "9505:4:117", + "referencedDeclaration": 70573, + "src": "9505:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -19869,30 +19885,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72682, + "id": 73468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9497:7:117", + "src": "9497:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72681, + "id": 73467, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9497:7:117", + "src": "9497:7:130", "typeDescriptions": {} } }, - "id": 72684, + "id": 73470, "isConstant": false, "isLValue": false, "isPure": false, @@ -19901,7 +19917,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9497:13:117", + "src": "9497:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -19917,33 +19933,33 @@ } ], "expression": { - "id": 72679, + "id": 73465, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "9469:3:117", + "referencedDeclaration": 70567, + "src": "9469:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72680, + "id": 73466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9473:23:117", + "memberLocation": "9473:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "9469:27:117", + "src": "9469:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 72685, + "id": 73471, "isConstant": false, "isLValue": false, "isPure": false, @@ -19952,7 +19968,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9469:42:117", + "src": "9469:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -19960,7 +19976,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9434:77:117" + "src": "9434:77:130" }, { "expression": { @@ -19970,34 +19986,34 @@ "typeIdentifier": "t_int32", "typeString": "int32" }, - "id": 72691, + "id": 73477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72688, + "id": 73474, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72678, - "src": "9533:14:117", + "referencedDeclaration": 73464, + "src": "9533:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72689, + "id": 73475, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9548:14:117", + "memberLocation": "9548:14:130", "memberName": "aDiffMembersLP", "nodeType": "MemberAccess", "referencedDeclaration": 1198, - "src": "9533:29:117", + "src": "9533:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" @@ -20007,21 +20023,21 @@ "operator": "<", "rightExpression": { "hexValue": "313030", - "id": 72690, + "id": 73476, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9565:3:117", + "src": "9565:3:130", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "9533:35:117", + "src": "9533:35:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -20029,14 +20045,14 @@ }, { "hexValue": "64696666207374696c6c20313030", - "id": 72692, + "id": 73478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9570:16:117", + "src": "9570:16:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a0429512fd5d97e27acd4744956e8e1f156c28419883436fd986a6665d2c4b4c", "typeString": "literal_string \"diff still 100\"" @@ -20055,21 +20071,21 @@ "typeString": "literal_string \"diff still 100\"" } ], - "id": 72687, + "id": 73473, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "9522:10:117", + "referencedDeclaration": 11481, + "src": "9522:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72693, + "id": 73479, "isConstant": false, "isLValue": false, "isPure": false, @@ -20078,43 +20094,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9522:65:117", + "src": "9522:65:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72694, + "id": 73480, "nodeType": "ExpressionStatement", - "src": "9522:65:117" + "src": "9522:65:130" }, { "expression": { "arguments": [ { "expression": { - "id": 72698, + "id": 73484, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72678, - "src": "9612:14:117", + "referencedDeclaration": 73464, + "src": "9612:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72699, + "id": 73485, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9627:14:117", + "memberLocation": "9627:14:130", "memberName": "bMembersLastLP", "nodeType": "MemberAccess", "referencedDeclaration": 1200, - "src": "9612:29:117", + "src": "9612:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" @@ -20129,33 +20145,33 @@ } ], "expression": { - "id": 72695, + "id": 73481, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "9597:7:117", + "referencedDeclaration": 33186, + "src": "9597:7:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 72697, + "id": 73483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9605:6:117", + "memberLocation": "9605:6:130", "memberName": "logInt", "nodeType": "MemberAccess", - "referencedDeclaration": 24420, - "src": "9597:14:117", + "referencedDeclaration": 25171, + "src": "9597:14:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_int256_$returns$__$", "typeString": "function (int256) view" } }, - "id": 72700, + "id": 73486, "isConstant": false, "isLValue": false, "isPure": false, @@ -20164,43 +20180,43 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9597:45:117", + "src": "9597:45:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72701, + "id": 73487, "nodeType": "ExpressionStatement", - "src": "9597:45:117" + "src": "9597:45:130" }, { "expression": { "arguments": [ { "expression": { - "id": 72705, + "id": 73491, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72678, - "src": "9664:14:117", + "referencedDeclaration": 73464, + "src": "9664:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72706, + "id": 73492, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9679:13:117", + "memberLocation": "9679:13:130", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "9664:28:117", + "src": "9664:28:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -20215,33 +20231,33 @@ } ], "expression": { - "id": 72702, + "id": 73488, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "9652:7:117", + "referencedDeclaration": 33186, + "src": "9652:7:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 72704, + "id": 73490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9660:3:117", + "memberLocation": "9660:3:130", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24952, - "src": "9652:11:117", + "referencedDeclaration": 25703, + "src": "9652:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view" } }, - "id": 72707, + "id": 73493, "isConstant": false, "isLValue": false, "isPure": false, @@ -20250,16 +20266,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9652:41:117", + "src": "9652:41:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72708, + "id": 73494, "nodeType": "ExpressionStatement", - "src": "9652:41:117" + "src": "9652:41:130" }, { "expression": { @@ -20269,34 +20285,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72713, + "id": 73499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72710, + "id": 73496, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72678, - "src": "9714:14:117", + "referencedDeclaration": 73464, + "src": "9714:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72711, + "id": 73497, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9729:13:117", + "memberLocation": "9729:13:130", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "9714:28:117", + "src": "9714:28:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -20306,21 +20322,21 @@ "operator": ">", "rightExpression": { "hexValue": "313030", - "id": 72712, + "id": 73498, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9745:3:117", + "src": "9745:3:130", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "9714:34:117", + "src": "9714:34:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -20328,14 +20344,14 @@ }, { "hexValue": "6d656d62657273206e6f74206164646564", - "id": 72714, + "id": 73500, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9750:19:117", + "src": "9750:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c545f3683dffbbdfe36e3c9cad91a2f94942ae6fa7ea8a7ba100f8ca10cc7aa5", "typeString": "literal_string \"members not added\"" @@ -20354,21 +20370,21 @@ "typeString": "literal_string \"members not added\"" } ], - "id": 72709, + "id": 73495, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "9703:10:117", + "referencedDeclaration": 11481, + "src": "9703:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72715, + "id": 73501, "isConstant": false, "isLValue": false, "isPure": false, @@ -20377,16 +20393,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9703:67:117", + "src": "9703:67:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72716, + "id": 73502, "nodeType": "ExpressionStatement", - "src": "9703:67:117" + "src": "9703:67:130" }, { "expression": { @@ -20396,34 +20412,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72721, + "id": 73507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72718, + "id": 73504, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72678, - "src": "9791:14:117", + "referencedDeclaration": 73464, + "src": "9791:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72719, + "id": 73505, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "9806:20:117", + "memberLocation": "9806:20:130", "memberName": "dAverageCommitmentLP", "nodeType": "MemberAccess", "referencedDeclaration": 1204, - "src": "9791:35:117", + "src": "9791:35:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -20433,21 +20449,21 @@ "operator": ">", "rightExpression": { "hexValue": "34", - "id": 72720, + "id": 73506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9829:1:117", + "src": "9829:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, - "src": "9791:39:117", + "src": "9791:39:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -20455,14 +20471,14 @@ }, { "hexValue": "73616d65206176657261676520636f6d6d69746d656e74", - "id": 72722, + "id": 73508, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "9832:25:117", + "src": "9832:25:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_18034a6663cf40384d20018950eee6d3bd722106fab8e0805d7bb91a24832785", "typeString": "literal_string \"same average commitment\"" @@ -20481,21 +20497,21 @@ "typeString": "literal_string \"same average commitment\"" } ], - "id": 72717, + "id": 73503, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "9780:10:117", + "referencedDeclaration": 11481, + "src": "9780:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72723, + "id": 73509, "isConstant": false, "isLValue": false, "isPure": false, @@ -20504,16 +20520,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9780:78:117", + "src": "9780:78:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72724, + "id": 73510, "nodeType": "ExpressionStatement", - "src": "9780:78:117" + "src": "9780:78:130" } ] }, @@ -20522,33 +20538,33 @@ "kind": "function", "modifiers": [], "name": "testperiodTypeUpd2", - "nameLocation": "8603:18:117", + "nameLocation": "8603:18:130", "parameters": { - "id": 72554, + "id": 73340, "nodeType": "ParameterList", "parameters": [], - "src": "8621:2:117" + "src": "8621:2:130" }, "returnParameters": { - "id": 72555, + "id": 73341, "nodeType": "ParameterList", "parameters": [], - "src": "8631:0:117" + "src": "8631:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 72909, + "id": 73695, "nodeType": "FunctionDefinition", - "src": "9871:1339:117", + "src": "9871:1339:130", "nodes": [], "body": { - "id": 72908, + "id": 73694, "nodeType": "Block", - "src": "9908:1302:117", + "src": "9908:1302:130", "nodes": [], "statements": [ { @@ -20556,18 +20572,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 72729, + "id": 73515, "name": "testperiodTypeUpd2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72726, - "src": "9918:18:117", + "referencedDeclaration": 73512, + "src": "9918:18:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72730, + "id": 73516, "isConstant": false, "isLValue": false, "isPure": false, @@ -20576,31 +20592,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9918:20:117", + "src": "9918:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72731, + "id": 73517, "nodeType": "ExpressionStatement", - "src": "9918:20:117" + "src": "9918:20:130" }, { "assignments": [ - 72736 + 73522 ], "declarations": [ { "constant": false, - "id": 72736, + "id": 73522, "mutability": "mutable", "name": "members", - "nameLocation": "9966:7:117", + "nameLocation": "9966:7:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "9949:24:117", + "scope": 73694, + "src": "9949:24:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -20609,18 +20625,18 @@ }, "typeName": { "baseType": { - "id": 72734, + "id": 73520, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9949:7:117", + "src": "9949:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 72735, + "id": 73521, "nodeType": "ArrayTypeName", - "src": "9949:9:117", + "src": "9949:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -20629,20 +20645,20 @@ "visibility": "internal" } ], - "id": 72744, + "id": 73530, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72741, + "id": 73527, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10008:4:117", + "referencedDeclaration": 70573, + "src": "10008:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -20650,30 +20666,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72740, + "id": 73526, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10000:7:117", + "src": "10000:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72739, + "id": 73525, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10000:7:117", + "src": "10000:7:130", "typeDescriptions": {} } }, - "id": 72742, + "id": 73528, "isConstant": false, "isLValue": false, "isPure": false, @@ -20682,7 +20698,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10000:13:117", + "src": "10000:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -20698,33 +20714,33 @@ } ], "expression": { - "id": 72737, + "id": 73523, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "9976:3:117", + "referencedDeclaration": 70549, + "src": "9976:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72738, + "id": 73524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9980:19:117", + "memberLocation": "9980:19:130", "memberName": "getAllActiveMembers", "nodeType": "MemberAccess", "referencedDeclaration": 1181, - "src": "9976:23:117", + "src": "9976:23:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (address) view external returns (address[] memory)" } }, - "id": 72743, + "id": 73529, "isConstant": false, "isLValue": false, "isPure": false, @@ -20733,7 +20749,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9976:38:117", + "src": "9976:38:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -20741,22 +20757,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "9949:65:117" + "src": "9949:65:130" }, { "assignments": [ - 72746 + 73532 ], "declarations": [ { "constant": false, - "id": 72746, + "id": 73532, "mutability": "mutable", "name": "i", - "nameLocation": "10033:1:117", + "nameLocation": "10033:1:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "10025:9:117", + "scope": 73694, + "src": "10025:9:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -20764,10 +20780,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72745, + "id": 73531, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10025:7:117", + "src": "10025:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20776,17 +20792,17 @@ "visibility": "internal" } ], - "id": 72748, + "id": 73534, "initialValue": { "hexValue": "35", - "id": 72747, + "id": 73533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10037:1:117", + "src": "10037:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -20794,13 +20810,13 @@ "value": "5" }, "nodeType": "VariableDeclarationStatement", - "src": "10025:13:117" + "src": "10025:13:130" }, { "body": { - "id": 72797, + "id": 73583, "nodeType": "Block", - "src": "10078:308:117", + "src": "10078:308:130", "statements": [ { "condition": { @@ -20808,7 +20824,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72759, + "id": 73545, "isConstant": false, "isLValue": false, "isPure": false, @@ -20818,18 +20834,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72757, + "id": 73543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72755, + "id": 73541, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10096:1:117", + "referencedDeclaration": 73532, + "src": "10096:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20839,21 +20855,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72756, + "id": 73542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10100:1:117", + "src": "10100:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "10096:5:117", + "src": "10096:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20863,58 +20879,58 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72758, + "id": 73544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10105:1:117", + "src": "10105:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "10096:10:117", + "src": "10096:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 72792, + "id": 73578, "nodeType": "IfStatement", - "src": "10092:224:117", + "src": "10092:224:130", "trueBody": { - "id": 72791, + "id": 73577, "nodeType": "Block", - "src": "10108:208:117", + "src": "10108:208:130", "statements": [ { "expression": { "arguments": [ { "baseExpression": { - "id": 72763, + "id": 73549, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72736, - "src": "10135:7:117", + "referencedDeclaration": 73522, + "src": "10135:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72765, + "id": 73551, "indexExpression": { - "id": 72764, + "id": 73550, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10143:1:117", + "referencedDeclaration": 73532, + "src": "10143:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -20925,7 +20941,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10135:10:117", + "src": "10135:10:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -20940,33 +20956,33 @@ } ], "expression": { - "id": 72760, + "id": 73546, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "10126:2:117", + "referencedDeclaration": 13541, + "src": "10126:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72762, + "id": 73548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10129:5:117", + "memberLocation": "10129:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "10126:8:117", + "referencedDeclaration": 24720, + "src": "10126:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72766, + "id": 73552, "isConstant": false, "isLValue": false, "isPure": false, @@ -20975,30 +20991,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10126:20:117", + "src": "10126:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72767, + "id": 73553, "nodeType": "ExpressionStatement", - "src": "10126:20:117" + "src": "10126:20:130" }, { "expression": { "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72771, + "id": 73557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10198:19:117", + "src": "10198:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -21014,33 +21030,33 @@ } ], "expression": { - "id": 72768, + "id": 73554, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "10164:17:117", + "referencedDeclaration": 72162, + "src": "10164:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72770, + "id": 73556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10182:15:117", + "memberLocation": "10182:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "10164:33:117", + "referencedDeclaration": 7856, + "src": "10164:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72772, + "id": 73558, "isConstant": false, "isLValue": false, "isPure": false, @@ -21049,41 +21065,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10164:54:117", + "src": "10164:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72773, + "id": 73559, "nodeType": "ExpressionStatement", - "src": "10164:54:117" + "src": "10164:54:130" }, { "expression": { "arguments": [ { "baseExpression": { - "id": 72777, + "id": 73563, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72736, - "src": "10245:7:117", + "referencedDeclaration": 73522, + "src": "10245:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72779, + "id": 73565, "indexExpression": { - "id": 72778, + "id": 73564, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10253:1:117", + "referencedDeclaration": 73532, + "src": "10253:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21094,7 +21110,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "10245:10:117", + "src": "10245:10:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -21109,33 +21125,33 @@ } ], "expression": { - "id": 72774, + "id": 73560, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "10236:2:117", + "referencedDeclaration": 13541, + "src": "10236:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72776, + "id": 73562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10239:5:117", + "memberLocation": "10239:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "10236:8:117", + "referencedDeclaration": 24720, + "src": "10236:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72780, + "id": 73566, "isConstant": false, "isLValue": false, "isPure": false, @@ -21144,16 +21160,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10236:20:117", + "src": "10236:20:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72781, + "id": 73567, "nodeType": "ExpressionStatement", - "src": "10236:20:117" + "src": "10236:20:130" }, { "expression": { @@ -21161,14 +21177,14 @@ { "arguments": [ { - "id": 72787, + "id": 73573, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10295:4:117", + "referencedDeclaration": 70573, + "src": "10295:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -21176,30 +21192,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72786, + "id": 73572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10287:7:117", + "src": "10287:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72785, + "id": 73571, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10287:7:117", + "src": "10287:7:130", "typeDescriptions": {} } }, - "id": 72788, + "id": 73574, "isConstant": false, "isLValue": false, "isPure": false, @@ -21208,7 +21224,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10287:13:117", + "src": "10287:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -21224,33 +21240,33 @@ } ], "expression": { - "id": 72782, + "id": 73568, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "10274:3:117", + "referencedDeclaration": 70549, + "src": "10274:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72784, + "id": 73570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10278:8:117", + "memberLocation": "10278:8:130", "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 1142, - "src": "10274:12:117", + "src": "10274:12:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72789, + "id": 73575, "isConstant": false, "isLValue": false, "isPure": false, @@ -21259,28 +21275,28 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10274:27:117", + "src": "10274:27:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72790, + "id": 73576, "nodeType": "ExpressionStatement", - "src": "10274:27:117" + "src": "10274:27:130" } ] } }, { - "id": 72796, + "id": 73582, "nodeType": "UncheckedBlock", - "src": "10330:46:117", + "src": "10330:46:130", "statements": [ { "expression": { - "id": 72794, + "id": 73580, "isConstant": false, "isLValue": false, "isPure": false, @@ -21288,14 +21304,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "10358:3:117", + "src": "10358:3:130", "subExpression": { - "id": 72793, + "id": 73579, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10360:1:117", + "referencedDeclaration": 73532, + "src": "10360:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21306,9 +21322,9 @@ "typeString": "uint256" } }, - "id": 72795, + "id": 73581, "nodeType": "ExpressionStatement", - "src": "10358:3:117" + "src": "10358:3:130" } ] } @@ -21319,18 +21335,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72754, + "id": 73540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72751, + "id": 73537, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10057:1:117", + "referencedDeclaration": 73532, + "src": "10057:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21340,57 +21356,57 @@ "operator": "<", "rightExpression": { "expression": { - "id": 72752, + "id": 73538, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72736, - "src": "10061:7:117", + "referencedDeclaration": 73522, + "src": "10061:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72753, + "id": 73539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10069:6:117", + "memberLocation": "10069:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "10061:14:117", + "src": "10061:14:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10057:18:117", + "src": "10057:18:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 72798, + "id": 73584, "initializationExpression": { "expression": { - "id": 72749, + "id": 73535, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72746, - "src": "10054:1:117", + "referencedDeclaration": 73532, + "src": "10054:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72750, + "id": 73536, "nodeType": "ExpressionStatement", - "src": "10054:1:117" + "src": "10054:1:130" }, "nodeType": "ForStatement", - "src": "10049:337:117" + "src": "10049:337:130" }, { "expression": { @@ -21400,33 +21416,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72805, + "id": 73591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72802, + "id": 73588, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "10404:5:117", + "src": "10404:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 72803, + "id": 73589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10410:9:117", + "memberLocation": "10410:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "10404:15:117", + "src": "10404:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21436,14 +21452,14 @@ "operator": "+", "rightExpression": { "hexValue": "3331", - "id": 72804, + "id": 73590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10422:7:117", + "src": "10422:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2678400_by_1", @@ -21451,7 +21467,7 @@ }, "value": "31" }, - "src": "10404:25:117", + "src": "10404:25:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21466,33 +21482,33 @@ } ], "expression": { - "id": 72799, + "id": 73585, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "10396:2:117", + "referencedDeclaration": 13541, + "src": "10396:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72801, + "id": 73587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10399:4:117", + "memberLocation": "10399:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "10396:7:117", + "referencedDeclaration": 24657, + "src": "10396:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 72806, + "id": 73592, "isConstant": false, "isLValue": false, "isPure": false, @@ -21501,27 +21517,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10396:34:117", + "src": "10396:34:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72807, + "id": 73593, "nodeType": "ExpressionStatement", - "src": "10396:34:117" + "src": "10396:34:130" }, { "expression": { "arguments": [ { - "id": 72811, + "id": 73597, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71380, - "src": "10450:5:117", + "referencedDeclaration": 72166, + "src": "10450:5:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -21536,33 +21552,33 @@ } ], "expression": { - "id": 72808, + "id": 73594, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "10441:2:117", + "referencedDeclaration": 13541, + "src": "10441:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72810, + "id": 73596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10444:5:117", + "memberLocation": "10444:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "10441:8:117", + "referencedDeclaration": 24720, + "src": "10441:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72812, + "id": 73598, "isConstant": false, "isLValue": false, "isPure": false, @@ -21571,16 +21587,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10441:15:117", + "src": "10441:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72813, + "id": 73599, "nodeType": "ExpressionStatement", - "src": "10441:15:117" + "src": "10441:15:130" }, { "expression": { @@ -21588,14 +21604,14 @@ { "arguments": [ { - "id": 72819, + "id": 73605, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10497:4:117", + "referencedDeclaration": 70573, + "src": "10497:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -21603,30 +21619,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72818, + "id": 73604, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10489:7:117", + "src": "10489:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72817, + "id": 73603, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10489:7:117", + "src": "10489:7:130", "typeDescriptions": {} } }, - "id": 72820, + "id": 73606, "isConstant": false, "isLValue": false, "isPure": false, @@ -21635,7 +21651,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10489:13:117", + "src": "10489:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -21651,33 +21667,33 @@ } ], "expression": { - "id": 72814, + "id": 73600, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "10466:3:117", + "referencedDeclaration": 70567, + "src": "10466:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72816, + "id": 73602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10470:18:117", + "memberLocation": "10470:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "10466:22:117", + "src": "10466:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 72821, + "id": 73607, "isConstant": false, "isLValue": false, "isPure": false, @@ -21686,32 +21702,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10466:37:117", + "src": "10466:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 72822, + "id": 73608, "nodeType": "ExpressionStatement", - "src": "10466:37:117" + "src": "10466:37:130" }, { "assignments": [ - 72824, - 72826 + 73610, + 73612 ], "declarations": [ { "constant": false, - "id": 72824, + "id": 73610, "mutability": "mutable", "name": "avComm", - "nameLocation": "10523:6:117", + "nameLocation": "10523:6:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "10515:14:117", + "scope": 73694, + "src": "10515:14:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -21719,10 +21735,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72823, + "id": 73609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10515:7:117", + "src": "10515:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21732,13 +21748,13 @@ }, { "constant": false, - "id": 72826, + "id": 73612, "mutability": "mutable", "name": "avRep", - "nameLocation": "10539:5:117", + "nameLocation": "10539:5:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "10531:13:117", + "scope": 73694, + "src": "10531:13:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -21746,10 +21762,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72825, + "id": 73611, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "10531:7:117", + "src": "10531:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -21758,20 +21774,20 @@ "visibility": "internal" } ], - "id": 72834, + "id": 73620, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72831, + "id": 73617, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10589:4:117", + "referencedDeclaration": 70573, + "src": "10589:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -21779,30 +21795,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72830, + "id": 73616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10581:7:117", + "src": "10581:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72829, + "id": 73615, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10581:7:117", + "src": "10581:7:130", "typeDescriptions": {} } }, - "id": 72832, + "id": 73618, "isConstant": false, "isLValue": false, "isPure": false, @@ -21811,7 +21827,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10581:13:117", + "src": "10581:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -21827,33 +21843,33 @@ } ], "expression": { - "id": 72827, + "id": 73613, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "10548:3:117", + "referencedDeclaration": 70567, + "src": "10548:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72828, + "id": 73614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10552:28:117", + "memberLocation": "10552:28:130", "memberName": "getAvReputationAndCommitment", "nodeType": "MemberAccess", "referencedDeclaration": 1379, - "src": "10548:32:117", + "src": "10548:32:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$", "typeString": "function (address) view external returns (uint256,uint256)" } }, - "id": 72833, + "id": 73619, "isConstant": false, "isLValue": false, "isPure": false, @@ -21862,7 +21878,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10548:47:117", + "src": "10548:47:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", @@ -21870,22 +21886,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "10514:81:117" + "src": "10514:81:130" }, { "assignments": [ - 72837 + 73623 ], "declarations": [ { "constant": false, - "id": 72837, + "id": 73623, "mutability": "mutable", "name": "periodTypeData", - "nameLocation": "10623:14:117", + "nameLocation": "10623:14:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "10605:32:117", + "scope": 73694, + "src": "10605:32:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -21893,20 +21909,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 72836, + "id": 73622, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 72835, + "id": 73621, "name": "periodData", "nameLocations": [ - "10605:10:117" + "10605:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "10605:10:117" + "src": "10605:10:130" }, "referencedDeclaration": 1207, - "src": "10605:10:117", + "src": "10605:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -21915,20 +21931,20 @@ "visibility": "internal" } ], - "id": 72845, + "id": 73631, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72842, + "id": 73628, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10676:4:117", + "referencedDeclaration": 70573, + "src": "10676:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -21936,30 +21952,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72841, + "id": 73627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10668:7:117", + "src": "10668:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72840, + "id": 73626, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10668:7:117", + "src": "10668:7:130", "typeDescriptions": {} } }, - "id": 72843, + "id": 73629, "isConstant": false, "isLValue": false, "isPure": false, @@ -21968,7 +21984,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10668:13:117", + "src": "10668:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -21984,33 +22000,33 @@ } ], "expression": { - "id": 72838, + "id": 73624, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "10640:3:117", + "referencedDeclaration": 70567, + "src": "10640:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 72839, + "id": 73625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10644:23:117", + "memberLocation": "10644:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "10640:27:117", + "src": "10640:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 72844, + "id": 73630, "isConstant": false, "isLValue": false, "isPure": false, @@ -22019,7 +22035,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10640:42:117", + "src": "10640:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -22027,22 +22043,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "10605:77:117" + "src": "10605:77:130" }, { "assignments": [ - 72850 + 73636 ], "declarations": [ { "constant": false, - "id": 72850, + "id": 73636, "mutability": "mutable", "name": "allMembers2", - "nameLocation": "10710:11:117", + "nameLocation": "10710:11:130", "nodeType": "VariableDeclaration", - "scope": 72908, - "src": "10693:28:117", + "scope": 73694, + "src": "10693:28:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -22051,18 +22067,18 @@ }, "typeName": { "baseType": { - "id": 72848, + "id": 73634, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10693:7:117", + "src": "10693:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 72849, + "id": 73635, "nodeType": "ArrayTypeName", - "src": "10693:9:117", + "src": "10693:9:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -22071,20 +22087,20 @@ "visibility": "internal" } ], - "id": 72858, + "id": 73644, "initialValue": { "arguments": [ { "arguments": [ { - "id": 72855, + "id": 73641, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "10756:4:117", + "referencedDeclaration": 70573, + "src": "10756:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -22092,30 +22108,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 72854, + "id": 73640, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10748:7:117", + "src": "10748:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72853, + "id": 73639, "name": "address", "nodeType": "ElementaryTypeName", - "src": "10748:7:117", + "src": "10748:7:130", "typeDescriptions": {} } }, - "id": 72856, + "id": 73642, "isConstant": false, "isLValue": false, "isPure": false, @@ -22124,7 +22140,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10748:13:117", + "src": "10748:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -22140,33 +22156,33 @@ } ], "expression": { - "id": 72851, + "id": 73637, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "10724:3:117", + "referencedDeclaration": 70549, + "src": "10724:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 72852, + "id": 73638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10728:19:117", + "memberLocation": "10728:19:130", "memberName": "getAllActiveMembers", "nodeType": "MemberAccess", "referencedDeclaration": 1181, - "src": "10724:23:117", + "src": "10724:23:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (address) view external returns (address[] memory)" } }, - "id": 72857, + "id": 73643, "isConstant": false, "isLValue": false, "isPure": false, @@ -22175,7 +22191,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10724:38:117", + "src": "10724:38:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -22183,7 +22199,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "10693:69:117" + "src": "10693:69:130" }, { "expression": { @@ -22193,34 +22209,34 @@ "typeIdentifier": "t_int32", "typeString": "int32" }, - "id": 72863, + "id": 73649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72860, + "id": 73646, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72837, - "src": "10784:14:117", + "referencedDeclaration": 73623, + "src": "10784:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72861, + "id": 73647, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "10799:14:117", + "memberLocation": "10799:14:130", "memberName": "aDiffMembersLP", "nodeType": "MemberAccess", "referencedDeclaration": 1198, - "src": "10784:29:117", + "src": "10784:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" @@ -22230,21 +22246,21 @@ "operator": "<", "rightExpression": { "hexValue": "30", - "id": 72862, + "id": 73648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "10816:1:117", + "src": "10816:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "10784:33:117", + "src": "10784:33:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22252,14 +22268,14 @@ }, { "hexValue": "6578706563746564206e65676174697665206f6e206c6f7374206d656d62657273", - "id": 72864, + "id": 73650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10819:35:117", + "src": "10819:35:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2e81145b42ea1ff6cdca2d008df0c2165cebd79c9b0370c509ca6e208fd04d01", "typeString": "literal_string \"expected negative on lost members\"" @@ -22278,21 +22294,21 @@ "typeString": "literal_string \"expected negative on lost members\"" } ], - "id": 72859, + "id": 73645, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "10773:10:117", + "referencedDeclaration": 11481, + "src": "10773:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72865, + "id": 73651, "isConstant": false, "isLValue": false, "isPure": false, @@ -22301,16 +22317,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10773:82:117", + "src": "10773:82:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72866, + "id": 73652, "nodeType": "ExpressionStatement", - "src": "10773:82:117" + "src": "10773:82:130" }, { "expression": { @@ -22320,33 +22336,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72872, + "id": 73658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72868, + "id": 73654, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72736, - "src": "10876:7:117", + "referencedDeclaration": 73522, + "src": "10876:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72869, + "id": 73655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10884:6:117", + "memberLocation": "10884:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "10876:14:117", + "src": "10876:14:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22356,32 +22372,32 @@ "operator": ">", "rightExpression": { "expression": { - "id": 72870, + "id": 73656, "name": "allMembers2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72850, - "src": "10893:11:117", + "referencedDeclaration": 73636, + "src": "10893:11:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72871, + "id": 73657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "10905:6:117", + "memberLocation": "10905:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "10893:18:117", + "src": "10893:18:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10876:35:117", + "src": "10876:35:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22389,14 +22405,14 @@ }, { "hexValue": "6d656d62657273206c65667420666f72206e656761746976652064696666", - "id": 72873, + "id": 73659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "10913:32:117", + "src": "10913:32:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_241a5642c0c6d7191d14cdeeebd1da03fce79c4cd3de97b26eb9ecfa6fa0ff5d", "typeString": "literal_string \"members left for negative diff\"" @@ -22415,21 +22431,21 @@ "typeString": "literal_string \"members left for negative diff\"" } ], - "id": 72867, + "id": 73653, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "10865:10:117", + "referencedDeclaration": 11481, + "src": "10865:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72874, + "id": 73660, "isConstant": false, "isLValue": false, "isPure": false, @@ -22438,16 +22454,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10865:81:117", + "src": "10865:81:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72875, + "id": 73661, "nodeType": "ExpressionStatement", - "src": "10865:81:117" + "src": "10865:81:130" }, { "expression": { @@ -22457,7 +22473,7 @@ "typeIdentifier": "t_int64", "typeString": "int64" }, - "id": 72896, + "id": 73682, "isConstant": false, "isLValue": false, "isPure": false, @@ -22467,7 +22483,7 @@ "typeIdentifier": "t_int64", "typeString": "int64" }, - "id": 72893, + "id": 73679, "isConstant": false, "isLValue": false, "isPure": false, @@ -22478,26 +22494,26 @@ "arguments": [ { "expression": { - "id": 72881, + "id": 73667, "name": "allMembers2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72850, - "src": "10993:11:117", + "referencedDeclaration": 73636, + "src": "10993:11:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72882, + "id": 73668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11005:6:117", + "memberLocation": "11005:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "10993:18:117", + "src": "10993:18:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22511,26 +22527,26 @@ "typeString": "uint256" } ], - "id": 72880, + "id": 73666, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10986:6:117", + "src": "10986:6:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_int256_$", "typeString": "type(int256)" }, "typeName": { - "id": 72879, + "id": 73665, "name": "int256", "nodeType": "ElementaryTypeName", - "src": "10986:6:117", + "src": "10986:6:130", "typeDescriptions": {} } }, - "id": 72883, + "id": 73669, "isConstant": false, "isLValue": false, "isPure": false, @@ -22539,7 +22555,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10986:26:117", + "src": "10986:26:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int256", @@ -22554,26 +22570,26 @@ "typeString": "int256" } ], - "id": 72878, + "id": 73664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "10980:5:117", + "src": "10980:5:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_int64_$", "typeString": "type(int64)" }, "typeName": { - "id": 72877, + "id": 73663, "name": "int64", "nodeType": "ElementaryTypeName", - "src": "10980:5:117", + "src": "10980:5:130", "typeDescriptions": {} } }, - "id": 72884, + "id": 73670, "isConstant": false, "isLValue": false, "isPure": false, @@ -22582,7 +22598,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10980:33:117", + "src": "10980:33:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int64", @@ -22597,26 +22613,26 @@ "arguments": [ { "expression": { - "id": 72889, + "id": 73675, "name": "members", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72736, - "src": "11029:7:117", + "referencedDeclaration": 73522, + "src": "11029:7:130", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 72890, + "id": 73676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11037:6:117", + "memberLocation": "11037:6:130", "memberName": "length", "nodeType": "MemberAccess", - "src": "11029:14:117", + "src": "11029:14:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22630,26 +22646,26 @@ "typeString": "uint256" } ], - "id": 72888, + "id": 73674, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "11022:6:117", + "src": "11022:6:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_int256_$", "typeString": "type(int256)" }, "typeName": { - "id": 72887, + "id": 73673, "name": "int256", "nodeType": "ElementaryTypeName", - "src": "11022:6:117", + "src": "11022:6:130", "typeDescriptions": {} } }, - "id": 72891, + "id": 73677, "isConstant": false, "isLValue": false, "isPure": false, @@ -22658,7 +22674,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11022:22:117", + "src": "11022:22:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int256", @@ -22673,26 +22689,26 @@ "typeString": "int256" } ], - "id": 72886, + "id": 73672, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "11016:5:117", + "src": "11016:5:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_int64_$", "typeString": "type(int64)" }, "typeName": { - "id": 72885, + "id": 73671, "name": "int64", "nodeType": "ElementaryTypeName", - "src": "11016:5:117", + "src": "11016:5:130", "typeDescriptions": {} } }, - "id": 72892, + "id": 73678, "isConstant": false, "isLValue": false, "isPure": false, @@ -22701,14 +22717,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11016:29:117", + "src": "11016:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int64", "typeString": "int64" } }, - "src": "10980:65:117", + "src": "10980:65:130", "typeDescriptions": { "typeIdentifier": "t_int64", "typeString": "int64" @@ -22718,33 +22734,33 @@ "operator": "==", "rightExpression": { "expression": { - "id": 72894, + "id": 73680, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72837, - "src": "11049:14:117", + "referencedDeclaration": 73623, + "src": "11049:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72895, + "id": 73681, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "11064:14:117", + "memberLocation": "11064:14:130", "memberName": "aDiffMembersLP", "nodeType": "MemberAccess", "referencedDeclaration": 1198, - "src": "11049:29:117", + "src": "11049:29:130", "typeDescriptions": { "typeIdentifier": "t_int32", "typeString": "int32" } }, - "src": "10980:98:117", + "src": "10980:98:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22752,14 +22768,14 @@ }, { "hexValue": "65787065637465642064696666", - "id": 72897, + "id": 73683, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11092:15:117", + "src": "11092:15:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_67f12204c5814ea798f8019f2377650549883eb564985263d36dc68e16f8ca44", "typeString": "literal_string \"expected diff\"" @@ -22778,21 +22794,21 @@ "typeString": "literal_string \"expected diff\"" } ], - "id": 72876, + "id": 73662, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "10956:10:117", + "referencedDeclaration": 11481, + "src": "10956:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72898, + "id": 73684, "isConstant": false, "isLValue": false, "isPure": false, @@ -22801,16 +22817,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10956:161:117", + "src": "10956:161:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72899, + "id": 73685, "nodeType": "ExpressionStatement", - "src": "10956:161:117" + "src": "10956:161:130" }, { "expression": { @@ -22820,34 +22836,34 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 72904, + "id": 73690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72901, + "id": 73687, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72837, - "src": "11139:14:117", + "referencedDeclaration": 73623, + "src": "11139:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 72902, + "id": 73688, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "11154:14:117", + "memberLocation": "11154:14:130", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "11139:29:117", + "src": "11139:29:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -22857,21 +22873,21 @@ "operator": ">", "rightExpression": { "hexValue": "30", - "id": 72903, + "id": 73689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11171:1:117", + "src": "11171:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "11139:33:117", + "src": "11139:33:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -22879,14 +22895,14 @@ }, { "hexValue": "657870656374656420706572666f726d616e63652073636f7265", - "id": 72905, + "id": 73691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11174:28:117", + "src": "11174:28:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_83b4fa9d43c71fcf21c5fe20a1fefab1277b74c3a7c59b8dc690e2a4beab6e27", "typeString": "literal_string \"expected performance score\"" @@ -22905,21 +22921,21 @@ "typeString": "literal_string \"expected performance score\"" } ], - "id": 72900, + "id": 73686, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "11128:10:117", + "referencedDeclaration": 11481, + "src": "11128:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 72906, + "id": 73692, "isConstant": false, "isLValue": false, "isPure": false, @@ -22928,16 +22944,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11128:75:117", + "src": "11128:75:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72907, + "id": 73693, "nodeType": "ExpressionStatement", - "src": "11128:75:117" + "src": "11128:75:130" } ] }, @@ -22946,33 +22962,33 @@ "kind": "function", "modifiers": [], "name": "testMembershipDiff", - "nameLocation": "9880:18:117", + "nameLocation": "9880:18:130", "parameters": { - "id": 72727, + "id": 73513, "nodeType": "ParameterList", "parameters": [], - "src": "9898:2:117" + "src": "9898:2:130" }, "returnParameters": { - "id": 72728, + "id": 73514, "nodeType": "ParameterList", "parameters": [], - "src": "9908:0:117" + "src": "9908:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 73210, + "id": 73996, "nodeType": "FunctionDefinition", - "src": "11216:2469:117", + "src": "11216:2469:130", "nodes": [], "body": { - "id": 73209, + "id": 73995, "nodeType": "Block", - "src": "11257:2428:117", + "src": "11257:2428:130", "nodes": [], "statements": [ { @@ -22980,18 +22996,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 72912, + "id": 73698, "name": "testperiodTypeDataUpdates", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72553, - "src": "11267:25:117", + "referencedDeclaration": 73339, + "src": "11267:25:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 72913, + "id": 73699, "isConstant": false, "isLValue": false, "isPure": false, @@ -23000,31 +23016,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11267:27:117", + "src": "11267:27:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72914, + "id": 73700, "nodeType": "ExpressionStatement", - "src": "11267:27:117" + "src": "11267:27:130" }, { "assignments": [ - 72916 + 73702 ], "declarations": [ { "constant": false, - "id": 72916, + "id": 73702, "mutability": "mutable", "name": "i", - "nameLocation": "11313:1:117", + "nameLocation": "11313:1:130", "nodeType": "VariableDeclaration", - "scope": 73209, - "src": "11305:9:117", + "scope": 73995, + "src": "11305:9:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23032,10 +23048,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72915, + "id": 73701, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "11305:7:117", + "src": "11305:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23044,17 +23060,17 @@ "visibility": "internal" } ], - "id": 72918, + "id": 73704, "initialValue": { "hexValue": "31", - "id": 72917, + "id": 73703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11317:1:117", + "src": "11317:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -23062,13 +23078,13 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "11305:13:117" + "src": "11305:13:130" }, { "body": { - "id": 73009, + "id": 73795, "nodeType": "Block", - "src": "11347:800:117", + "src": "11347:800:130", "statements": [ { "expression": { @@ -23078,12 +23094,12 @@ { "arguments": [ { - "id": 72931, + "id": 73717, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11386:1:117", + "referencedDeclaration": 73702, + "src": "11386:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23097,26 +23113,26 @@ "typeString": "uint256" } ], - "id": 72930, + "id": 73716, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "11378:7:117", + "src": "11378:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 72929, + "id": 73715, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "11378:7:117", + "src": "11378:7:130", "typeDescriptions": {} } }, - "id": 72932, + "id": 73718, "isConstant": false, "isLValue": false, "isPure": false, @@ -23125,7 +23141,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11378:10:117", + "src": "11378:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -23140,26 +23156,26 @@ "typeString": "uint160" } ], - "id": 72928, + "id": 73714, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "11370:7:117", + "src": "11370:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 72927, + "id": 73713, "name": "address", "nodeType": "ElementaryTypeName", - "src": "11370:7:117", + "src": "11370:7:130", "typeDescriptions": {} } }, - "id": 72933, + "id": 73719, "isConstant": false, "isLValue": false, "isPure": false, @@ -23168,7 +23184,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11370:19:117", + "src": "11370:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -23184,33 +23200,33 @@ } ], "expression": { - "id": 72924, + "id": 73710, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "11361:2:117", + "referencedDeclaration": 13541, + "src": "11361:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72926, + "id": 73712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11364:5:117", + "memberLocation": "11364:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "11361:8:117", + "referencedDeclaration": 24720, + "src": "11361:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 72934, + "id": 73720, "isConstant": false, "isLValue": false, "isPure": false, @@ -23219,16 +23235,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11361:29:117", + "src": "11361:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 72935, + "id": 73721, "nodeType": "ExpressionStatement", - "src": "11361:29:117" + "src": "11361:29:130" }, { "expression": { @@ -23239,7 +23255,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72940, + "id": 73726, "isConstant": false, "isLValue": false, "isPure": false, @@ -23249,18 +23265,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72938, + "id": 73724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72936, + "id": 73722, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11405:1:117", + "referencedDeclaration": 73702, + "src": "11405:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23270,21 +23286,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72937, + "id": 73723, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11409:1:117", + "src": "11409:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "11405:5:117", + "src": "11405:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23294,35 +23310,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72939, + "id": 73725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11414:1:117", + "src": "11414:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "11405:10:117", + "src": "11405:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72941, + "id": 73727, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "11404:12:117", + "src": "11404:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23332,14 +23348,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72947, + "id": 73733, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11530:19:117", + "src": "11530:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -23355,33 +23371,33 @@ } ], "expression": { - "id": 72945, + "id": 73731, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11496:17:117", + "referencedDeclaration": 72162, + "src": "11496:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72946, + "id": 73732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11514:15:117", + "memberLocation": "11514:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "11496:33:117", + "referencedDeclaration": 7856, + "src": "11496:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72948, + "id": 73734, "isConstant": false, "isLValue": false, "isPure": false, @@ -23390,52 +23406,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11496:54:117", + "src": "11496:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72949, + "id": 73735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "11404:146:117", + "src": "11404:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72942, + "id": 73728, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11435:17:117", + "referencedDeclaration": 72162, + "src": "11435:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72943, + "id": 73729, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11453:22:117", + "memberLocation": "11453:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "11435:40:117", + "referencedDeclaration": 7872, + "src": "11435:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72944, + "id": 73730, "isConstant": false, "isLValue": false, "isPure": false, @@ -23444,7 +23460,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11435:42:117", + "src": "11435:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -23456,9 +23472,9 @@ "typeString": "uint256" } }, - "id": 72950, + "id": 73736, "nodeType": "ExpressionStatement", - "src": "11404:146:117" + "src": "11404:146:130" }, { "expression": { @@ -23469,7 +23485,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72955, + "id": 73741, "isConstant": false, "isLValue": false, "isPure": false, @@ -23479,18 +23495,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72953, + "id": 73739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72951, + "id": 73737, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11566:1:117", + "referencedDeclaration": 73702, + "src": "11566:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23500,21 +23516,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72952, + "id": 73738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11570:1:117", + "src": "11570:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "11566:5:117", + "src": "11566:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23524,35 +23540,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72954, + "id": 73740, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11575:1:117", + "src": "11575:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "11566:10:117", + "src": "11566:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72956, + "id": 73742, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "11565:12:117", + "src": "11565:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23562,14 +23578,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72962, + "id": 73748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11691:19:117", + "src": "11691:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -23585,33 +23601,33 @@ } ], "expression": { - "id": 72960, + "id": 73746, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11657:17:117", + "referencedDeclaration": 72162, + "src": "11657:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72961, + "id": 73747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11675:15:117", + "memberLocation": "11675:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "11657:33:117", + "referencedDeclaration": 7856, + "src": "11657:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72963, + "id": 73749, "isConstant": false, "isLValue": false, "isPure": false, @@ -23620,52 +23636,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11657:54:117", + "src": "11657:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72964, + "id": 73750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "11565:146:117", + "src": "11565:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72957, + "id": 73743, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11596:17:117", + "referencedDeclaration": 72162, + "src": "11596:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72958, + "id": 73744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11614:22:117", + "memberLocation": "11614:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "11596:40:117", + "referencedDeclaration": 7872, + "src": "11596:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72959, + "id": 73745, "isConstant": false, "isLValue": false, "isPure": false, @@ -23674,7 +23690,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11596:42:117", + "src": "11596:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -23686,9 +23702,9 @@ "typeString": "uint256" } }, - "id": 72965, + "id": 73751, "nodeType": "ExpressionStatement", - "src": "11565:146:117" + "src": "11565:146:130" }, { "expression": { @@ -23699,7 +23715,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72970, + "id": 73756, "isConstant": false, "isLValue": false, "isPure": false, @@ -23709,18 +23725,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72968, + "id": 73754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72966, + "id": 73752, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11727:1:117", + "referencedDeclaration": 73702, + "src": "11727:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23730,21 +23746,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72967, + "id": 73753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11731:1:117", + "src": "11731:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "11727:5:117", + "src": "11727:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23754,35 +23770,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72969, + "id": 73755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11736:1:117", + "src": "11736:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "11727:10:117", + "src": "11727:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72971, + "id": 73757, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "11726:12:117", + "src": "11726:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23792,14 +23808,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72977, + "id": 73763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "11852:19:117", + "src": "11852:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -23815,33 +23831,33 @@ } ], "expression": { - "id": 72975, + "id": 73761, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11818:17:117", + "referencedDeclaration": 72162, + "src": "11818:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72976, + "id": 73762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11836:15:117", + "memberLocation": "11836:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "11818:33:117", + "referencedDeclaration": 7856, + "src": "11818:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72978, + "id": 73764, "isConstant": false, "isLValue": false, "isPure": false, @@ -23850,52 +23866,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11818:54:117", + "src": "11818:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72979, + "id": 73765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "11726:146:117", + "src": "11726:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72972, + "id": 73758, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11757:17:117", + "referencedDeclaration": 72162, + "src": "11757:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72973, + "id": 73759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11775:22:117", + "memberLocation": "11775:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "11757:40:117", + "referencedDeclaration": 7872, + "src": "11757:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72974, + "id": 73760, "isConstant": false, "isLValue": false, "isPure": false, @@ -23904,7 +23920,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11757:42:117", + "src": "11757:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -23916,9 +23932,9 @@ "typeString": "uint256" } }, - "id": 72980, + "id": 73766, "nodeType": "ExpressionStatement", - "src": "11726:146:117" + "src": "11726:146:130" }, { "expression": { @@ -23929,7 +23945,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72985, + "id": 73771, "isConstant": false, "isLValue": false, "isPure": false, @@ -23939,18 +23955,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72983, + "id": 73769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72981, + "id": 73767, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11888:1:117", + "referencedDeclaration": 73702, + "src": "11888:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23960,21 +23976,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 72982, + "id": 73768, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11892:1:117", + "src": "11892:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "11888:5:117", + "src": "11888:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23984,35 +24000,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 72984, + "id": 73770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11897:1:117", + "src": "11897:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "11888:10:117", + "src": "11888:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 72986, + "id": 73772, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "11887:12:117", + "src": "11887:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24022,14 +24038,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 72992, + "id": 73778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12013:19:117", + "src": "12013:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -24045,33 +24061,33 @@ } ], "expression": { - "id": 72990, + "id": 73776, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11979:17:117", + "referencedDeclaration": 72162, + "src": "11979:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72991, + "id": 73777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11997:15:117", + "memberLocation": "11997:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "11979:33:117", + "referencedDeclaration": 7856, + "src": "11979:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 72993, + "id": 73779, "isConstant": false, "isLValue": false, "isPure": false, @@ -24080,52 +24096,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11979:54:117", + "src": "11979:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72994, + "id": 73780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "11887:146:117", + "src": "11887:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 72987, + "id": 73773, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "11918:17:117", + "referencedDeclaration": 72162, + "src": "11918:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 72988, + "id": 73774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "11936:22:117", + "memberLocation": "11936:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "11918:40:117", + "referencedDeclaration": 7872, + "src": "11918:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 72989, + "id": 73775, "isConstant": false, "isLValue": false, "isPure": false, @@ -24134,7 +24150,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11918:42:117", + "src": "11918:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -24146,9 +24162,9 @@ "typeString": "uint256" } }, - "id": 72995, + "id": 73781, "nodeType": "ExpressionStatement", - "src": "11887:146:117" + "src": "11887:146:130" }, { "expression": { @@ -24158,33 +24174,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73002, + "id": 73788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 72999, + "id": 73785, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "12056:5:117", + "src": "12056:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73000, + "id": 73786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12062:9:117", + "memberLocation": "12062:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "12056:15:117", + "src": "12056:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24194,21 +24210,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 73001, + "id": 73787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12074:1:117", + "src": "12074:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "12056:19:117", + "src": "12056:19:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24223,33 +24239,33 @@ } ], "expression": { - "id": 72996, + "id": 73782, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "12048:2:117", + "referencedDeclaration": 13541, + "src": "12048:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 72998, + "id": 73784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12051:4:117", + "memberLocation": "12051:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "12048:7:117", + "referencedDeclaration": 24657, + "src": "12048:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73003, + "id": 73789, "isConstant": false, "isLValue": false, "isPure": false, @@ -24258,25 +24274,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12048:28:117", + "src": "12048:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73004, + "id": 73790, "nodeType": "ExpressionStatement", - "src": "12048:28:117" + "src": "12048:28:130" }, { - "id": 73008, + "id": 73794, "nodeType": "UncheckedBlock", - "src": "12091:46:117", + "src": "12091:46:130", "statements": [ { "expression": { - "id": 73006, + "id": 73792, "isConstant": false, "isLValue": false, "isPure": false, @@ -24284,14 +24300,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "12119:3:117", + "src": "12119:3:130", "subExpression": { - "id": 73005, + "id": 73791, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12121:1:117", + "referencedDeclaration": 73702, + "src": "12121:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24302,9 +24318,9 @@ "typeString": "uint256" } }, - "id": 73007, + "id": 73793, "nodeType": "ExpressionStatement", - "src": "12119:3:117" + "src": "12119:3:130" } ] } @@ -24315,18 +24331,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 72923, + "id": 73709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 72921, + "id": 73707, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11337:1:117", + "referencedDeclaration": 73702, + "src": "11337:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24336,46 +24352,46 @@ "operator": "<", "rightExpression": { "hexValue": "313030", - "id": 72922, + "id": 73708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "11341:3:117", + "src": "11341:3:130", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "11337:7:117", + "src": "11337:7:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 73010, + "id": 73796, "initializationExpression": { "expression": { - "id": 72919, + "id": 73705, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "11334:1:117", + "referencedDeclaration": 73702, + "src": "11334:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 72920, + "id": 73706, "nodeType": "ExpressionStatement", - "src": "11334:1:117" + "src": "11334:1:130" }, "nodeType": "ForStatement", - "src": "11329:818:117" + "src": "11329:818:130" }, { "expression": { @@ -24385,33 +24401,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73017, + "id": 73803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73014, + "id": 73800, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "12164:5:117", + "src": "12164:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73015, + "id": 73801, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12170:9:117", + "memberLocation": "12170:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "12164:15:117", + "src": "12164:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24421,14 +24437,14 @@ "operator": "+", "rightExpression": { "hexValue": "3331", - "id": 73016, + "id": 73802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12182:7:117", + "src": "12182:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2678400_by_1", @@ -24436,7 +24452,7 @@ }, "value": "31" }, - "src": "12164:25:117", + "src": "12164:25:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24451,33 +24467,33 @@ } ], "expression": { - "id": 73011, + "id": 73797, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "12156:2:117", + "referencedDeclaration": 13541, + "src": "12156:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73013, + "id": 73799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12159:4:117", + "memberLocation": "12159:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "12156:7:117", + "referencedDeclaration": 24657, + "src": "12156:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73018, + "id": 73804, "isConstant": false, "isLValue": false, "isPure": false, @@ -24486,27 +24502,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12156:34:117", + "src": "12156:34:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73019, + "id": 73805, "nodeType": "ExpressionStatement", - "src": "12156:34:117" + "src": "12156:34:130" }, { "expression": { "arguments": [ { - "id": 73023, + "id": 73809, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "12210:2:117", + "referencedDeclaration": 70587, + "src": "12210:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24521,33 +24537,33 @@ } ], "expression": { - "id": 73020, + "id": 73806, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "12201:2:117", + "referencedDeclaration": 13541, + "src": "12201:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73022, + "id": 73808, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12204:5:117", + "memberLocation": "12204:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "12201:8:117", + "referencedDeclaration": 24720, + "src": "12201:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73024, + "id": 73810, "isConstant": false, "isLValue": false, "isPure": false, @@ -24556,16 +24572,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12201:12:117", + "src": "12201:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73025, + "id": 73811, "nodeType": "ExpressionStatement", - "src": "12201:12:117" + "src": "12201:12:130" }, { "expression": { @@ -24573,14 +24589,14 @@ { "arguments": [ { - "id": 73031, + "id": 73817, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "12254:4:117", + "referencedDeclaration": 70573, + "src": "12254:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -24588,30 +24604,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73030, + "id": 73816, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12246:7:117", + "src": "12246:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73029, + "id": 73815, "name": "address", "nodeType": "ElementaryTypeName", - "src": "12246:7:117", + "src": "12246:7:130", "typeDescriptions": {} } }, - "id": 73032, + "id": 73818, "isConstant": false, "isLValue": false, "isPure": false, @@ -24620,7 +24636,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12246:13:117", + "src": "12246:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -24636,33 +24652,33 @@ } ], "expression": { - "id": 73026, + "id": 73812, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "12223:3:117", + "referencedDeclaration": 70567, + "src": "12223:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73028, + "id": 73814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12227:18:117", + "memberLocation": "12227:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "12223:22:117", + "src": "12223:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 73033, + "id": 73819, "isConstant": false, "isLValue": false, "isPure": false, @@ -24671,31 +24687,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12223:37:117", + "src": "12223:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 73034, + "id": 73820, "nodeType": "ExpressionStatement", - "src": "12223:37:117" + "src": "12223:37:130" }, { "assignments": [ - 73037 + 73823 ], "declarations": [ { "constant": false, - "id": 73037, + "id": 73823, "mutability": "mutable", "name": "periodTypeData", - "nameLocation": "12289:14:117", + "nameLocation": "12289:14:130", "nodeType": "VariableDeclaration", - "scope": 73209, - "src": "12271:32:117", + "scope": 73995, + "src": "12271:32:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -24703,20 +24719,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 73036, + "id": 73822, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73035, + "id": 73821, "name": "periodData", "nameLocations": [ - "12271:10:117" + "12271:10:130" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "12271:10:117" + "src": "12271:10:130" }, "referencedDeclaration": 1207, - "src": "12271:10:117", + "src": "12271:10:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -24725,20 +24741,20 @@ "visibility": "internal" } ], - "id": 73045, + "id": 73831, "initialValue": { "arguments": [ { "arguments": [ { - "id": 73042, + "id": 73828, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "12342:4:117", + "referencedDeclaration": 70573, + "src": "12342:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -24746,30 +24762,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73041, + "id": 73827, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12334:7:117", + "src": "12334:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73040, + "id": 73826, "name": "address", "nodeType": "ElementaryTypeName", - "src": "12334:7:117", + "src": "12334:7:130", "typeDescriptions": {} } }, - "id": 73043, + "id": 73829, "isConstant": false, "isLValue": false, "isPure": false, @@ -24778,7 +24794,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12334:13:117", + "src": "12334:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -24794,33 +24810,33 @@ } ], "expression": { - "id": 73038, + "id": 73824, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "12306:3:117", + "referencedDeclaration": 70567, + "src": "12306:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73039, + "id": 73825, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12310:23:117", + "memberLocation": "12310:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "12306:27:117", + "src": "12306:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 73044, + "id": 73830, "isConstant": false, "isLValue": false, "isPure": false, @@ -24829,7 +24845,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12306:42:117", + "src": "12306:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -24837,34 +24853,34 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "12271:77:117" + "src": "12271:77:130" }, { "expression": { "arguments": [ { "expression": { - "id": 73049, + "id": 73835, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73037, - "src": "12370:14:117", + "referencedDeclaration": 73823, + "src": "12370:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73050, + "id": 73836, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "12385:14:117", + "memberLocation": "12385:14:130", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "12370:29:117", + "src": "12370:29:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -24879,33 +24895,33 @@ } ], "expression": { - "id": 73046, + "id": 73832, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "12358:7:117", + "referencedDeclaration": 33186, + "src": "12358:7:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 73048, + "id": 73834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12366:3:117", + "memberLocation": "12366:3:130", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24952, - "src": "12358:11:117", + "referencedDeclaration": 25703, + "src": "12358:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view" } }, - "id": 73051, + "id": 73837, "isConstant": false, "isLValue": false, "isPure": false, @@ -24914,31 +24930,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12358:42:117", + "src": "12358:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73052, + "id": 73838, "nodeType": "ExpressionStatement", - "src": "12358:42:117" + "src": "12358:42:130" }, { "assignments": [ - 73054 + 73840 ], "declarations": [ { "constant": false, - "id": 73054, + "id": 73840, "mutability": "mutable", "name": "performance1", - "nameLocation": "12417:12:117", + "nameLocation": "12417:12:130", "nodeType": "VariableDeclaration", - "scope": 73209, - "src": "12410:19:117", + "scope": 73995, + "src": "12410:19:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24946,10 +24962,10 @@ "typeString": "uint64" }, "typeName": { - "id": 73053, + "id": 73839, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "12410:6:117", + "src": "12410:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -24958,52 +24974,52 @@ "visibility": "internal" } ], - "id": 73057, + "id": 73843, "initialValue": { "expression": { - "id": 73055, + "id": 73841, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73037, - "src": "12432:14:117", + "referencedDeclaration": 73823, + "src": "12432:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73056, + "id": 73842, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "12447:14:117", + "memberLocation": "12447:14:130", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "12432:29:117", + "src": "12432:29:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "VariableDeclarationStatement", - "src": "12410:51:117" + "src": "12410:51:130" }, { "expression": { - "id": 73060, + "id": 73846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73058, + "id": 73844, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12472:1:117", + "referencedDeclaration": 73702, + "src": "12472:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25013,35 +25029,35 @@ "operator": "=", "rightHandSide": { "hexValue": "31", - "id": 73059, + "id": 73845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12476:1:117", + "src": "12476:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "12472:5:117", + "src": "12472:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73061, + "id": 73847, "nodeType": "ExpressionStatement", - "src": "12472:5:117" + "src": "12472:5:130" }, { "body": { - "id": 73154, + "id": 73940, "nodeType": "Block", - "src": "12506:803:117", + "src": "12506:803:130", "statements": [ { "expression": { @@ -25051,12 +25067,12 @@ { "arguments": [ { - "id": 73074, + "id": 73860, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12545:1:117", + "referencedDeclaration": 73702, + "src": "12545:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25070,26 +25086,26 @@ "typeString": "uint256" } ], - "id": 73073, + "id": 73859, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12537:7:117", + "src": "12537:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 73072, + "id": 73858, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "12537:7:117", + "src": "12537:7:130", "typeDescriptions": {} } }, - "id": 73075, + "id": 73861, "isConstant": false, "isLValue": false, "isPure": false, @@ -25098,7 +25114,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12537:10:117", + "src": "12537:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -25113,26 +25129,26 @@ "typeString": "uint160" } ], - "id": 73071, + "id": 73857, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "12529:7:117", + "src": "12529:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73070, + "id": 73856, "name": "address", "nodeType": "ElementaryTypeName", - "src": "12529:7:117", + "src": "12529:7:130", "typeDescriptions": {} } }, - "id": 73076, + "id": 73862, "isConstant": false, "isLValue": false, "isPure": false, @@ -25141,7 +25157,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12529:19:117", + "src": "12529:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -25157,33 +25173,33 @@ } ], "expression": { - "id": 73067, + "id": 73853, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "12520:2:117", + "referencedDeclaration": 13541, + "src": "12520:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73069, + "id": 73855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12523:5:117", + "memberLocation": "12523:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "12520:8:117", + "referencedDeclaration": 24720, + "src": "12520:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73077, + "id": 73863, "isConstant": false, "isLValue": false, "isPure": false, @@ -25192,16 +25208,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12520:29:117", + "src": "12520:29:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73078, + "id": 73864, "nodeType": "ExpressionStatement", - "src": "12520:29:117" + "src": "12520:29:130" }, { "expression": { @@ -25212,7 +25228,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73083, + "id": 73869, "isConstant": false, "isLValue": false, "isPure": false, @@ -25222,18 +25238,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73081, + "id": 73867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73079, + "id": 73865, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12564:1:117", + "referencedDeclaration": 73702, + "src": "12564:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25243,21 +25259,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 73080, + "id": 73866, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12568:1:117", + "src": "12568:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "12564:5:117", + "src": "12564:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25267,35 +25283,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73082, + "id": 73868, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12573:1:117", + "src": "12573:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "12564:10:117", + "src": "12564:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 73084, + "id": 73870, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "12563:12:117", + "src": "12563:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25305,14 +25321,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 73090, + "id": 73876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12689:19:117", + "src": "12689:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -25328,33 +25344,33 @@ } ], "expression": { - "id": 73088, + "id": 73874, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12655:17:117", + "referencedDeclaration": 72162, + "src": "12655:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73089, + "id": 73875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12673:15:117", + "memberLocation": "12673:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "12655:33:117", + "referencedDeclaration": 7856, + "src": "12655:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 73091, + "id": 73877, "isConstant": false, "isLValue": false, "isPure": false, @@ -25363,52 +25379,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12655:54:117", + "src": "12655:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73092, + "id": 73878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "12563:146:117", + "src": "12563:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 73085, + "id": 73871, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12594:17:117", + "referencedDeclaration": 72162, + "src": "12594:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73086, + "id": 73872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12612:22:117", + "memberLocation": "12612:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "12594:40:117", + "referencedDeclaration": 7872, + "src": "12594:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 73087, + "id": 73873, "isConstant": false, "isLValue": false, "isPure": false, @@ -25417,7 +25433,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12594:42:117", + "src": "12594:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -25429,16 +25445,16 @@ "typeString": "uint256" } }, - "id": 73093, + "id": 73879, "nodeType": "ExpressionStatement", - "src": "12563:146:117" + "src": "12563:146:130" }, { "expression": { "condition": { "components": [ { - "id": 73100, + "id": 73886, "isConstant": false, "isLValue": false, "isPure": false, @@ -25446,7 +25462,7 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "12725:13:117", + "src": "12725:13:130", "subExpression": { "components": [ { @@ -25454,7 +25470,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73098, + "id": 73884, "isConstant": false, "isLValue": false, "isPure": false, @@ -25464,18 +25480,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73096, + "id": 73882, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73094, + "id": 73880, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12727:1:117", + "referencedDeclaration": 73702, + "src": "12727:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25485,21 +25501,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 73095, + "id": 73881, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12731:1:117", + "src": "12731:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "12727:5:117", + "src": "12727:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25509,35 +25525,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73097, + "id": 73883, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12736:1:117", + "src": "12736:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "12727:10:117", + "src": "12727:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 73099, + "id": 73885, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "12726:12:117", + "src": "12726:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25549,14 +25565,14 @@ } } ], - "id": 73101, + "id": 73887, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "12724:15:117", + "src": "12724:15:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25566,14 +25582,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 73107, + "id": 73893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "12853:19:117", + "src": "12853:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -25589,33 +25605,33 @@ } ], "expression": { - "id": 73105, + "id": 73891, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12819:17:117", + "referencedDeclaration": 72162, + "src": "12819:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73106, + "id": 73892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12837:15:117", + "memberLocation": "12837:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "12819:33:117", + "referencedDeclaration": 7856, + "src": "12819:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 73108, + "id": 73894, "isConstant": false, "isLValue": false, "isPure": false, @@ -25624,52 +25640,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12819:54:117", + "src": "12819:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73109, + "id": 73895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "12724:149:117", + "src": "12724:149:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 73102, + "id": 73888, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12758:17:117", + "referencedDeclaration": 72162, + "src": "12758:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73103, + "id": 73889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12776:22:117", + "memberLocation": "12776:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "12758:40:117", + "referencedDeclaration": 7872, + "src": "12758:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 73104, + "id": 73890, "isConstant": false, "isLValue": false, "isPure": false, @@ -25678,7 +25694,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12758:42:117", + "src": "12758:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -25690,9 +25706,9 @@ "typeString": "uint256" } }, - "id": 73110, + "id": 73896, "nodeType": "ExpressionStatement", - "src": "12724:149:117" + "src": "12724:149:130" }, { "expression": { @@ -25703,7 +25719,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73115, + "id": 73901, "isConstant": false, "isLValue": false, "isPure": false, @@ -25713,18 +25729,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73113, + "id": 73899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73111, + "id": 73897, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12889:1:117", + "referencedDeclaration": 73702, + "src": "12889:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25734,21 +25750,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 73112, + "id": 73898, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12893:1:117", + "src": "12893:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "12889:5:117", + "src": "12889:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25758,35 +25774,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73114, + "id": 73900, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12898:1:117", + "src": "12898:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "12889:10:117", + "src": "12889:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 73116, + "id": 73902, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "12888:12:117", + "src": "12888:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -25796,14 +25812,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 73122, + "id": 73908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "13014:19:117", + "src": "13014:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -25819,33 +25835,33 @@ } ], "expression": { - "id": 73120, + "id": 73906, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12980:17:117", + "referencedDeclaration": 72162, + "src": "12980:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73121, + "id": 73907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12998:15:117", + "memberLocation": "12998:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "12980:33:117", + "referencedDeclaration": 7856, + "src": "12980:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 73123, + "id": 73909, "isConstant": false, "isLValue": false, "isPure": false, @@ -25854,52 +25870,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12980:54:117", + "src": "12980:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73124, + "id": 73910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "12888:146:117", + "src": "12888:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 73117, + "id": 73903, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "12919:17:117", + "referencedDeclaration": 72162, + "src": "12919:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73118, + "id": 73904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "12937:22:117", + "memberLocation": "12937:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "12919:40:117", + "referencedDeclaration": 7872, + "src": "12919:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 73119, + "id": 73905, "isConstant": false, "isLValue": false, "isPure": false, @@ -25908,7 +25924,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "12919:42:117", + "src": "12919:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -25920,9 +25936,9 @@ "typeString": "uint256" } }, - "id": 73125, + "id": 73911, "nodeType": "ExpressionStatement", - "src": "12888:146:117" + "src": "12888:146:130" }, { "expression": { @@ -25933,7 +25949,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73130, + "id": 73916, "isConstant": false, "isLValue": false, "isPure": false, @@ -25943,18 +25959,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73128, + "id": 73914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73126, + "id": 73912, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "13050:1:117", + "referencedDeclaration": 73702, + "src": "13050:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25964,21 +25980,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 73127, + "id": 73913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13054:1:117", + "src": "13054:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "13050:5:117", + "src": "13050:5:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -25988,35 +26004,35 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73129, + "id": 73915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13059:1:117", + "src": "13059:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "13050:10:117", + "src": "13050:10:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], - "id": 73131, + "id": 73917, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "13049:12:117", + "src": "13049:12:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -26026,14 +26042,14 @@ "arguments": [ { "hexValue": "617665727972616e646f6d737472696e67", - "id": 73137, + "id": 73923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "13175:19:117", + "src": "13175:19:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_628c9b51b5fd95dc5a1c0f4562c037151ee98c4b70429a1d45ccaa6bda35bd9f", "typeString": "literal_string \"averyrandomstring\"" @@ -26049,33 +26065,33 @@ } ], "expression": { - "id": 73135, + "id": 73921, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "13141:17:117", + "referencedDeclaration": 72162, + "src": "13141:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73136, + "id": 73922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13159:15:117", + "memberLocation": "13159:15:130", "memberName": "incrementNumber", "nodeType": "MemberAccess", - "referencedDeclaration": 7105, - "src": "13141:33:117", + "referencedDeclaration": 7856, + "src": "13141:33:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) external returns (uint256)" } }, - "id": 73138, + "id": 73924, "isConstant": false, "isLValue": false, "isPure": false, @@ -26084,52 +26100,52 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13141:54:117", + "src": "13141:54:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73139, + "id": 73925, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "13049:146:117", + "src": "13049:146:130", "trueExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 73132, + "id": 73918, "name": "InteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71376, - "src": "13080:17:117", + "referencedDeclaration": 72162, + "src": "13080:17:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 73133, + "id": 73919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13098:22:117", + "memberLocation": "13098:22:130", "memberName": "incrementNumberPlusOne", "nodeType": "MemberAccess", - "referencedDeclaration": 7121, - "src": "13080:40:117", + "referencedDeclaration": 7872, + "src": "13080:40:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, - "id": 73134, + "id": 73920, "isConstant": false, "isLValue": false, "isPure": false, @@ -26138,7 +26154,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13080:42:117", + "src": "13080:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -26150,9 +26166,9 @@ "typeString": "uint256" } }, - "id": 73140, + "id": 73926, "nodeType": "ExpressionStatement", - "src": "13049:146:117" + "src": "13049:146:130" }, { "expression": { @@ -26162,33 +26178,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73147, + "id": 73933, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73144, + "id": 73930, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "13218:5:117", + "src": "13218:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73145, + "id": 73931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13224:9:117", + "memberLocation": "13224:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "13218:15:117", + "src": "13218:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26198,21 +26214,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 73146, + "id": 73932, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13236:1:117", + "src": "13236:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "13218:19:117", + "src": "13218:19:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26227,33 +26243,33 @@ } ], "expression": { - "id": 73141, + "id": 73927, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "13210:2:117", + "referencedDeclaration": 13541, + "src": "13210:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73143, + "id": 73929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13213:4:117", + "memberLocation": "13213:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "13210:7:117", + "referencedDeclaration": 24657, + "src": "13210:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73148, + "id": 73934, "isConstant": false, "isLValue": false, "isPure": false, @@ -26262,25 +26278,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13210:28:117", + "src": "13210:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73149, + "id": 73935, "nodeType": "ExpressionStatement", - "src": "13210:28:117" + "src": "13210:28:130" }, { - "id": 73153, + "id": 73939, "nodeType": "UncheckedBlock", - "src": "13253:46:117", + "src": "13253:46:130", "statements": [ { "expression": { - "id": 73151, + "id": 73937, "isConstant": false, "isLValue": false, "isPure": false, @@ -26288,14 +26304,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "13281:3:117", + "src": "13281:3:130", "subExpression": { - "id": 73150, + "id": 73936, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "13283:1:117", + "referencedDeclaration": 73702, + "src": "13283:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26306,9 +26322,9 @@ "typeString": "uint256" } }, - "id": 73152, + "id": 73938, "nodeType": "ExpressionStatement", - "src": "13281:3:117" + "src": "13281:3:130" } ] } @@ -26319,18 +26335,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73066, + "id": 73852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73064, + "id": 73850, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12496:1:117", + "referencedDeclaration": 73702, + "src": "12496:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26340,46 +26356,46 @@ "operator": "<", "rightExpression": { "hexValue": "313030", - "id": 73065, + "id": 73851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "12500:3:117", + "src": "12500:3:130", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, - "src": "12496:7:117", + "src": "12496:7:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 73155, + "id": 73941, "initializationExpression": { "expression": { - "id": 73062, + "id": 73848, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 72916, - "src": "12493:1:117", + "referencedDeclaration": 73702, + "src": "12493:1:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73063, + "id": 73849, "nodeType": "ExpressionStatement", - "src": "12493:1:117" + "src": "12493:1:130" }, "nodeType": "ForStatement", - "src": "12488:821:117" + "src": "12488:821:130" }, { "expression": { @@ -26389,33 +26405,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73162, + "id": 73948, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73159, + "id": 73945, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "13326:5:117", + "src": "13326:5:130", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73160, + "id": 73946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13332:9:117", + "memberLocation": "13332:9:130", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "13326:15:117", + "src": "13326:15:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26425,14 +26441,14 @@ "operator": "+", "rightExpression": { "hexValue": "3331", - "id": 73161, + "id": 73947, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13344:7:117", + "src": "13344:7:130", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2678400_by_1", @@ -26440,7 +26456,7 @@ }, "value": "31" }, - "src": "13326:25:117", + "src": "13326:25:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -26455,33 +26471,33 @@ } ], "expression": { - "id": 73156, + "id": 73942, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "13318:2:117", + "referencedDeclaration": 13541, + "src": "13318:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73158, + "id": 73944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13321:4:117", + "memberLocation": "13321:4:130", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "13318:7:117", + "referencedDeclaration": 24657, + "src": "13318:7:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73163, + "id": 73949, "isConstant": false, "isLValue": false, "isPure": false, @@ -26490,27 +26506,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13318:34:117", + "src": "13318:34:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73164, + "id": 73950, "nodeType": "ExpressionStatement", - "src": "13318:34:117" + "src": "13318:34:130" }, { "expression": { "arguments": [ { - "id": 73168, + "id": 73954, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "13372:2:117", + "referencedDeclaration": 70587, + "src": "13372:2:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -26525,33 +26541,33 @@ } ], "expression": { - "id": 73165, + "id": 73951, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "13363:2:117", + "referencedDeclaration": 13541, + "src": "13363:2:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73167, + "id": 73953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13366:5:117", + "memberLocation": "13366:5:130", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "13363:8:117", + "referencedDeclaration": 24720, + "src": "13363:8:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73169, + "id": 73955, "isConstant": false, "isLValue": false, "isPure": false, @@ -26560,16 +26576,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13363:12:117", + "src": "13363:12:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73170, + "id": 73956, "nodeType": "ExpressionStatement", - "src": "13363:12:117" + "src": "13363:12:130" }, { "expression": { @@ -26577,14 +26593,14 @@ { "arguments": [ { - "id": 73176, + "id": 73962, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "13416:4:117", + "referencedDeclaration": 70573, + "src": "13416:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -26592,30 +26608,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73175, + "id": 73961, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "13408:7:117", + "src": "13408:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73174, + "id": 73960, "name": "address", "nodeType": "ElementaryTypeName", - "src": "13408:7:117", + "src": "13408:7:130", "typeDescriptions": {} } }, - "id": 73177, + "id": 73963, "isConstant": false, "isLValue": false, "isPure": false, @@ -26624,7 +26640,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13408:13:117", + "src": "13408:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -26640,33 +26656,33 @@ } ], "expression": { - "id": 73171, + "id": 73957, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "13385:3:117", + "referencedDeclaration": 70567, + "src": "13385:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73173, + "id": 73959, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13389:18:117", + "memberLocation": "13389:18:130", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "13385:22:117", + "src": "13385:22:130", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 73178, + "id": 73964, "isConstant": false, "isLValue": false, "isPure": false, @@ -26675,31 +26691,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13385:37:117", + "src": "13385:37:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 73179, + "id": 73965, "nodeType": "ExpressionStatement", - "src": "13385:37:117" + "src": "13385:37:130" }, { "expression": { - "id": 73188, + "id": 73974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73180, + "id": 73966, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73037, - "src": "13433:14:117", + "referencedDeclaration": 73823, + "src": "13433:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" @@ -26712,14 +26728,14 @@ { "arguments": [ { - "id": 73185, + "id": 73971, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "13486:4:117", + "referencedDeclaration": 70573, + "src": "13486:4:130", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -26727,30 +26743,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73184, + "id": 73970, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "13478:7:117", + "src": "13478:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73183, + "id": 73969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "13478:7:117", + "src": "13478:7:130", "typeDescriptions": {} } }, - "id": 73186, + "id": 73972, "isConstant": false, "isLValue": false, "isPure": false, @@ -26759,7 +26775,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13478:13:117", + "src": "13478:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -26775,33 +26791,33 @@ } ], "expression": { - "id": 73181, + "id": 73967, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "13450:3:117", + "referencedDeclaration": 70567, + "src": "13450:3:130", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73182, + "id": 73968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13454:23:117", + "memberLocation": "13454:23:130", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "13450:27:117", + "src": "13450:27:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 73187, + "id": 73973, "isConstant": false, "isLValue": false, "isPure": false, @@ -26810,49 +26826,49 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13450:42:117", + "src": "13450:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "src": "13433:59:117", + "src": "13433:59:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73189, + "id": 73975, "nodeType": "ExpressionStatement", - "src": "13433:59:117" + "src": "13433:59:130" }, { "expression": { "arguments": [ { "expression": { - "id": 73193, + "id": 73979, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73037, - "src": "13514:14:117", + "referencedDeclaration": 73823, + "src": "13514:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73194, + "id": 73980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "13529:14:117", + "memberLocation": "13529:14:130", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "13514:29:117", + "src": "13514:29:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -26867,33 +26883,33 @@ } ], "expression": { - "id": 73190, + "id": 73976, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "13502:7:117", + "referencedDeclaration": 33186, + "src": "13502:7:130", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 73192, + "id": 73978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13510:3:117", + "memberLocation": "13510:3:130", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24952, - "src": "13502:11:117", + "referencedDeclaration": 25703, + "src": "13502:11:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view" } }, - "id": 73195, + "id": 73981, "isConstant": false, "isLValue": false, "isPure": false, @@ -26902,31 +26918,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13502:42:117", + "src": "13502:42:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73196, + "id": 73982, "nodeType": "ExpressionStatement", - "src": "13502:42:117" + "src": "13502:42:130" }, { "assignments": [ - 73198 + 73984 ], "declarations": [ { "constant": false, - "id": 73198, + "id": 73984, "mutability": "mutable", "name": "performance2", - "nameLocation": "13561:12:117", + "nameLocation": "13561:12:130", "nodeType": "VariableDeclaration", - "scope": 73209, - "src": "13554:19:117", + "scope": 73995, + "src": "13554:19:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -26934,10 +26950,10 @@ "typeString": "uint64" }, "typeName": { - "id": 73197, + "id": 73983, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "13554:6:117", + "src": "13554:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -26946,37 +26962,37 @@ "visibility": "internal" } ], - "id": 73201, + "id": 73987, "initialValue": { "expression": { - "id": 73199, + "id": 73985, "name": "periodTypeData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73037, - "src": "13576:14:117", + "referencedDeclaration": 73823, + "src": "13576:14:130", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73200, + "id": 73986, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "13591:14:117", + "memberLocation": "13591:14:130", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "13576:29:117", + "src": "13576:29:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "VariableDeclarationStatement", - "src": "13554:51:117" + "src": "13554:51:130" }, { "expression": { @@ -26986,18 +27002,18 @@ "typeIdentifier": "t_uint64", "typeString": "uint64" }, - "id": 73205, + "id": 73991, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73203, + "id": 73989, "name": "performance2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73198, - "src": "13627:12:117", + "referencedDeclaration": 73984, + "src": "13627:12:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -27006,18 +27022,18 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { - "id": 73204, + "id": 73990, "name": "performance1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73054, - "src": "13643:12:117", + "referencedDeclaration": 73840, + "src": "13643:12:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, - "src": "13627:28:117", + "src": "13627:28:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -27025,14 +27041,14 @@ }, { "hexValue": "657175616c6c7920706572666f726d616e74", - "id": 73206, + "id": 73992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "13657:20:117", + "src": "13657:20:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ff20a784c5654856d0476f29981e54aa6a70edbffa117314cbb7fc915afa16a4", "typeString": "literal_string \"equally performant\"" @@ -27051,21 +27067,21 @@ "typeString": "literal_string \"equally performant\"" } ], - "id": 73202, + "id": 73988, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "13616:10:117", + "referencedDeclaration": 11481, + "src": "13616:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73207, + "id": 73993, "isConstant": false, "isLValue": false, "isPure": false, @@ -27074,16 +27090,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "13616:62:117", + "src": "13616:62:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73208, + "id": 73994, "nodeType": "ExpressionStatement", - "src": "13616:62:117" + "src": "13616:62:130" } ] }, @@ -27092,20 +27108,20 @@ "kind": "function", "modifiers": [], "name": "testPerformanceChanges", - "nameLocation": "11225:22:117", + "nameLocation": "11225:22:130", "parameters": { - "id": 72910, + "id": 73696, "nodeType": "ParameterList", "parameters": [], - "src": "11247:2:117" + "src": "11247:2:130" }, "returnParameters": { - "id": 72911, + "id": 73697, "nodeType": "ParameterList", "parameters": [], - "src": "11257:0:117" + "src": "11257:0:130" }, - "scope": 73211, + "scope": 73997, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -27115,55 +27131,55 @@ "baseContracts": [ { "baseName": { - "id": 71369, + "id": 72155, "name": "DeploysInit", "nameLocations": [ - "393:11:117" + "393:11:130" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "393:11:117" + "referencedDeclaration": 71026, + "src": "393:11:130" }, - "id": 71370, + "id": 72156, "nodeType": "InheritanceSpecifier", - "src": "393:11:117" + "src": "393:11:130" } ], "canonicalName": "TestSampleInteractionPlugin", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 7122, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 7873, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 73211, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 73997, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "TestSampleInteractionPlugin", - "nameLocation": "362:27:117", - "scope": 73212, + "nameLocation": "362:27:130", + "scope": 73998, "usedErrors": [] } ], "license": "MIT" }, - "id": 117 + "id": 130 } \ No newline at end of file diff --git a/out/SocialBot.t.sol/TestSocialBotPlugin.json b/out/SocialBot.t.sol/TestSocialBotPlugin.json index 0c2f0689..4a592240 100644 --- a/out/SocialBot.t.sol/TestSocialBotPlugin.json +++ b/out/SocialBot.t.sol/TestSocialBotPlugin.json @@ -587,13 +587,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b5062015b7d80620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001205760003560e01c806366d9a9a011620000af578063b5508aa9116200007a578063b5508aa914620001da578063ba414fa614620001e4578063bc63aee514620001ff578063e20c9f711462000209578063fa7626d4146200021357600080fd5b806366d9a9a014620001945780636782a7d514620001ad57806385226c8114620001b7578063916a17c614620001d057600080fd5b80632ade388011620000f05780632ade3880146200016757806332a3fe0f146200015d5780633e5e3c2314620001805780633f7286f4146200018a57600080fd5b806203603214620001255780630a9254e414620001315780631ed7831c146200013b5780632571fac2146200015d575b600080fd5b6200012f62000221565b005b6200012f620005b5565b6200014562001146565b60405162000154919062003836565b60405180910390f35b6200012f620011aa565b6200017162001216565b604051620001549190620038a6565b6200014562001364565b62000145620013c6565b6200019e62001428565b6040516200015491906200396c565b6200012f62001512565b620001c16200222b565b60405162000154919062003a23565b6200019e62002305565b620001c1620023ef565b620001ee620024c9565b604051901515815260200162000154565b6200012f620025f6565b62000145620028ef565b600754620001ee9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200026b9160016001600160a01b039091163b119062002951565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002b69160026001600160a01b039091163b119062002951565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003009160046001600160a01b039091163b119062002951565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200034a9160056001600160a01b039091163b119062002951565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003939160066001600160a01b039091163b119062002951565b601e54602454604080516341dcea9160e01b8152905162000439936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062003aa1565b6001600160a01b03161460405180606001604052806028815260200162015b206028913962002951565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004ef92919091169063adcee6e390602401602060405180830381865afa1580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003abf565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002951565b620005b360006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000578919062003aa1565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002951565b565b60004215620005c55742620005cb565b636553f0ff5b905060008051602062015ad783398151915263e5d6bf02620005ef83600162003ae3565b6040518263ffffffff1660e01b81526004016200060e91815260200190565b600060405180830381600087803b1580156200062957600080fd5b505af11580156200063e573d6000803e3d6000fd5b505050506200064c6200299f565b6040516200065a9062003772565b604051809103906000f08015801562000677573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062015ad7833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200077a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a0919062003aa1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b1580156200084557600080fd5b505af11580156200085a573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d8919062003aa1565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200096657600080fd5b505af11580156200097b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b158015620009d457600080fd5b505af1158015620009e9573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000a2892600192600492911690820162003b0b565b600060405180830381600087803b15801562000a4357600080fd5b505af115801562000a58573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000ab157600080fd5b505af115801562000ac6573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000b069260019260069291169060040162003b0b565b600060405180830381600087803b15801562000b2157600080fd5b505af115801562000b36573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8f57600080fd5b505af115801562000ba4573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000be49260019260099291169060040162003b0b565b600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6d57600080fd5b505af115801562000c82573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000ca3915062003780565b6001600160a01b039091168152602001604051809103906000f08015801562000cd0573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062015ad7833981519152915063ca669fa790602401600060405180830381600087803b15801562000dd257600080fd5b505af115801562000de7573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000e2a9216908590600190889060040162003b7b565b6020604051808303816000875af115801562000e4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e70919062003c18565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562000ec857600080fd5b505af115801562000edd573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000f3257600080fd5b505af115801562000f47573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062003c18565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b815260048101939093526200108c9316916324d7806c91016020604051808303816000875af11580156200102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001050919062003abf565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062002951565b60248054602f5460405163288c314960e21b81526001600160a01b0391821660048201526200114193919092169163a230c5249101602060405180830381865afa158015620010df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001105919062003abf565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d626572000000000000000081525062003518565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620011a057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001181575b5050505050905090565b604051636ec1689f60e11b81526001600482015260008051602062015ad78339815191529063dd82d13e90602401600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50505050620005b362001512565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200135b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001343578382906000526020600020018054620012af9062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620012dd9062003c32565b80156200132e5780601f1062001302576101008083540402835291602001916200132e565b820191906000526020600020905b8154815290600101906020018083116200131057829003601f168201915b5050505050815260200190600101906200128d565b5050505081525050815260200190600101906200123a565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620014f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620014ba5790505b505050505081525050815260200190600101906200144c565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050604080518082019091526013815272436f6d6d756e697479204d656574696e67203760681b60208201526024546027548551939450610280936001600160a01b0392831692909116908690600090620015b257620015b262003c84565b6001600160a01b039283166020918202929092010152602854865191169086906001908110620015e657620015e662003c84565b60200260200101906001600160a01b031690816001600160a01b0316815250506050846000815181106200161e576200161e62003c84565b602002602001019061ffff16908161ffff168152505060f0846001815181106200164c576200164c62003c84565b61ffff92909216602092830291909101909101526024805460275460405163288c314960e21b81526001600160a01b0391821660048201526200170593919092169163a230c5249101602060405180830381865afa158015620016b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016d9919062003abf565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002951565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620017aa93919092169163a230c5249101602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062003abf565b6040518060400160405280600d81526020016c2099903737ba1036b2b6b132b960991b81525062002951565b604051630618f58760e51b8152637bfa4b9f60e01b600482015260008051602062015ad78339815191529063c31eb0e090602401600060405180830381600087803b158015620017f957600080fd5b505af11580156200180e573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200184a90889088908890889060040162003c9a565b6020604051808303816000875af11580156200186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001890919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038381166004830152600092169063318e3d8c9060240160a060405180830381865afa158015620018dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001903919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0385811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152868216602482015292935060009291169063584f01be90604401608060405180830381865afa158015620019d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019fc919062003f6e565b905062001a4c60405180606001604052806029815260200162015af76029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562001aa157600080fd5b505af115801562001ab6573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb309915062001af2908b908b908b908b9060040162003c9a565b6020604051808303816000875af115801562001b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b38919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038681166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bab919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0388811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c23919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152898216602482015292935060009291169063584f01be90604401608060405180830381865afa15801562001c7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca4919062003f6e565b905062001cf460405180606001604052806029815260200162015af76029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001d5357600080fd5b505af115801562001d68573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038b811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001db9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de391908101906200400d565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528982166024820152600092919091169063584f01be90604401608060405180830381865afa15801562001e3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e64919062003f6e565b905062001e7f62001e7942622a300062003ae3565b62003572565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562001ed457600080fd5b505af115801562001ee9573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038c811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001f3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f6491908101906200400d565b50602254604051630c638f6360e21b81526001600160a01b038a81166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001fb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd7919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b038c811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562002029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204f919062003e9f565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b158015620020a757600080fd5b505af1158015620020bc573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316634acdb3098f8f8f8f6040518563ffffffff1660e01b815260040162002109949392919062003c9a565b6020604051808303816000875af115801562002129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200214f919062003c18565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528c8216602482015291169063584f01be90604401608060405180830381865afa158015620021a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021cb919062003f6e565b92506200221b60405180606001604052806029815260200162015af76029913983604001516001600160401b031684608001516001600160401b031686602001516001600160401b031662003525565b5050505050505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620022719062003c32565b80601f01602080910402602001604051908101604052809291908181526020018280546200229f9062003c32565b8015620022f05780601f10620022c457610100808354040283529160200191620022f0565b820191906000526020600020905b815481529060010190602001808311620022d257829003601f168201915b5050505050815260200190600101906200224f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023d657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023975790505b5050505050815250508152602001906001019062002329565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620024359062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620024639062003c32565b8015620024b45780601f106200248857610100808354040283529160200191620024b4565b820191906000526020600020905b8154815290600101906020018083116200249657829003601f168201915b50505050508152602001906001019062002413565b600754600090610100900460ff1615620024ec5750600754610100900460ff1690565b600060008051602062015ad78339815191523b15620025f1576040805160008051602062015ad7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002573917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620040ac565b60408051601f19818403018152908290526200258f91620040df565b6000604051808303816000865af19150503d8060008114620025ce576040519150601f19603f3d011682016040523d82523d6000602084013e620025d3565b606091505b5091505080806020019051810190620025ed919062003abf565b9150505b919050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805180820182526013815272436f6d6d756e697479204d656574696e67203760681b60208201529051630618f58760e51b8152637bfa4b9f60e01b60048201529192506103e89160008051602062015ad78339815191529063c31eb0e090602401600060405180830381600087803b158015620026b757600080fd5b505af1158015620026cc573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200270890879087908790879060040162003c9a565b6020604051808303816000875af115801562002728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200274e919062003c18565b5060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b158015620027a457600080fd5b505af1158015620027b9573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb3099150620027f590879087908790879060040162003c9a565b6020604051808303816000875af115801562002815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283b919062003c18565b50602d5460408051631298d80960e21b81529051620028e9926001600160a01b031691634a6360249160048083019260009291908290030181865afa15801562002889573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028b3919081019062004252565b51600114604051806040016040528060138152602001723737ba1037b7329034b73a32b930b1ba34b7b760691b81525062002951565b50505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b816200299b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620029889190620043b8565b60405180910390a16200299b82620035cd565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002a3057600080fd5b505af115801562002a45573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062015ad7833981519152925063c657c7189150608401600060405180830381600087803b15801562002ada57600080fd5b505af115801562002aef573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062015ad7833981519152925063c657c7189150608401600060405180830381600087803b15801562002b8457600080fd5b505af115801562002b99573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002c3a57600080fd5b505af115801562002c4f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062015ad783398151915292506306447d569150602401600060405180830381600087803b15801562002ca857600080fd5b505af115801562002cbd573d6000803e3d6000fd5b5050505060405162002ccf906200378e565b604051809103906000f08015801562002cec573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002d7657600080fd5b505af115801562002d8b573d6000803e3d6000fd5b5050505060405162002d9d906200379c565b604051809103906000f08015801562002dba573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002e4357600080fd5b505af115801562002e58573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002ea657600080fd5b505af115801562002ebb573d6000803e3d6000fd5b5050505060405162002ecd90620037aa565b604051809103906000f08015801562002eea573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002f7057600080fd5b505af115801562002f85573d6000803e3d6000fd5b5050505060405162002f9790620037b8565b604051809103906000f08015801562002fb4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200303e57600080fd5b505af115801562003053573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620030749150620037c6565b6001600160a01b039091168152602001604051809103906000f080158015620030a1573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200313057600080fd5b505af115801562003145573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620031669150620037d4565b6001600160a01b039091168152602001604051809103906000f08015801562003193573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200322257600080fd5b505af115801562003237573d6000803e3d6000fd5b50505050604051620032499062003772565b604051809103906000f08015801562003266573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620032c657600080fd5b505af1158015620032db573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200330c90620037e2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003351573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b158015620033de57600080fd5b505af1158015620033f3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200346f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003495919062003aa1565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062015ad7833981519152916390c5013b9160048082019260009290919082900301818387803b158015620034fc57600080fd5b505af115801562003511573d6000803e3d6000fd5b5050505050565b6200299b82158262002951565b620028e984848484604051602401620035429493929190620043e9565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b17905262003648565b60008051602062015ad783398151915263e5d6bf0262003593834262003ae3565b6040518263ffffffff1660e01b8152600401620035b291815260200190565b600060405180830381600087803b158015620034fc57600080fd5b8062003645577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036339060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200364562003669565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062015ad78339815191523b1562003761576040805160008051602062015ad7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620036fc9291602001620040ac565b60408051601f19818403018152908290526200371891620040df565b6000604051808303816000865af19150503d806000811462003757576040519150601f19603f3d011682016040523d82523d6000602084013e6200375c565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200441b83390190565b6115b38062007bf083390190565b61012080620091a383390190565b610c7280620092c383390190565b6137238062009f3583390190565b6123c2806200d65883390190565b6110db806200fa1a83390190565b6130438062010af583390190565b611f9f8062013b3883390190565b600081518084526020808501945080840160005b838110156200382b5781516001600160a01b03168752958201959082019060010162003804565b509495945050505050565b6020815260006200384b6020830184620037f0565b9392505050565b60005b838110156200386f57818101518382015260200162003855565b50506000910152565b600081518084526200389281602086016020860162003852565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200395c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200394557605f198985030183526200393284865162003878565b948e01949350918d019160010162003913565b505050978a019794505091880191600101620038cd565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003a1457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620039fe5783516001600160e01b0319168252928b019260019290920191908b0190620039d2565b50978a0197955050509187019160010162003994565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003a7c57603f1988860301845262003a6985835162003878565b9450928501929085019060010162003a4a565b5092979650505050505050565b80516001600160a01b0381168114620025f157600080fd5b60006020828403121562003ab457600080fd5b6200384b8262003a89565b60006020828403121562003ad257600080fd5b815180151581146200384b57600080fd5b8082018082111562003b0557634e487b7160e01b600052601160045260246000fd5b92915050565b60a08152600062003b3260a08301600681526561204e616d6560d01b602082015260400190565b828103602084015262003b578160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562003c095783518352928401929184019160010162003beb565b50909998505050505050505050565b60006020828403121562003c2b57600080fd5b5051919050565b600181811c9082168062003c4757607f821691505b60208210810362003c6857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60808152600062003caf6080830187620037f0565b82810360208481019190915286518083528782019282019060005b8181101562003cec57845161ffff168352938301939183019160010162003cca565b505061ffff87166040860152848103606086015262003d0c818762003878565b9998505050505050505050565b60405160a081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b60405290565b60405161014081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b604051601f8201601f191681016001600160401b038111828210171562003d955762003d9562003c6e565b604052919050565b8051600381900b8114620025f157600080fd5b80516001600160401b0381168114620025f157600080fd5b600060a0828403121562003ddb57600080fd5b62003de562003d19565b905062003df28262003d9d565b815262003e026020830162003d9d565b602082015262003e156040830162003db0565b604082015262003e286060830162003db0565b606082015262003e3b6080830162003db0565b608082015292915050565b600060a0828403121562003e5957600080fd5b6200384b838362003dc8565b805161ffff81168114620025f157600080fd5b805160ff81168114620025f157600080fd5b805163ffffffff81168114620025f157600080fd5b60006101c0828403121562003eb357600080fd5b62003ebd62003d44565b62003ec88362003db0565b815262003ed86020840162003db0565b602082015262003eeb6040840162003db0565b604082015262003efe6060840162003e65565b606082015262003f116080840162003e78565b608082015262003f2460a0840162003e78565b60a082015262003f3760c0840162003e8a565b60c082015260e083015160e082015261010080840151818301525061012062003f638582860162003dc8565b908201529392505050565b60006080828403121562003f8157600080fd5b604051608081018181106001600160401b038211171562003fa65762003fa662003c6e565b60405262003fb48362003db0565b815262003fc46020840162003db0565b602082015260408301516040820152606083015160608201528091505092915050565b60006001600160401b0382111562004003576200400362003c6e565b5060051b60200190565b600060208083850312156200402157600080fd5b82516001600160401b038111156200403857600080fd5b8301601f810185136200404a57600080fd5b8051620040616200405b8262003fe7565b62003d6a565b81815260059190911b820183019083810190878311156200408157600080fd5b928401925b82841015620040a15783518252928401929084019062004086565b979650505050505050565b6001600160e01b0319831681528151600090620040d181600485016020870162003852565b919091016004019392505050565b60008251620040f381846020870162003852565b9190910192915050565b600082601f8301126200410f57600080fd5b81516020620041226200405b8362003fe7565b82815260059290921b840181019181810190868411156200414257600080fd5b8286015b8481101562004168576200415a8162003a89565b835291830191830162004146565b509695505050505050565b600082601f8301126200418557600080fd5b81516020620041986200405b8362003fe7565b82815260059290921b84018101918181019086841115620041b857600080fd5b8286015b848110156200416857620041d08162003e65565b8352918301918301620041bc565b600082601f830112620041f057600080fd5b81516001600160401b038111156200420c576200420c62003c6e565b62004221601f8201601f191660200162003d6a565b8181528460208386010111156200423757600080fd5b6200424a82602083016020870162003852565b949350505050565b600060208083850312156200426657600080fd5b82516001600160401b03808211156200427e57600080fd5b818501915085601f8301126200429357600080fd5b8151620042a46200405b8262003fe7565b81815260059190911b83018401908481019088831115620042c457600080fd5b8585015b83811015620043ab57805185811115620042e157600080fd5b860160a0818c03601f19011215620042f95760008081fd5b6200430362003d19565b8882015187811115620043165760008081fd5b620043268d8b83860101620040fd565b825250604080830151888111156200433e5760008081fd5b6200434e8e8c8387010162004173565b8b8401525060608084015189811115620043685760008081fd5b620043788f8d83880101620041de565b8385015250608091508184015181840152506200439860a0840162003e65565b90820152845250918601918601620042c8565b5098975050505050505050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200384b608083018462003878565b608081526000620043fe608083018762003878565b602083019590955250604081019290925260609091015291905056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122013b176ecb2e3b0c1b32651bcbfec5ac6ec291e3122c72bd98ac01d20522699a764736f6c63430008130033", - "sourceMap": "337:5002:118:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;337:5002:118;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b5062015d5e80620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001205760003560e01c806366d9a9a011620000af578063b5508aa9116200007a578063b5508aa914620001da578063ba414fa614620001e4578063bc63aee514620001ff578063e20c9f711462000209578063fa7626d4146200021357600080fd5b806366d9a9a014620001945780636782a7d514620001ad57806385226c8114620001b7578063916a17c614620001d057600080fd5b80632ade388011620000f05780632ade3880146200016757806332a3fe0f146200015d5780633e5e3c2314620001805780633f7286f4146200018a57600080fd5b806203603214620001255780630a9254e414620001315780631ed7831c146200013b5780632571fac2146200015d575b600080fd5b6200012f62000221565b005b6200012f620005b5565b6200014562001146565b60405162000154919062003836565b60405180910390f35b6200012f620011aa565b6200017162001216565b604051620001549190620038a6565b6200014562001364565b62000145620013c6565b6200019e62001428565b6040516200015491906200396c565b6200012f62001512565b620001c16200222b565b60405162000154919062003a23565b6200019e62002305565b620001c1620023ef565b620001ee620024c9565b604051901515815260200162000154565b6200012f620025f6565b62000145620028ef565b600754620001ee9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200026b9160016001600160a01b039091163b119062002951565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002b69160026001600160a01b039091163b119062002951565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003009160046001600160a01b039091163b119062002951565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200034a9160056001600160a01b039091163b119062002951565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003939160066001600160a01b039091163b119062002951565b601e54602454604080516341dcea9160e01b8152905162000439936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062003aa1565b6001600160a01b03161460405180606001604052806028815260200162015d016028913962002951565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004ef92919091169063adcee6e390602401602060405180830381865afa1580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003abf565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002951565b620005b360006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000578919062003aa1565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002951565b565b60004215620005c55742620005cb565b636553f0ff5b905060008051602062015cb883398151915263e5d6bf02620005ef83600162003ae3565b6040518263ffffffff1660e01b81526004016200060e91815260200190565b600060405180830381600087803b1580156200062957600080fd5b505af11580156200063e573d6000803e3d6000fd5b505050506200064c6200299f565b6040516200065a9062003772565b604051809103906000f08015801562000677573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062015cb8833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200077a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a0919062003aa1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b1580156200084557600080fd5b505af11580156200085a573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d8919062003aa1565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200096657600080fd5b505af11580156200097b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b158015620009d457600080fd5b505af1158015620009e9573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000a2892600192600492911690820162003b0b565b600060405180830381600087803b15801562000a4357600080fd5b505af115801562000a58573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000ab157600080fd5b505af115801562000ac6573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000b069260019260069291169060040162003b0b565b600060405180830381600087803b15801562000b2157600080fd5b505af115801562000b36573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8f57600080fd5b505af115801562000ba4573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000be49260019260099291169060040162003b0b565b600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6d57600080fd5b505af115801562000c82573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000ca3915062003780565b6001600160a01b039091168152602001604051809103906000f08015801562000cd0573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062015cb8833981519152915063ca669fa790602401600060405180830381600087803b15801562000dd257600080fd5b505af115801562000de7573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000e2a9216908590600190889060040162003b7b565b6020604051808303816000875af115801562000e4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e70919062003c18565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562000ec857600080fd5b505af115801562000edd573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000f3257600080fd5b505af115801562000f47573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062003c18565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b815260048101939093526200108c9316916324d7806c91016020604051808303816000875af11580156200102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001050919062003abf565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062002951565b60248054602f5460405163288c314960e21b81526001600160a01b0391821660048201526200114193919092169163a230c5249101602060405180830381865afa158015620010df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001105919062003abf565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d626572000000000000000081525062003518565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620011a057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001181575b5050505050905090565b604051636ec1689f60e11b81526001600482015260008051602062015cb88339815191529063dd82d13e90602401600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50505050620005b362001512565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200135b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001343578382906000526020600020018054620012af9062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620012dd9062003c32565b80156200132e5780601f1062001302576101008083540402835291602001916200132e565b820191906000526020600020905b8154815290600101906020018083116200131057829003601f168201915b5050505050815260200190600101906200128d565b5050505081525050815260200190600101906200123a565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620014f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620014ba5790505b505050505081525050815260200190600101906200144c565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050604080518082019091526013815272436f6d6d756e697479204d656574696e67203760681b60208201526024546027548551939450610280936001600160a01b0392831692909116908690600090620015b257620015b262003c84565b6001600160a01b039283166020918202929092010152602854865191169086906001908110620015e657620015e662003c84565b60200260200101906001600160a01b031690816001600160a01b0316815250506050846000815181106200161e576200161e62003c84565b602002602001019061ffff16908161ffff168152505060f0846001815181106200164c576200164c62003c84565b61ffff92909216602092830291909101909101526024805460275460405163288c314960e21b81526001600160a01b0391821660048201526200170593919092169163a230c5249101602060405180830381865afa158015620016b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016d9919062003abf565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002951565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620017aa93919092169163a230c5249101602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062003abf565b6040518060400160405280600d81526020016c2099903737ba1036b2b6b132b960991b81525062002951565b604051630618f58760e51b8152637bfa4b9f60e01b600482015260008051602062015cb88339815191529063c31eb0e090602401600060405180830381600087803b158015620017f957600080fd5b505af11580156200180e573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200184a90889088908890889060040162003c9a565b6020604051808303816000875af11580156200186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001890919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038381166004830152600092169063318e3d8c9060240160a060405180830381865afa158015620018dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001903919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0385811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152868216602482015292935060009291169063584f01be90604401608060405180830381865afa158015620019d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019fc919062003f6e565b905062001a4c60405180606001604052806029815260200162015cd86029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562001aa157600080fd5b505af115801562001ab6573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb309915062001af2908b908b908b908b9060040162003c9a565b6020604051808303816000875af115801562001b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b38919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038681166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bab919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0388811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c23919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152898216602482015292935060009291169063584f01be90604401608060405180830381865afa15801562001c7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca4919062003f6e565b905062001cf460405180606001604052806029815260200162015cd86029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001d5357600080fd5b505af115801562001d68573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038b811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001db9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de391908101906200400d565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528982166024820152600092919091169063584f01be90604401608060405180830381865afa15801562001e3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e64919062003f6e565b905062001e7f62001e7942622a300062003ae3565b62003572565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562001ed457600080fd5b505af115801562001ee9573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038c811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001f3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f6491908101906200400d565b50602254604051630c638f6360e21b81526001600160a01b038a81166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001fb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd7919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b038c811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562002029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204f919062003e9f565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b158015620020a757600080fd5b505af1158015620020bc573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316634acdb3098f8f8f8f6040518563ffffffff1660e01b815260040162002109949392919062003c9a565b6020604051808303816000875af115801562002129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200214f919062003c18565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528c8216602482015291169063584f01be90604401608060405180830381865afa158015620021a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021cb919062003f6e565b92506200221b60405180606001604052806029815260200162015cd86029913983604001516001600160401b031684608001516001600160401b031686602001516001600160401b031662003525565b5050505050505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620022719062003c32565b80601f01602080910402602001604051908101604052809291908181526020018280546200229f9062003c32565b8015620022f05780601f10620022c457610100808354040283529160200191620022f0565b820191906000526020600020905b815481529060010190602001808311620022d257829003601f168201915b5050505050815260200190600101906200224f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023d657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023975790505b5050505050815250508152602001906001019062002329565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620024359062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620024639062003c32565b8015620024b45780601f106200248857610100808354040283529160200191620024b4565b820191906000526020600020905b8154815290600101906020018083116200249657829003601f168201915b50505050508152602001906001019062002413565b600754600090610100900460ff1615620024ec5750600754610100900460ff1690565b600060008051602062015cb88339815191523b15620025f1576040805160008051602062015cb8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002573917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620040ac565b60408051601f19818403018152908290526200258f91620040df565b6000604051808303816000865af19150503d8060008114620025ce576040519150601f19603f3d011682016040523d82523d6000602084013e620025d3565b606091505b5091505080806020019051810190620025ed919062003abf565b9150505b919050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805180820182526013815272436f6d6d756e697479204d656574696e67203760681b60208201529051630618f58760e51b8152637bfa4b9f60e01b60048201529192506103e89160008051602062015cb88339815191529063c31eb0e090602401600060405180830381600087803b158015620026b757600080fd5b505af1158015620026cc573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200270890879087908790879060040162003c9a565b6020604051808303816000875af115801562002728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200274e919062003c18565b5060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b158015620027a457600080fd5b505af1158015620027b9573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb3099150620027f590879087908790879060040162003c9a565b6020604051808303816000875af115801562002815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283b919062003c18565b50602d5460408051631298d80960e21b81529051620028e9926001600160a01b031691634a6360249160048083019260009291908290030181865afa15801562002889573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028b3919081019062004252565b51600114604051806040016040528060138152602001723737ba1037b7329034b73a32b930b1ba34b7b760691b81525062002951565b50505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b816200299b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620029889190620043b8565b60405180910390a16200299b82620035cd565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002a3057600080fd5b505af115801562002a45573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062015cb8833981519152925063c657c7189150608401600060405180830381600087803b15801562002ada57600080fd5b505af115801562002aef573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062015cb8833981519152925063c657c7189150608401600060405180830381600087803b15801562002b8457600080fd5b505af115801562002b99573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002c3a57600080fd5b505af115801562002c4f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062015cb883398151915292506306447d569150602401600060405180830381600087803b15801562002ca857600080fd5b505af115801562002cbd573d6000803e3d6000fd5b5050505060405162002ccf906200378e565b604051809103906000f08015801562002cec573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002d7657600080fd5b505af115801562002d8b573d6000803e3d6000fd5b5050505060405162002d9d906200379c565b604051809103906000f08015801562002dba573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002e4357600080fd5b505af115801562002e58573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002ea657600080fd5b505af115801562002ebb573d6000803e3d6000fd5b5050505060405162002ecd90620037aa565b604051809103906000f08015801562002eea573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002f7057600080fd5b505af115801562002f85573d6000803e3d6000fd5b5050505060405162002f9790620037b8565b604051809103906000f08015801562002fb4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200303e57600080fd5b505af115801562003053573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620030749150620037c6565b6001600160a01b039091168152602001604051809103906000f080158015620030a1573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200313057600080fd5b505af115801562003145573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620031669150620037d4565b6001600160a01b039091168152602001604051809103906000f08015801562003193573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200322257600080fd5b505af115801562003237573d6000803e3d6000fd5b50505050604051620032499062003772565b604051809103906000f08015801562003266573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620032c657600080fd5b505af1158015620032db573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200330c90620037e2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003351573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b158015620033de57600080fd5b505af1158015620033f3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200346f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003495919062003aa1565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062015cb8833981519152916390c5013b9160048082019260009290919082900301818387803b158015620034fc57600080fd5b505af115801562003511573d6000803e3d6000fd5b5050505050565b6200299b82158262002951565b620028e984848484604051602401620035429493929190620043e9565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b17905262003648565b60008051602062015cb883398151915263e5d6bf0262003593834262003ae3565b6040518263ffffffff1660e01b8152600401620035b291815260200190565b600060405180830381600087803b158015620034fc57600080fd5b8062003645577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036339060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200364562003669565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062015cb88339815191523b1562003761576040805160008051602062015cb8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620036fc9291602001620040ac565b60408051601f19818403018152908290526200371891620040df565b6000604051808303816000865af19150503d806000811462003757576040519150601f19603f3d011682016040523d82523d6000602084013e6200375c565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200441b83390190565b6115b38062007bf083390190565b61012080620091a383390190565b610c7280620092c383390190565b6137238062009f3583390190565b6125a3806200d65883390190565b6110db806200fbfb83390190565b6130438062010cd683390190565b611f9f8062013d1983390190565b600081518084526020808501945080840160005b838110156200382b5781516001600160a01b03168752958201959082019060010162003804565b509495945050505050565b6020815260006200384b6020830184620037f0565b9392505050565b60005b838110156200386f57818101518382015260200162003855565b50506000910152565b600081518084526200389281602086016020860162003852565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200395c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200394557605f198985030183526200393284865162003878565b948e01949350918d019160010162003913565b505050978a019794505091880191600101620038cd565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003a1457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620039fe5783516001600160e01b0319168252928b019260019290920191908b0190620039d2565b50978a0197955050509187019160010162003994565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003a7c57603f1988860301845262003a6985835162003878565b9450928501929085019060010162003a4a565b5092979650505050505050565b80516001600160a01b0381168114620025f157600080fd5b60006020828403121562003ab457600080fd5b6200384b8262003a89565b60006020828403121562003ad257600080fd5b815180151581146200384b57600080fd5b8082018082111562003b0557634e487b7160e01b600052601160045260246000fd5b92915050565b60a08152600062003b3260a08301600681526561204e616d6560d01b602082015260400190565b828103602084015262003b578160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562003c095783518352928401929184019160010162003beb565b50909998505050505050505050565b60006020828403121562003c2b57600080fd5b5051919050565b600181811c9082168062003c4757607f821691505b60208210810362003c6857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60808152600062003caf6080830187620037f0565b82810360208481019190915286518083528782019282019060005b8181101562003cec57845161ffff168352938301939183019160010162003cca565b505061ffff87166040860152848103606086015262003d0c818762003878565b9998505050505050505050565b60405160a081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b60405290565b60405161014081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b604051601f8201601f191681016001600160401b038111828210171562003d955762003d9562003c6e565b604052919050565b8051600381900b8114620025f157600080fd5b80516001600160401b0381168114620025f157600080fd5b600060a0828403121562003ddb57600080fd5b62003de562003d19565b905062003df28262003d9d565b815262003e026020830162003d9d565b602082015262003e156040830162003db0565b604082015262003e286060830162003db0565b606082015262003e3b6080830162003db0565b608082015292915050565b600060a0828403121562003e5957600080fd5b6200384b838362003dc8565b805161ffff81168114620025f157600080fd5b805160ff81168114620025f157600080fd5b805163ffffffff81168114620025f157600080fd5b60006101c0828403121562003eb357600080fd5b62003ebd62003d44565b62003ec88362003db0565b815262003ed86020840162003db0565b602082015262003eeb6040840162003db0565b604082015262003efe6060840162003e65565b606082015262003f116080840162003e78565b608082015262003f2460a0840162003e78565b60a082015262003f3760c0840162003e8a565b60c082015260e083015160e082015261010080840151818301525061012062003f638582860162003dc8565b908201529392505050565b60006080828403121562003f8157600080fd5b604051608081018181106001600160401b038211171562003fa65762003fa662003c6e565b60405262003fb48362003db0565b815262003fc46020840162003db0565b602082015260408301516040820152606083015160608201528091505092915050565b60006001600160401b0382111562004003576200400362003c6e565b5060051b60200190565b600060208083850312156200402157600080fd5b82516001600160401b038111156200403857600080fd5b8301601f810185136200404a57600080fd5b8051620040616200405b8262003fe7565b62003d6a565b81815260059190911b820183019083810190878311156200408157600080fd5b928401925b82841015620040a15783518252928401929084019062004086565b979650505050505050565b6001600160e01b0319831681528151600090620040d181600485016020870162003852565b919091016004019392505050565b60008251620040f381846020870162003852565b9190910192915050565b600082601f8301126200410f57600080fd5b81516020620041226200405b8362003fe7565b82815260059290921b840181019181810190868411156200414257600080fd5b8286015b8481101562004168576200415a8162003a89565b835291830191830162004146565b509695505050505050565b600082601f8301126200418557600080fd5b81516020620041986200405b8362003fe7565b82815260059290921b84018101918181019086841115620041b857600080fd5b8286015b848110156200416857620041d08162003e65565b8352918301918301620041bc565b600082601f830112620041f057600080fd5b81516001600160401b038111156200420c576200420c62003c6e565b62004221601f8201601f191660200162003d6a565b8181528460208386010111156200423757600080fd5b6200424a82602083016020870162003852565b949350505050565b600060208083850312156200426657600080fd5b82516001600160401b03808211156200427e57600080fd5b818501915085601f8301126200429357600080fd5b8151620042a46200405b8262003fe7565b81815260059190911b83018401908481019088831115620042c457600080fd5b8585015b83811015620043ab57805185811115620042e157600080fd5b860160a0818c03601f19011215620042f95760008081fd5b6200430362003d19565b8882015187811115620043165760008081fd5b620043268d8b83860101620040fd565b825250604080830151888111156200433e5760008081fd5b6200434e8e8c8387010162004173565b8b8401525060608084015189811115620043685760008081fd5b620043788f8d83880101620041de565b8385015250608091508184015181840152506200439860a0840162003e65565b90820152845250918601918601620042c8565b5098975050505050505050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200384b608083018462003878565b608081526000620043fe608083018762003878565b602083019590955250604081019290925260609091015291905056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122028e1b297438dc1433039ab47585ab8a2c36116f1b883698a6f56faa0dce7639164736f6c63430008130033", + "sourceMap": "337:5002:131:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;337:5002:131;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001205760003560e01c806366d9a9a011620000af578063b5508aa9116200007a578063b5508aa914620001da578063ba414fa614620001e4578063bc63aee514620001ff578063e20c9f711462000209578063fa7626d4146200021357600080fd5b806366d9a9a014620001945780636782a7d514620001ad57806385226c8114620001b7578063916a17c614620001d057600080fd5b80632ade388011620000f05780632ade3880146200016757806332a3fe0f146200015d5780633e5e3c2314620001805780633f7286f4146200018a57600080fd5b806203603214620001255780630a9254e414620001315780631ed7831c146200013b5780632571fac2146200015d575b600080fd5b6200012f62000221565b005b6200012f620005b5565b6200014562001146565b60405162000154919062003836565b60405180910390f35b6200012f620011aa565b6200017162001216565b604051620001549190620038a6565b6200014562001364565b62000145620013c6565b6200019e62001428565b6040516200015491906200396c565b6200012f62001512565b620001c16200222b565b60405162000154919062003a23565b6200019e62002305565b620001c1620023ef565b620001ee620024c9565b604051901515815260200162000154565b6200012f620025f6565b62000145620028ef565b600754620001ee9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200026b9160016001600160a01b039091163b119062002951565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002b69160026001600160a01b039091163b119062002951565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003009160046001600160a01b039091163b119062002951565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200034a9160056001600160a01b039091163b119062002951565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003939160066001600160a01b039091163b119062002951565b601e54602454604080516341dcea9160e01b8152905162000439936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062003aa1565b6001600160a01b03161460405180606001604052806028815260200162015b206028913962002951565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004ef92919091169063adcee6e390602401602060405180830381865afa1580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003abf565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002951565b620005b360006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000578919062003aa1565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002951565b565b60004215620005c55742620005cb565b636553f0ff5b905060008051602062015ad783398151915263e5d6bf02620005ef83600162003ae3565b6040518263ffffffff1660e01b81526004016200060e91815260200190565b600060405180830381600087803b1580156200062957600080fd5b505af11580156200063e573d6000803e3d6000fd5b505050506200064c6200299f565b6040516200065a9062003772565b604051809103906000f08015801562000677573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062015ad7833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200077a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a0919062003aa1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b1580156200084557600080fd5b505af11580156200085a573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d8919062003aa1565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200096657600080fd5b505af11580156200097b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b158015620009d457600080fd5b505af1158015620009e9573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000a2892600192600492911690820162003b0b565b600060405180830381600087803b15801562000a4357600080fd5b505af115801562000a58573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000ab157600080fd5b505af115801562000ac6573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000b069260019260069291169060040162003b0b565b600060405180830381600087803b15801562000b2157600080fd5b505af115801562000b36573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8f57600080fd5b505af115801562000ba4573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000be49260019260099291169060040162003b0b565b600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6d57600080fd5b505af115801562000c82573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000ca3915062003780565b6001600160a01b039091168152602001604051809103906000f08015801562000cd0573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062015ad7833981519152915063ca669fa790602401600060405180830381600087803b15801562000dd257600080fd5b505af115801562000de7573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000e2a9216908590600190889060040162003b7b565b6020604051808303816000875af115801562000e4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e70919062003c18565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562000ec857600080fd5b505af115801562000edd573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000f3257600080fd5b505af115801562000f47573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062003c18565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b815260048101939093526200108c9316916324d7806c91016020604051808303816000875af11580156200102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001050919062003abf565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062002951565b60248054602f5460405163288c314960e21b81526001600160a01b0391821660048201526200114193919092169163a230c5249101602060405180830381865afa158015620010df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001105919062003abf565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d626572000000000000000081525062003518565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620011a057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001181575b5050505050905090565b604051636ec1689f60e11b81526001600482015260008051602062015ad78339815191529063dd82d13e90602401600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50505050620005b362001512565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200135b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001343578382906000526020600020018054620012af9062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620012dd9062003c32565b80156200132e5780601f1062001302576101008083540402835291602001916200132e565b820191906000526020600020905b8154815290600101906020018083116200131057829003601f168201915b5050505050815260200190600101906200128d565b5050505081525050815260200190600101906200123a565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620014f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620014ba5790505b505050505081525050815260200190600101906200144c565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050604080518082019091526013815272436f6d6d756e697479204d656574696e67203760681b60208201526024546027548551939450610280936001600160a01b0392831692909116908690600090620015b257620015b262003c84565b6001600160a01b039283166020918202929092010152602854865191169086906001908110620015e657620015e662003c84565b60200260200101906001600160a01b031690816001600160a01b0316815250506050846000815181106200161e576200161e62003c84565b602002602001019061ffff16908161ffff168152505060f0846001815181106200164c576200164c62003c84565b61ffff92909216602092830291909101909101526024805460275460405163288c314960e21b81526001600160a01b0391821660048201526200170593919092169163a230c5249101602060405180830381865afa158015620016b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016d9919062003abf565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002951565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620017aa93919092169163a230c5249101602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062003abf565b6040518060400160405280600d81526020016c2099903737ba1036b2b6b132b960991b81525062002951565b604051630618f58760e51b8152637bfa4b9f60e01b600482015260008051602062015ad78339815191529063c31eb0e090602401600060405180830381600087803b158015620017f957600080fd5b505af11580156200180e573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200184a90889088908890889060040162003c9a565b6020604051808303816000875af11580156200186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001890919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038381166004830152600092169063318e3d8c9060240160a060405180830381865afa158015620018dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001903919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0385811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152868216602482015292935060009291169063584f01be90604401608060405180830381865afa158015620019d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019fc919062003f6e565b905062001a4c60405180606001604052806029815260200162015af76029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562001aa157600080fd5b505af115801562001ab6573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb309915062001af2908b908b908b908b9060040162003c9a565b6020604051808303816000875af115801562001b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b38919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038681166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bab919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0388811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c23919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152898216602482015292935060009291169063584f01be90604401608060405180830381865afa15801562001c7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca4919062003f6e565b905062001cf460405180606001604052806029815260200162015af76029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001d5357600080fd5b505af115801562001d68573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038b811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001db9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de391908101906200400d565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528982166024820152600092919091169063584f01be90604401608060405180830381865afa15801562001e3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e64919062003f6e565b905062001e7f62001e7942622a300062003ae3565b62003572565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b15801562001ed457600080fd5b505af115801562001ee9573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038c811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001f3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f6491908101906200400d565b50602254604051630c638f6360e21b81526001600160a01b038a81166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001fb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd7919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b038c811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562002029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204f919062003e9f565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b158015620020a757600080fd5b505af1158015620020bc573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316634acdb3098f8f8f8f6040518563ffffffff1660e01b815260040162002109949392919062003c9a565b6020604051808303816000875af115801562002129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200214f919062003c18565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528c8216602482015291169063584f01be90604401608060405180830381865afa158015620021a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021cb919062003f6e565b92506200221b60405180606001604052806029815260200162015af76029913983604001516001600160401b031684608001516001600160401b031686602001516001600160401b031662003525565b5050505050505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620022719062003c32565b80601f01602080910402602001604051908101604052809291908181526020018280546200229f9062003c32565b8015620022f05780601f10620022c457610100808354040283529160200191620022f0565b820191906000526020600020905b815481529060010190602001808311620022d257829003601f168201915b5050505050815260200190600101906200224f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023d657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023975790505b5050505050815250508152602001906001019062002329565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620024359062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620024639062003c32565b8015620024b45780601f106200248857610100808354040283529160200191620024b4565b820191906000526020600020905b8154815290600101906020018083116200249657829003601f168201915b50505050508152602001906001019062002413565b600754600090610100900460ff1615620024ec5750600754610100900460ff1690565b600060008051602062015ad78339815191523b15620025f1576040805160008051602062015ad7833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002573917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620040ac565b60408051601f19818403018152908290526200258f91620040df565b6000604051808303816000865af19150503d8060008114620025ce576040519150601f19603f3d011682016040523d82523d6000602084013e620025d3565b606091505b5091505080806020019051810190620025ed919062003abf565b9150505b919050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805180820182526013815272436f6d6d756e697479204d656574696e67203760681b60208201529051630618f58760e51b8152637bfa4b9f60e01b60048201529192506103e89160008051602062015ad78339815191529063c31eb0e090602401600060405180830381600087803b158015620026b757600080fd5b505af1158015620026cc573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200270890879087908790879060040162003c9a565b6020604051808303816000875af115801562002728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200274e919062003c18565b5060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015ad78339815191529063ca669fa790602401600060405180830381600087803b158015620027a457600080fd5b505af1158015620027b9573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb3099150620027f590879087908790879060040162003c9a565b6020604051808303816000875af115801562002815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283b919062003c18565b50602d5460408051631298d80960e21b81529051620028e9926001600160a01b031691634a6360249160048083019260009291908290030181865afa15801562002889573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028b3919081019062004252565b51600114604051806040016040528060138152602001723737ba1037b7329034b73a32b930b1ba34b7b760691b81525062002951565b50505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b816200299b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620029889190620043b8565b60405180910390a16200299b82620035cd565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002a3057600080fd5b505af115801562002a45573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062015ad7833981519152925063c657c7189150608401600060405180830381600087803b15801562002ada57600080fd5b505af115801562002aef573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062015ad7833981519152925063c657c7189150608401600060405180830381600087803b15801562002b8457600080fd5b505af115801562002b99573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002c3a57600080fd5b505af115801562002c4f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062015ad783398151915292506306447d569150602401600060405180830381600087803b15801562002ca857600080fd5b505af115801562002cbd573d6000803e3d6000fd5b5050505060405162002ccf906200378e565b604051809103906000f08015801562002cec573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002d7657600080fd5b505af115801562002d8b573d6000803e3d6000fd5b5050505060405162002d9d906200379c565b604051809103906000f08015801562002dba573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002e4357600080fd5b505af115801562002e58573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002ea657600080fd5b505af115801562002ebb573d6000803e3d6000fd5b5050505060405162002ecd90620037aa565b604051809103906000f08015801562002eea573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b15801562002f7057600080fd5b505af115801562002f85573d6000803e3d6000fd5b5050505060405162002f9790620037b8565b604051809103906000f08015801562002fb4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200303e57600080fd5b505af115801562003053573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620030749150620037c6565b6001600160a01b039091168152602001604051809103906000f080158015620030a1573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200313057600080fd5b505af115801562003145573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620031669150620037d4565b6001600160a01b039091168152602001604051809103906000f08015801562003193573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b1580156200322257600080fd5b505af115801562003237573d6000803e3d6000fd5b50505050604051620032499062003772565b604051809103906000f08015801562003266573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620032c657600080fd5b505af1158015620032db573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200330c90620037e2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003351573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062015ad78339815191529063c657c71890608401600060405180830381600087803b158015620033de57600080fd5b505af1158015620033f3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200346f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003495919062003aa1565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062015ad7833981519152916390c5013b9160048082019260009290919082900301818387803b158015620034fc57600080fd5b505af115801562003511573d6000803e3d6000fd5b5050505050565b6200299b82158262002951565b620028e984848484604051602401620035429493929190620043e9565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b17905262003648565b60008051602062015ad783398151915263e5d6bf0262003593834262003ae3565b6040518263ffffffff1660e01b8152600401620035b291815260200190565b600060405180830381600087803b158015620034fc57600080fd5b8062003645577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036339060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200364562003669565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062015ad78339815191523b1562003761576040805160008051602062015ad7833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620036fc9291602001620040ac565b60408051601f19818403018152908290526200371891620040df565b6000604051808303816000865af19150503d806000811462003757576040519150601f19603f3d011682016040523d82523d6000602084013e6200375c565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200441b83390190565b6115b38062007bf083390190565b61012080620091a383390190565b610c7280620092c383390190565b6137238062009f3583390190565b6123c2806200d65883390190565b6110db806200fa1a83390190565b6130438062010af583390190565b611f9f8062013b3883390190565b600081518084526020808501945080840160005b838110156200382b5781516001600160a01b03168752958201959082019060010162003804565b509495945050505050565b6020815260006200384b6020830184620037f0565b9392505050565b60005b838110156200386f57818101518382015260200162003855565b50506000910152565b600081518084526200389281602086016020860162003852565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200395c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200394557605f198985030183526200393284865162003878565b948e01949350918d019160010162003913565b505050978a019794505091880191600101620038cd565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003a1457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620039fe5783516001600160e01b0319168252928b019260019290920191908b0190620039d2565b50978a0197955050509187019160010162003994565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003a7c57603f1988860301845262003a6985835162003878565b9450928501929085019060010162003a4a565b5092979650505050505050565b80516001600160a01b0381168114620025f157600080fd5b60006020828403121562003ab457600080fd5b6200384b8262003a89565b60006020828403121562003ad257600080fd5b815180151581146200384b57600080fd5b8082018082111562003b0557634e487b7160e01b600052601160045260246000fd5b92915050565b60a08152600062003b3260a08301600681526561204e616d6560d01b602082015260400190565b828103602084015262003b578160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562003c095783518352928401929184019160010162003beb565b50909998505050505050505050565b60006020828403121562003c2b57600080fd5b5051919050565b600181811c9082168062003c4757607f821691505b60208210810362003c6857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60808152600062003caf6080830187620037f0565b82810360208481019190915286518083528782019282019060005b8181101562003cec57845161ffff168352938301939183019160010162003cca565b505061ffff87166040860152848103606086015262003d0c818762003878565b9998505050505050505050565b60405160a081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b60405290565b60405161014081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b604051601f8201601f191681016001600160401b038111828210171562003d955762003d9562003c6e565b604052919050565b8051600381900b8114620025f157600080fd5b80516001600160401b0381168114620025f157600080fd5b600060a0828403121562003ddb57600080fd5b62003de562003d19565b905062003df28262003d9d565b815262003e026020830162003d9d565b602082015262003e156040830162003db0565b604082015262003e286060830162003db0565b606082015262003e3b6080830162003db0565b608082015292915050565b600060a0828403121562003e5957600080fd5b6200384b838362003dc8565b805161ffff81168114620025f157600080fd5b805160ff81168114620025f157600080fd5b805163ffffffff81168114620025f157600080fd5b60006101c0828403121562003eb357600080fd5b62003ebd62003d44565b62003ec88362003db0565b815262003ed86020840162003db0565b602082015262003eeb6040840162003db0565b604082015262003efe6060840162003e65565b606082015262003f116080840162003e78565b608082015262003f2460a0840162003e78565b60a082015262003f3760c0840162003e8a565b60c082015260e083015160e082015261010080840151818301525061012062003f638582860162003dc8565b908201529392505050565b60006080828403121562003f8157600080fd5b604051608081018181106001600160401b038211171562003fa65762003fa662003c6e565b60405262003fb48362003db0565b815262003fc46020840162003db0565b602082015260408301516040820152606083015160608201528091505092915050565b60006001600160401b0382111562004003576200400362003c6e565b5060051b60200190565b600060208083850312156200402157600080fd5b82516001600160401b038111156200403857600080fd5b8301601f810185136200404a57600080fd5b8051620040616200405b8262003fe7565b62003d6a565b81815260059190911b820183019083810190878311156200408157600080fd5b928401925b82841015620040a15783518252928401929084019062004086565b979650505050505050565b6001600160e01b0319831681528151600090620040d181600485016020870162003852565b919091016004019392505050565b60008251620040f381846020870162003852565b9190910192915050565b600082601f8301126200410f57600080fd5b81516020620041226200405b8362003fe7565b82815260059290921b840181019181810190868411156200414257600080fd5b8286015b8481101562004168576200415a8162003a89565b835291830191830162004146565b509695505050505050565b600082601f8301126200418557600080fd5b81516020620041986200405b8362003fe7565b82815260059290921b84018101918181019086841115620041b857600080fd5b8286015b848110156200416857620041d08162003e65565b8352918301918301620041bc565b600082601f830112620041f057600080fd5b81516001600160401b038111156200420c576200420c62003c6e565b62004221601f8201601f191660200162003d6a565b8181528460208386010111156200423757600080fd5b6200424a82602083016020870162003852565b949350505050565b600060208083850312156200426657600080fd5b82516001600160401b03808211156200427e57600080fd5b818501915085601f8301126200429357600080fd5b8151620042a46200405b8262003fe7565b81815260059190911b83018401908481019088831115620042c457600080fd5b8585015b83811015620043ab57805185811115620042e157600080fd5b860160a0818c03601f19011215620042f95760008081fd5b6200430362003d19565b8882015187811115620043165760008081fd5b620043268d8b83860101620040fd565b825250604080830151888111156200433e5760008081fd5b6200434e8e8c8387010162004173565b8b8401525060608084015189811115620043685760008081fd5b620043788f8d83880101620041de565b8385015250608091508184015181840152506200439860a0840162003e65565b90820152845250918601918601620042c8565b5098975050505050505050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200384b608083018462003878565b608081526000620043fe608083018762003878565b602083019590955250604081019290925260609091015291905056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122013b176ecb2e3b0c1b32651bcbfec5ac6ec291e3122c72bd98ac01d20522699a764736f6c63430008130033", - "sourceMap": "337:5002:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;499:1357:118;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:268:118;;;:::i;3360:151:59:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2616:2334:118:-;;;:::i;2592:140:59:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5573:14:121;;5566:22;5548:41;;5536:2;5521:18;1819:584:52;5408:187:121;1862:748:118;;;:::i;2304:142:59:-;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;6141:51:121;3476:66:114;;3487:3;;;;;:23;;6114:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;499:1357:118:-;542:13;558:15;:20;:51;;594:15;558:51;;;581:10;558:51;542:67;-1:-1:-1;;;;;;;;;;;;619:7:118;627:9;542:67;635:1;627:9;:::i;:::-;619:18;;;;;;;;;;;;;6858:25:121;;6846:2;6831:18;;6712:177;619:18:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;648:13;:11;:13::i;:::-;687:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;672:12:118;:36;;-1:-1:-1;;;;;;672:36:118;-1:-1:-1;;;;;672:36:118;;;;;;;;;718:43;;;-1:-1:-1;;;718:43:118;;;;;7106:51:121;;;;7173:18;;;7166:30;7232:1;7212:18;;;7205:29;-1:-1:-1;;;7250:18:121;;;7243:38;-1:-1:-1;;;;;;;;;;;718:8:118;;;7298:19:121;;718:43:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:3:118;;:11;;;-1:-1:-1;;;781:11:118;;;;-1:-1:-1;;;;;;;;;;;772:8:118;-1:-1:-1;772:8:118;;-1:-1:-1;;;;;;781:3:118;;;;:9;;:11;;;;;;;;;;;;;;;:3;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;772:21;;-1:-1:-1;;;;;;772:21:118;;;;;;;-1:-1:-1;;;;;6159:32:121;;;772:21:118;;;6141:51:121;6114:18;;772:21:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;803:3:118;;834:12;;803:45;;-1:-1:-1;;;803:45:118;;-1:-1:-1;;;;;834:12:118;;;803:45;;;6141:51:121;803:3:118;;;-1:-1:-1;803:22:118;;-1:-1:-1;6114:18:121;;803:45:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:3;;;;;;;;;-1:-1:-1;;;;;882:3:118;-1:-1:-1;;;;;882:17:118;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;859:3;:43;;-1:-1:-1;;;;;;859:43:118;-1:-1:-1;;;;;859:43:118;;;;;;;;;912:41;;;-1:-1:-1;;;912:41:118;;;;;7540:51:121;;;;7607:18;;;7600:30;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7685:18:121;;;7678:45;-1:-1:-1;;;;;;;;;;;912:8:118;;;7740:19:121;;912:41:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;973:2:118;;964:12;;-1:-1:-1;;;964:12:118;;-1:-1:-1;;;;;973:2:118;;;964:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;964:8:118;-1:-1:-1;964:8:118;;-1:-1:-1;6114:18:121;;964:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;986:3:118;;1028:4;;986:48;;-1:-1:-1;;;986:48:118;;-1:-1:-1;;;;;986:3:118;;;;-1:-1:-1;986:8:118;;-1:-1:-1;986:48:118;;:3;;1017:1;;1028:4;;;986:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1054:2:118;;1045:12;;-1:-1:-1;;;1045:12:118;;-1:-1:-1;;;;;1054:2:118;;;1045:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1045:8:118;-1:-1:-1;1045:8:118;;-1:-1:-1;6114:18:121;;1045:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1067:3:118;;1109:4;;1067:48;;-1:-1:-1;;;1067:48:118;;-1:-1:-1;;;;;1067:3:118;;;;-1:-1:-1;1067:8:118;;-1:-1:-1;1067:48:118;;:3;;1098:1;;1109:4;;;1067:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1135:2:118;;1126:12;;-1:-1:-1;;;1126:12:118;;-1:-1:-1;;;;;1135:2:118;;;1126:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1126:8:118;-1:-1:-1;1126:8:118;;-1:-1:-1;6114:18:121;;1126:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1148:3:118;;1190:4;;1148:48;;-1:-1:-1;;;1148:48:118;;-1:-1:-1;;;;;1148:3:118;;;;-1:-1:-1;1148:8:118;;-1:-1:-1;1148:48:118;;:3;;1179:1;;1190:4;;;1148:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1216:2:118;;1207:12;;-1:-1:-1;;;1207:12:118;;-1:-1:-1;;;;;1216:2:118;;;1207:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1207:8:118;-1:-1:-1;1207:8:118;;-1:-1:-1;6114:18:121;;1207:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:4:118;;1241:35;;-1:-1:-1;;;;;1269:4:118;;;;-1:-1:-1;1241:35:118;;-1:-1:-1;1241:35:118;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;1241:35:118;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1229:9:118;:47;;-1:-1:-1;;;;;;1229:47:118;-1:-1:-1;;;;;1229:47:118;;;;;;;;;1286:49;;;-1:-1:-1;;;1286:49:118;;;;;10579:51:121;;;;10646:18;;;10639:30;10705:2;10685:18;;;10678:30;-1:-1:-1;;;10724:18:121;;;10717:47;-1:-1:-1;;;;;;;;;;;1286:8:118;;;10781:19:121;;1286:49:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1392:2:118;;1383:12;;-1:-1:-1;;;1383:12:118;;-1:-1:-1;;;;;1392:2:118;;;1383:12;;;6141:51:121;1346:26:118;;-1:-1:-1;;;;;;;;;;;;1383:8:118;-1:-1:-1;1383:8:118;;6114:18:121;;1383:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1446:3:118;;1478:2;;1446:84;;-1:-1:-1;;;1446:84:118;;1405:26;;-1:-1:-1;;;;;;1446:3:118;;;;-1:-1:-1;1446:23:118;;:84;;1478:2;;1405:26;;1446:3;;1520:9;;1446:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1550:2;;1541:12;;-1:-1:-1;;;1541:12:118;;-1:-1:-1;;;;;1550:2:118;;;1541:12;;;6141:51:121;1405:125:118;;-1:-1:-1;;;;;;;;;;;;1541:8:118;;;6114:18:121;;1541:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1563:3:118;;1590:9;;1563:58;;-1:-1:-1;;;1563:58:118;;-1:-1:-1;;;;;1590:9:118;;;1563:58;;;12324:51:121;12391:18;;;12384:34;;;1563:3:118;;;-1:-1:-1;1563:18:118;;-1:-1:-1;12297:18:121;;1563:58:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1647:3:118;;1678:9;;1647:42;;-1:-1:-1;;;1647:42:118;;-1:-1:-1;;;;;1678:9:118;;;1647:42;;;6141:51:121;1647:3:118;;;-1:-1:-1;1647:22:118;;-1:-1:-1;6114:18:121;;1647:42:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1632:12;:57;1708:2;;1700:5;:10;;-1:-1:-1;;;;;;1700:10:118;-1:-1:-1;;;;;1708:2:118;;;1700:10;;;;;;1731:4;;;:19;;-1:-1:-1;;;1731:19:118;;;;;6141:51:121;;;;1720:58:118;;1731:4;;:12;;6114:18:121;1731:19:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1720:58;;;;;;;;;;;;;;;;;:10;:58::i;:::-;1800:4;;;1814:5;;1800:20;;-1:-1:-1;;;1800:20:118;;-1:-1:-1;;;;;1814:5:118;;;1800:20;;;6141:51:121;1788:61:118;;1800:4;;;;;:13;;6114:18:121;1800:20:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1788:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;532:1324;;;499:1357::o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;5069:268:118:-;5121:13;;-1:-1:-1;;;5121:13:118;;5129:4;5121:13;;;5548:41:121;-1:-1:-1;;;;;;;;;;;5121:7:118;;;5521:18:121;;5121:13:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5313:17;:15;:17::i;3360:151:59:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2616:2334:118;2692:16;;;2706:1;2692:16;;;;;;;;2660:29;;2692:16;;;;;;;;-1:-1:-1;;2756:15:118;;;2769:1;2756:15;;;;;;;;2660:48;;-1:-1:-1;2718:35:118;;2756:15;;-1:-1:-1;2769:1:118;2756:15;;;;;;;;;;-1:-1:-1;;2828:59:118;;;;;;;;;;;;-1:-1:-1;;;2828:59:118;;;;2924:4;;2958:2;;2940:15;;2718:53;;-1:-1:-1;2815:3:118;;-1:-1:-1;;;;;2924:4:118;;;;2958:2;;;;2940:15;;-1:-1:-1;;2940:15:118;;;;:::i;:::-;-1:-1:-1;;;;;2940:20:118;;;:15;;;;;;;;;:20;2988:2;;2970:15;;2988:2;;;2970:12;;2988:2;;2970:15;;;;;;:::i;:::-;;;;;;:20;-1:-1:-1;;;;;2970:20:118;;;-1:-1:-1;;;;;2970:20:118;;;;;3025:2;3000:19;3020:1;3000:22;;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;;3062:3;3037:19;3057:1;3037:22;;;;;;;;:::i;:::-;:28;;;;;:22;;;;;;;;;;;:28;3087:4;;;3101:2;;3087:17;;-1:-1:-1;;;3087:17:118;;-1:-1:-1;;;;;3101:2:118;;;3087:17;;;6141:51:121;3076:46:118;;3087:4;;;;;:13;;6114:18:121;3087:17:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3076:46;;;;;;;;;;;;;-1:-1:-1;;;3076:46:118;;;:10;:46::i;:::-;3143:4;;;3157:2;;3143:17;;-1:-1:-1;;;3143:17:118;;-1:-1:-1;;;;;3157:2:118;;;3143:17;;;6141:51:121;3132:46:118;;3143:4;;;;;:13;;6114:18:121;3143:17:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3132:46;;;;;;;;;;;;;-1:-1:-1;;;3132:46:118;;;:10;:46::i;:::-;3189:50;;-1:-1:-1;;;3189:50:118;;-1:-1:-1;;;3189:50:118;;;13222:52:121;-1:-1:-1;;;;;;;;;;;3189:15:118;;;13195:18:121;;3189:50:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3249:9:118;;:138;;-1:-1:-1;;;3249:138:118;;-1:-1:-1;;;;;3249:9:118;;;;-1:-1:-1;3249:32:118;;-1:-1:-1;3249:138:118;;3295:12;;3309:19;;3330:24;;3356:21;;3249:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3421:3:118;;:46;;-1:-1:-1;;;3421:46:118;;-1:-1:-1;;;;;6159:32:121;;;3421:46:118;;;6141:51:121;3398:20:118;;3421:3;;:27;;6114:18:121;;3421:46:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3501:3;;:27;;-1:-1:-1;;;3501:27:118;;-1:-1:-1;;;;;6159:32:121;;;3501:27:118;;;6141:51:121;3398:69:118;;-1:-1:-1;3477:21:118;;3501:3;;;;:17;;6114:18:121;;3501:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3567:3;;3590:2;;3567:36;;-1:-1:-1;;;3567:36:118;;-1:-1:-1;;;;;3590:2:118;;;3567:36;;;18088:34:121;18158:15;;;18138:18;;;18131:43;3477:51:118;;-1:-1:-1;3538:26:118;;3567:3;;;:22;;18023:18:121;;3567:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3538:65;;3614:101;;;;;;;;;;;;;;;;;;3671:2;:16;;;-1:-1:-1;;;;;3614:101:118;3689:2;:17;;;-1:-1:-1;;;;;3614:101:118;3708:3;:6;;;-1:-1:-1;;;;;3614:101:118;:11;:101::i;:::-;3735:2;;3726:12;;-1:-1:-1;;;3726:12:118;;-1:-1:-1;;;;;3735:2:118;;;3726:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;3726:8:118;;;6114:18:121;;3726:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3748:9:118;;:138;;-1:-1:-1;;;3748:138:118;;-1:-1:-1;;;;;3748:9:118;;;;-1:-1:-1;3748:32:118;;-1:-1:-1;3748:138:118;;3794:12;;3808:19;;3829:24;;3855:21;;3748:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3920:3:118;;:46;;-1:-1:-1;;;3920:46:118;;-1:-1:-1;;;;;6159:32:121;;;3920:46:118;;;6141:51:121;3897:20:118;;3920:3;;:27;;6114:18:121;;3920:46:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4000:3;;:27;;-1:-1:-1;;;4000:27:118;;-1:-1:-1;;;;;6159:32:121;;;4000:27:118;;;6141:51:121;3897:69:118;;-1:-1:-1;3976:21:118;;4000:3;;;;:17;;6114:18:121;;4000:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4066:3;;4089:2;;4066:36;;-1:-1:-1;;;4066:36:118;;-1:-1:-1;;;;;4089:2:118;;;4066:36;;;18088:34:121;18158:15;;;18138:18;;;18131:43;3976:51:118;;-1:-1:-1;4037:26:118;;4066:3;;;:22;;18023:18:121;;4066:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4037:65;;4113:101;;;;;;;;;;;;;;;;;;4170:2;:16;;;-1:-1:-1;;;;;4113:101:118;4188:2;:17;;;-1:-1:-1;;;;;4113:101:118;4207:3;:6;;;-1:-1:-1;;;;;4113:101:118;:11;:101::i;:::-;317:28:53;309:37;;-1:-1:-1;;;;;4225:15:118;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4252:3:118;;:32;;-1:-1:-1;;;4252:32:118;;-1:-1:-1;;;;;6159:32:121;;;4252::118;;;6141:51:121;4252:3:118;;;;-1:-1:-1;4252:22:118;;-1:-1:-1;6114:18:121;;4252:32:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4252:32:118;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4323:3:118;;4346:2;;4323:36;;-1:-1:-1;;;4323:36:118;;-1:-1:-1;;;;;4346:2:118;;;4323:36;;;18088:34:121;18158:15;;;18138:18;;;18131:43;4294:26:118;;4323:3;;;;;:22;;18023:18:121;;4323:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4294:65;-1:-1:-1;4370:31:118;4375:25;:15;4393:7;4375:25;:::i;:::-;4370:4;:31::i;:::-;4421:2;;4412:12;;-1:-1:-1;;;4412:12:118;;-1:-1:-1;;;;;4421:2:118;;;4412:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;4412:8:118;;;6114:18:121;;4412:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4434:3:118;;:32;;-1:-1:-1;;;4434:32:118;;-1:-1:-1;;;;;6159:32:121;;;4434::118;;;6141:51:121;4434:3:118;;;;-1:-1:-1;4434:22:118;;-1:-1:-1;6114:18:121;;4434:32:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4434:32:118;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4500:3:118;;:46;;-1:-1:-1;;;4500:46:118;;-1:-1:-1;;;;;6159:32:121;;;4500:46:118;;;6141:51:121;4477:20:118;;4500:3;;:27;;6114:18:121;;4500:46:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4580:3;;:27;;-1:-1:-1;;;4580:27:118;;-1:-1:-1;;;;;6159:32:121;;;4580:27:118;;;6141:51:121;4477:69:118;;-1:-1:-1;4556:21:118;;4580:3;;;;:17;;6114:18:121;;4580:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4627:2;;4618:12;;-1:-1:-1;;;4618:12:118;;-1:-1:-1;;;;;4627:2:118;;;4618:12;;;6141:51:121;4556::118;;-1:-1:-1;;;;;;;;;;;;4618:8:118;;;6114:18:121;;4618:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:9;;;;;;;;;-1:-1:-1;;;;;4640:9:118;-1:-1:-1;;;;;4640:32:118;;4686:12;4700:19;4721:24;4747:21;4640:138;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4795:3:118;;4818:2;;4795:36;;-1:-1:-1;;;4795:36:118;;-1:-1:-1;;;;;4818:2:118;;;4795:36;;;18088:34:121;18158:15;;;18138:18;;;18131:43;4795:3:118;;;:22;;18023:18:121;;4795:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4789:42;;4842:101;;;;;;;;;;;;;;;;;;4899:2;:16;;;-1:-1:-1;;;;;4842:101:118;4917:2;:17;;;-1:-1:-1;;;;;4842:101:118;4936:3;:6;;;-1:-1:-1;;;;;4842:101:118;:11;:101::i;:::-;2650:2300;;;;;;;;;;;;;;2616:2334::o;2592:140:59:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;12324:51:121;;;-1:-1:-1;;;12391:18:121;;;12384:34;2196:43:52;;;;;;;;;12297:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;1862:748:118:-;1936:16;;;1950:1;1936:16;;;;;;;;;1904:29;;1936:16;;;;;;;;;-1:-1:-1;;2000:15:118;;;2013:1;2000:15;;;;;;;;;1904:48;;-1:-1:-1;1962:35:118;;2000:15;-1:-1:-1;2000:15:118;;;;;;;;;;;-1:-1:-1;;2073:59:118;;;;;;;;;;;-1:-1:-1;;;2073:59:118;;;;2143:50;;-1:-1:-1;;;2143:50:118;;-1:-1:-1;;;2143:50:118;;;13222:52:121;1962:53:118;;-1:-1:-1;2059:4:118;;-1:-1:-1;;;;;;;;;;;2143:15:118;;;13195:18:121;;2143:50:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2203:9:118;;:138;;-1:-1:-1;;;2203:138:118;;-1:-1:-1;;;;;2203:9:118;;;;-1:-1:-1;2203:32:118;;-1:-1:-1;2203:138:118;;2249:12;;2263:19;;2284:24;;2310:21;;2203:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2361:2:118;;2352:12;;-1:-1:-1;;;2352:12:118;;-1:-1:-1;;;;;2361:2:118;;;2352:12;;;6141:51:121;-1:-1:-1;;;;;;;;;;;2352:8:118;;;6114:18:121;;2352:12:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2374:9:118;;:138;;-1:-1:-1;;;2374:138:118;;-1:-1:-1;;;;;2374:9:118;;;;-1:-1:-1;2374:32:118;;-1:-1:-1;2374:138:118;;2420:12;;2434:19;;2455:24;;2481:21;;2374:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2534:9:118;;:33;;;-1:-1:-1;;;2534:33:118;;;;2523:80;;-1:-1:-1;;;;;2534:9:118;;:31;;:33;;;;;:9;;:33;;;;;;;:9;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2534:33:118;;;;;;;;;;;;:::i;:::-;:40;2578:1;2534:45;2523:80;;;;;;;;;;;;;-1:-1:-1;;;2523:80:118;;;:10;:80::i;:::-;1894:716;;;;1862:748::o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;25750:51:121;;;;25817:18;;;25810:30;25876:1;25856:18;;;25849:29;-1:-1:-1;;;25894:18:121;;;25887:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;25942:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;26184:51:121;;;;26251:18;;;26244:30;26310:1;26290:18;;;26283:29;-1:-1:-1;;;26328:18:121;;;26321:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;26376:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;26618:51:121;;;;26685:18;;;26678:30;26744:1;26724:18;;;26717:29;-1:-1:-1;;;26762:18:121;;;26755:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;26810:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;27052:51:121;27119:18;;;27112:30;27178:2;27158:18;;;27151:30;-1:-1:-1;;;27197:18:121;;;27190:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;27249:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;6141:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;6114:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;27491:51:121;;;;27558:18;;;27551:30;27617:2;27597:18;;;27590:30;-1:-1:-1;;;27636:18:121;;;27629:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;27686:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;27928:51:121;;;;27995:18;;;27988:30;28054:1;28034:18;;;28027:29;-1:-1:-1;;;28072:18:121;;;28065:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;28121:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;6141:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;6114:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;28363:51:121;;;;28430:18;;;28423:30;28489:1;28469:18;;;28462:29;-1:-1:-1;;;28507:18:121;;;28500:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;28553:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;28795:51:121;;;;28862:18;;;28855:30;28921:2;28901:18;;;28894:30;-1:-1:-1;;;28940:18:121;;;28933:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;28990:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;29232:51:121;;;;29299:18;;;29292:30;29358:2;29338:18;;;29331:30;-1:-1:-1;;;29377:18:121;;;29370:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;29432:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;6159:32:121;;;6141:51;;6129:2;6114:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;29674:51:121;;;;29741:18;;;29734:30;29800:2;29780:18;;;29773:30;-1:-1:-1;;;29819:18:121;;;29812:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;29874:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;6141:51:121;;;;2573:3:114;;;;:22;;6114:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;30191:15:121;;;30173:34;;30243:15;;;30238:2;30223:18;;30216:43;30295:15;;;30290:2;30275:18;;30268:43;30347:15;;;30342:2;30327:18;;30320:43;30122:3;30107:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;30586:51:121;;;;30653:18;;;30646:30;30712:2;30692:18;;;30685:30;-1:-1:-1;;;30731:18:121;;;30724:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;30784:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;31070:25:121;;;31131:2;31111:18;;;31104:30;31170:2;31150:18;;;31143:30;-1:-1:-1;;;31189:19:121;;;31182:42;31276:18;;;31269:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;31241:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:55:-;754:22;766:4;765:5;772:3;754:10;:22::i;30515:175:67:-;30597:86;30667:2;30671;30675;30679;30613:69;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;30613:69:67;;;;;;;;;;;;;;-1:-1:-1;;;;;30613:69:67;-1:-1:-1;;;30613:69:67;;;30597:15;:86::i;24604:93:57:-;-1:-1:-1;;;;;;;;;;;24659:7:57;24667:22;24685:4;24667:15;:22;:::i;:::-;24659:31;;;;;;;;;;;;;6858:25:121;;6846:2;6831:18;;6712:177;24659:31:57;;;;;;;;;;;;;;;;;;;;3262:157:52;3322:9;3317:96;;3352:30;;;;;31956:2:121;31938:21;;;31995:2;31975:18;;;31968:30;32034:25;32029:2;32014:18;;32007:53;32092:2;32077:18;;31754:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;181:376:67:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;2409:432:52:-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;32308:51:121;;;-1:-1:-1;;;32375:18:121;;;32368:34;;;;2712:4:52;32418:18:121;;;32411:34;2489:11:52;;1671:64;2586:43;;32281:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:461:121:-;67:3;105:5;99:12;132:6;127:3;120:19;158:4;187:2;182:3;178:12;171:19;;224:2;217:5;213:14;245:1;255:195;269:6;266:1;263:13;255:195;;;334:13;;-1:-1:-1;;;;;330:39:121;318:52;;390:12;;;;425:15;;;;366:1;284:9;255:195;;;-1:-1:-1;466:3:121;;14:461;-1:-1:-1;;;;;14:461:121:o;480:261::-;659:2;648:9;641:21;622:4;679:56;731:2;720:9;716:18;708:6;679:56;:::i;:::-;671:64;480:261;-1:-1:-1;;;480:261:121:o;746:250::-;831:1;841:113;855:6;852:1;849:13;841:113;;;931:11;;;925:18;912:11;;;905:39;877:2;870:10;841:113;;;-1:-1:-1;;988:1:121;970:16;;963:27;746:250::o;1001:271::-;1043:3;1081:5;1075:12;1108:6;1103:3;1096:19;1124:76;1193:6;1186:4;1181:3;1177:14;1170:4;1163:5;1159:16;1124:76;:::i;:::-;1254:2;1233:15;-1:-1:-1;;1229:29:121;1220:39;;;;1261:4;1216:50;;1001:271;-1:-1:-1;;1001:271:121:o;1277:1744::-;1512:2;1564:21;;;1634:13;;1537:18;;;1656:22;;;1483:4;;1512:2;1697;;1715:18;;;;1752:1;1795:15;;;1780:31;;1776:40;;1839:15;;;1483:4;;1903:1089;1919:6;1914:3;1911:15;1903:1089;;;-1:-1:-1;;1988:22:121;;;1984:36;1972:49;;2044:13;;2131:9;;-1:-1:-1;;;;;2127:35:121;2112:51;;2202:11;;2196:18;2234:15;;;2227:27;;;2315:19;;2084:15;;;2347:24;;;2528:21;;;;2394:2;2476:17;;;2464:30;;2460:39;;;2418:15;;;;2573:1;2587:296;2603:8;2598:3;2595:17;2587:296;;;2709:2;2705:7;2696:6;2688;2684:19;2680:33;2673:5;2666:48;2741:42;2776:6;2765:8;2759:15;2741:42;:::i;:::-;2812:17;;;;2731:52;-1:-1:-1;2855:14:121;;;;2631:1;2622:11;2587:296;;;-1:-1:-1;;;2970:12:121;;;;2906:6;-1:-1:-1;;2935:15:121;;;;1945:1;1936:11;1903:1089;;;-1:-1:-1;3009:6:121;;1277:1744;-1:-1:-1;;;;;;;;;;1277:1744:121:o;3026:1569::-;3230:4;3259:2;3299;3288:9;3284:18;3329:2;3318:9;3311:21;3352:6;3387;3381:13;3418:6;3410;3403:22;3444:2;3434:12;;3477:2;3466:9;3462:18;3455:25;;3539:2;3529:6;3526:1;3522:14;3511:9;3507:30;3503:39;3577:2;3569:6;3565:15;3598:1;3619;3629:937;3645:6;3640:3;3637:15;3629:937;;;3714:22;;;-1:-1:-1;;3710:36:121;3698:49;;3770:13;;3857:9;;-1:-1:-1;;;;;3853:35:121;3838:51;;3928:11;;3922:18;3960:15;;;3953:27;;;4041:19;;3810:15;;;4073:24;;;4163:21;;;;4208:1;;4131:2;4119:15;;;4222:236;4238:8;4233:3;4230:17;4222:236;;;4319:15;;-1:-1:-1;;;;;;4315:42:121;4301:57;;4427:17;;;;4266:1;4257:11;;;;;4384:14;;;;4222:236;;;-1:-1:-1;4544:12:121;;;;4481:5;-1:-1:-1;;;4509:15:121;;;;3671:1;3662:11;3629:937;;;-1:-1:-1;4583:6:121;;3026:1569;-1:-1:-1;;;;;;;;;3026:1569:121:o;4600:803::-;4762:4;4791:2;4831;4820:9;4816:18;4861:2;4850:9;4843:21;4884:6;4919;4913:13;4950:6;4942;4935:22;4988:2;4977:9;4973:18;4966:25;;5050:2;5040:6;5037:1;5033:14;5022:9;5018:30;5014:39;5000:53;;5088:2;5080:6;5076:15;5109:1;5119:255;5133:6;5130:1;5127:13;5119:255;;;5226:2;5222:7;5210:9;5202:6;5198:22;5194:36;5189:3;5182:49;5254:40;5287:6;5278;5272:13;5254:40;:::i;:::-;5244:50;-1:-1:-1;5352:12:121;;;;5317:15;;;;5155:1;5148:9;5119:255;;;-1:-1:-1;5391:6:121;;4600:803;-1:-1:-1;;;;;;;4600:803:121:o;5600:177::-;5679:13;;-1:-1:-1;;;;;5721:31:121;;5711:42;;5701:70;;5767:1;5764;5757:12;5782:208;5852:6;5905:2;5893:9;5884:7;5880:23;5876:32;5873:52;;;5921:1;5918;5911:12;5873:52;5944:40;5974:9;5944:40;:::i;6203:277::-;6270:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;6371:9;6365:16;6424:5;6417:13;6410:21;6403:5;6400:32;6390:60;;6446:1;6443;6436:12;6485:222;6550:9;;;6571:10;;;6568:133;;;6623:10;6618:3;6614:20;6611:1;6604:31;6658:4;6655:1;6648:15;6686:4;6683:1;6676:15;6568:133;6485:222;;;;:::o;8087:755::-;8490:3;8479:9;8472:22;8453:4;8517:50;8562:3;8551:9;8547:19;7847:1;7835:14;;-1:-1:-1;;;7874:4:121;7865:14;;7858:32;7915:2;7906:12;;7770:154;8517:50;8615:9;8607:6;8603:22;8598:2;8587:9;8583:18;8576:50;8643:37;8673:6;8006:1;7994:14;;-1:-1:-1;;;8033:4:121;8024:14;;8017:31;8073:2;8064:12;;7929:153;8643:37;8711:2;8696:18;;8689:34;;;;-1:-1:-1;;8754:2:121;8739:18;;8732:34;;;;-1:-1:-1;;;;;8803:32:121;8797:3;8782:19;;;8775:61;8635:45;8087:755::o;10811:1145::-;11222:1;11218;11213:3;11209:11;11205:19;11197:6;11193:32;11182:9;11175:51;11156:4;11245:2;11283:3;11278:2;11267:9;11263:18;11256:31;11324:2;11318:3;11307:9;11303:19;11296:31;11364:26;11358:3;11347:9;11343:19;11336:55;11426:3;11415:9;11411:19;11466:6;11461:2;11450:9;11446:18;11439:34;11523:6;11516:14;11509:22;11504:2;11493:9;11489:18;11482:50;11569:3;11563;11552:9;11548:19;11541:32;11593:3;11625:6;11619:13;11653:6;11648:3;11641:19;11691:3;11680:9;11676:19;11669:26;;11730:2;11722:6;11718:15;11704:29;;11751:1;11761:169;11775:6;11772:1;11769:13;11761:169;;;11836:13;;11824:26;;11905:15;;;;11870:12;;;;11797:1;11790:9;11761:169;;;-1:-1:-1;11947:3:121;;10811:1145;-1:-1:-1;;;;;;;;;10811:1145:121:o;11961:184::-;12031:6;12084:2;12072:9;12063:7;12059:23;12055:32;12052:52;;;12100:1;12097;12090:12;12052:52;-1:-1:-1;12123:16:121;;11961:184;-1:-1:-1;11961:184:121:o;12429:380::-;12508:1;12504:12;;;;12551;;;12572:61;;12626:4;12618:6;12614:17;12604:27;;12572:61;12679:2;12671:6;12668:14;12648:18;12645:38;12642:161;;12725:10;12720:3;12716:20;12713:1;12706:31;12760:4;12757:1;12750:15;12788:4;12785:1;12778:15;12642:161;;12429:380;;;:::o;12814:127::-;12875:10;12870:3;12866:20;12863:1;12856:31;12906:4;12903:1;12896:15;12930:4;12927:1;12920:15;12946:127;13007:10;13002:3;12998:20;12995:1;12988:31;13038:4;13035:1;13028:15;13062:4;13059:1;13052:15;13285:1030;13614:3;13603:9;13596:22;13577:4;13641:57;13693:3;13682:9;13678:19;13670:6;13641:57;:::i;:::-;13755:22;;;13717:2;13735:18;;;13728:50;;;;13827:13;;13849:22;;;13925:15;;;;13887;;;13958:1;13968:182;13982:6;13979:1;13976:13;13968:182;;;14047:13;;14062:6;14043:26;14031:39;;14125:15;;;;14090:12;;;;14004:1;13997:9;13968:182;;;13972:3;;14198:6;14190;14186:19;14181:2;14170:9;14166:18;14159:47;14251:9;14246:3;14242:19;14237:2;14226:9;14222:18;14215:47;14279:30;14305:3;14297:6;14279:30;:::i;:::-;14271:38;13285:1030;-1:-1:-1;;;;;;;;;13285:1030:121:o;14320:253::-;14392:2;14386:9;14434:4;14422:17;;-1:-1:-1;;;;;14454:34:121;;14490:22;;;14451:62;14448:88;;;14516:18;;:::i;:::-;14552:2;14545:22;14320:253;:::o;14578:255::-;14650:2;14644:9;14692:6;14680:19;;-1:-1:-1;;;;;14714:34:121;;14750:22;;;14711:62;14708:88;;;14776:18;;:::i;14838:275::-;14909:2;14903:9;14974:2;14955:13;;-1:-1:-1;;14951:27:121;14939:40;;-1:-1:-1;;;;;14994:34:121;;15030:22;;;14991:62;14988:88;;;15056:18;;:::i;:::-;15092:2;15085:22;14838:275;;-1:-1:-1;14838:275:121:o;15118:164::-;15195:13;;15248:1;15237:20;;;15227:31;;15217:59;;15272:1;15269;15262:12;15287:175;15365:13;;-1:-1:-1;;;;;15407:30:121;;15397:41;;15387:69;;15452:1;15449;15442:12;15467:571;15535:5;15583:4;15571:9;15566:3;15562:19;15558:30;15555:50;;;15601:1;15598;15591:12;15555:50;15623:22;;:::i;:::-;15614:31;;15668:38;15696:9;15668:38;:::i;:::-;15661:5;15654:53;15739:47;15782:2;15771:9;15767:18;15739:47;:::i;:::-;15734:2;15727:5;15723:14;15716:71;15819:48;15863:2;15852:9;15848:18;15819:48;:::i;:::-;15814:2;15807:5;15803:14;15796:72;15900:48;15944:2;15933:9;15929:18;15900:48;:::i;:::-;15895:2;15888:5;15884:14;15877:72;15982:49;16026:3;16015:9;16011:19;15982:49;:::i;:::-;15976:3;15969:5;15965:15;15958:74;15467:571;;;;:::o;16043:256::-;16141:6;16194:3;16182:9;16173:7;16169:23;16165:33;16162:53;;;16211:1;16208;16201:12;16162:53;16234:59;16285:7;16274:9;16234:59;:::i;16304:163::-;16382:13;;16435:6;16424:18;;16414:29;;16404:57;;16457:1;16454;16447:12;16472:160;16549:13;;16602:4;16591:16;;16581:27;;16571:55;;16622:1;16619;16612:12;16637:167;16715:13;;16768:10;16757:22;;16747:33;;16737:61;;16794:1;16791;16784:12;16809:1062;16907:6;16960:3;16948:9;16939:7;16935:23;16931:33;16928:53;;;16977:1;16974;16967:12;16928:53;17003:22;;:::i;:::-;17048:39;17077:9;17048:39;:::i;:::-;17041:5;17034:54;17120:48;17164:2;17153:9;17149:18;17120:48;:::i;:::-;17115:2;17108:5;17104:14;17097:72;17201:48;17245:2;17234:9;17230:18;17201:48;:::i;:::-;17196:2;17189:5;17185:14;17178:72;17282:48;17326:2;17315:9;17311:18;17282:48;:::i;:::-;17277:2;17270:5;17266:14;17259:72;17364:48;17407:3;17396:9;17392:19;17364:48;:::i;:::-;17358:3;17351:5;17347:15;17340:73;17446:48;17489:3;17478:9;17474:19;17446:48;:::i;:::-;17440:3;17433:5;17429:15;17422:73;17528:49;17572:3;17561:9;17557:19;17528:49;:::i;:::-;17522:3;17515:5;17511:15;17504:74;17632:3;17621:9;17617:19;17611:26;17605:3;17598:5;17594:15;17587:51;17657:3;17713:2;17702:9;17698:18;17692:25;17687:2;17680:5;17676:14;17669:49;;17737:3;17772:68;17832:7;17827:2;17816:9;17812:18;17772:68;:::i;:::-;17756:14;;;17749:92;17760:5;16809:1062;-1:-1:-1;;;16809:1062:121:o;18185:675::-;18288:6;18341:3;18329:9;18320:7;18316:23;18312:33;18309:53;;;18358:1;18355;18348:12;18309:53;18391:2;18385:9;18433:3;18425:6;18421:16;18503:6;18491:10;18488:22;-1:-1:-1;;;;;18455:10:121;18452:34;18449:62;18446:88;;;18514:18;;:::i;:::-;18550:2;18543:22;18589:39;18618:9;18589:39;:::i;:::-;18581:6;18574:55;18662:48;18706:2;18695:9;18691:18;18662:48;:::i;:::-;18657:2;18649:6;18645:15;18638:73;18765:2;18754:9;18750:18;18744:25;18739:2;18731:6;18727:15;18720:50;18824:2;18813:9;18809:18;18803:25;18798:2;18790:6;18786:15;18779:50;18848:6;18838:16;;;18185:675;;;;:::o;18865:183::-;18925:4;-1:-1:-1;;;;;18950:6:121;18947:30;18944:56;;;18980:18;;:::i;:::-;-1:-1:-1;19025:1:121;19021:14;19037:4;19017:25;;18865:183::o;19053:881::-;19148:6;19179:2;19222;19210:9;19201:7;19197:23;19193:32;19190:52;;;19238:1;19235;19228:12;19190:52;19271:9;19265:16;-1:-1:-1;;;;;19296:6:121;19293:30;19290:50;;;19336:1;19333;19326:12;19290:50;19359:22;;19412:4;19404:13;;19400:27;-1:-1:-1;19390:55:121;;19441:1;19438;19431:12;19390:55;19470:2;19464:9;19493:60;19509:43;19549:2;19509:43;:::i;:::-;19493:60;:::i;:::-;19587:15;;;19669:1;19665:10;;;;19657:19;;19653:28;;;19618:12;;;;19693:19;;;19690:39;;;19725:1;19722;19715:12;19690:39;19749:11;;;;19769:135;19785:6;19780:3;19777:15;19769:135;;;19851:10;;19839:23;;19802:12;;;;19882;;;;19769:135;;;19923:5;19053:881;-1:-1:-1;;;;;;;19053:881:121:o;20218:384::-;-1:-1:-1;;;;;;20403:33:121;;20391:46;;20460:13;;20373:3;;20482:74;20460:13;20545:1;20536:11;;20529:4;20517:17;;20482:74;:::i;:::-;20576:16;;;;20594:1;20572:24;;20218:384;-1:-1:-1;;;20218:384:121:o;20607:287::-;20736:3;20774:6;20768:13;20790:66;20849:6;20844:3;20837:4;20829:6;20825:17;20790:66;:::i;:::-;20872:16;;;;;20607:287;-1:-1:-1;;20607:287:121:o;20899:683::-;20964:5;21017:3;21010:4;21002:6;20998:17;20994:27;20984:55;;21035:1;21032;21025:12;20984:55;21064:6;21058:13;21090:4;21114:60;21130:43;21170:2;21130:43;:::i;21114:60::-;21208:15;;;21294:1;21290:10;;;;21278:23;;21274:32;;;21239:12;;;;21318:15;;;21315:35;;;21346:1;21343;21336:12;21315:35;21382:2;21374:6;21370:15;21394:159;21410:6;21405:3;21402:15;21394:159;;;21476:34;21506:3;21476:34;:::i;:::-;21464:47;;21531:12;;;;21427;;21394:159;;;-1:-1:-1;21571:5:121;20899:683;-1:-1:-1;;;;;;20899:683:121:o;21587:681::-;21651:5;21704:3;21697:4;21689:6;21685:17;21681:27;21671:55;;21722:1;21719;21712:12;21671:55;21751:6;21745:13;21777:4;21801:60;21817:43;21857:2;21817:43;:::i;21801:60::-;21895:15;;;21981:1;21977:10;;;;21965:23;;21961:32;;;21926:12;;;;22005:15;;;22002:35;;;22033:1;22030;22023:12;22002:35;22069:2;22061:6;22057:15;22081:158;22097:6;22092:3;22089:15;22081:158;;;22163:33;22192:3;22163:33;:::i;:::-;22151:46;;22217:12;;;;22114;;22081:158;;22273:510;22327:5;22380:3;22373:4;22365:6;22361:17;22357:27;22347:55;;22398:1;22395;22388:12;22347:55;22427:6;22421:13;-1:-1:-1;;;;;22449:2:121;22446:26;22443:52;;;22475:18;;:::i;:::-;22519:55;22562:2;22543:13;;-1:-1:-1;;22539:27:121;22568:4;22535:38;22519:55;:::i;:::-;22599:2;22590:7;22583:19;22645:3;22638:4;22633:2;22625:6;22621:15;22617:26;22614:35;22611:55;;;22662:1;22659;22652:12;22611:55;22675:77;22749:2;22742:4;22733:7;22729:18;22722:4;22714:6;22710:17;22675:77;:::i;:::-;22770:7;22273:510;-1:-1:-1;;;;22273:510:121:o;22788:2294::-;22915:6;22946:2;22989;22977:9;22968:7;22964:23;22960:32;22957:52;;;23005:1;23002;22995:12;22957:52;23038:9;23032:16;-1:-1:-1;;;;;23108:2:121;23100:6;23097:14;23094:34;;;23124:1;23121;23114:12;23094:34;23162:6;23151:9;23147:22;23137:32;;23207:7;23200:4;23196:2;23192:13;23188:27;23178:55;;23229:1;23226;23219:12;23178:55;23258:2;23252:9;23281:60;23297:43;23337:2;23297:43;:::i;23281:60::-;23375:15;;;23457:1;23453:10;;;;23445:19;;23441:28;;;23406:12;;;;23481:19;;;23478:39;;;23513:1;23510;23503:12;23478:39;23545:2;23541;23537:11;23557:1495;23573:6;23568:3;23565:15;23557:1495;;;23652:3;23646:10;23688:2;23675:11;23672:19;23669:39;;;23704:1;23701;23694:12;23669:39;23731:20;;23803:4;23775:16;;;-1:-1:-1;;23771:30:121;23767:41;23764:131;;;23849:1;23878:2;23874;23867:14;23764:131;23921:22;;:::i;:::-;23986:2;23982;23978:11;23972:18;24019:2;24009:8;24006:16;24003:106;;;24063:1;24092:2;24088;24081:14;24003:106;24136:76;24204:7;24199:2;24188:8;24184:2;24180:17;24176:26;24136:76;:::i;:::-;24129:5;24122:91;;24236:2;24281;24277;24273:11;24267:18;24314:2;24304:8;24301:16;24298:106;;;24358:1;24387:2;24383;24376:14;24298:106;24440:75;24507:7;24502:2;24491:8;24487:2;24483:17;24479:26;24440:75;:::i;:::-;24435:2;24428:5;24424:14;24417:99;;24540:2;24585:3;24581:2;24577:12;24571:19;24619:2;24609:8;24606:16;24603:109;;;24664:1;24694:3;24689;24682:16;24603:109;24748:65;24805:7;24800:2;24789:8;24785:2;24781:17;24777:26;24748:65;:::i;:::-;24743:2;24736:5;24732:14;24725:89;;24838:3;24827:14;;24892:3;24888:2;24884:12;24878:19;24872:3;24865:5;24861:15;24854:44;;24935:43;24972:4;24968:2;24964:13;24935:43;:::i;:::-;24918:15;;;24911:68;24992:18;;-1:-1:-1;25030:12:121;;;;23590;;23557:1495;;;-1:-1:-1;25071:5:121;22788:2294;-1:-1:-1;;;;;;;;22788:2294:121:o;25087:446::-;25337:2;25326:9;25319:21;25376:1;25371:2;25360:9;25356:18;25349:29;-1:-1:-1;;;25409:2:121;25398:9;25394:18;25387:35;25460:3;25453:4;25442:9;25438:20;25431:33;25300:4;25481:46;25522:3;25511:9;25507:19;25499:6;25481:46;:::i;31314:435::-;31547:3;31536:9;31529:22;31510:4;31568:46;31609:3;31598:9;31594:19;31586:6;31568:46;:::i;:::-;31645:2;31630:18;;31623:34;;;;-1:-1:-1;31688:2:121;31673:18;;31666:34;;;;31731:2;31716:18;;;31709:34;31560:54;31314:435;-1:-1:-1;31314:435:121:o", + "object": "0x60806040523480156200001157600080fd5b5060043610620001205760003560e01c806366d9a9a011620000af578063b5508aa9116200007a578063b5508aa914620001da578063ba414fa614620001e4578063bc63aee514620001ff578063e20c9f711462000209578063fa7626d4146200021357600080fd5b806366d9a9a014620001945780636782a7d514620001ad57806385226c8114620001b7578063916a17c614620001d057600080fd5b80632ade388011620000f05780632ade3880146200016757806332a3fe0f146200015d5780633e5e3c2314620001805780633f7286f4146200018a57600080fd5b806203603214620001255780630a9254e414620001315780631ed7831c146200013b5780632571fac2146200015d575b600080fd5b6200012f62000221565b005b6200012f620005b5565b6200014562001146565b60405162000154919062003836565b60405180910390f35b6200012f620011aa565b6200017162001216565b604051620001549190620038a6565b6200014562001364565b62000145620013c6565b6200019e62001428565b6040516200015491906200396c565b6200012f62001512565b620001c16200222b565b60405162000154919062003a23565b6200019e62002305565b620001c1620023ef565b620001ee620024c9565b604051901515815260200162000154565b6200012f620025f6565b62000145620028ef565b600754620001ee9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200026b9160016001600160a01b039091163b119062002951565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b6020820152620002b69160026001600160a01b039091163b119062002951565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620003009160046001600160a01b039091163b119062002951565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200034a9160056001600160a01b039091163b119062002951565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003939160066001600160a01b039091163b119062002951565b601e54602454604080516341dcea9160e01b8152905162000439936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062003aa1565b6001600160a01b03161460405180606001604052806028815260200162015d016028913962002951565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004ef92919091169063adcee6e390602401602060405180830381865afa1580156200048d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b3919062003abf565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e657200000000000000000081525062002951565b620005b360006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000578919062003aa1565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b81525062002951565b565b60004215620005c55742620005cb565b636553f0ff5b905060008051602062015cb883398151915263e5d6bf02620005ef83600162003ae3565b6040518263ffffffff1660e01b81526004016200060e91815260200190565b600060405180830381600087803b1580156200062957600080fd5b505af11580156200063e573d6000803e3d6000fd5b505050506200064c6200299f565b6040516200065a9062003772565b604051809103906000f08015801562000677573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b5050601e5460408051638da5cb5b60e01b8152905160008051602062015cb8833981519152945063ca669fa793506001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa1580156200077a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a0919062003aa1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b5050601e54602c5460405163a9810f4560e01b81526001600160a01b0391821660048201529116925063a9810f459150602401600060405180830381600087803b1580156200084557600080fd5b505af11580156200085a573d6000803e3d6000fd5b50505050601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d8919062003aa1565b602280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e2637b1b0b62932b83aba30ba34b7b760891b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200096657600080fd5b505af11580156200097b573d6000803e3d6000fd5b505060265460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b158015620009d457600080fd5b505af1158015620009e9573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000a2892600192600492911690820162003b0b565b600060405180830381600087803b15801562000a4357600080fd5b505af115801562000a58573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000ab157600080fd5b505af115801562000ac6573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000b069260019260069291169060040162003b0b565b600060405180830381600087803b15801562000b2157600080fd5b505af115801562000b36573d6000803e3d6000fd5b505060285460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000b8f57600080fd5b505af115801562000ba4573d6000803e3d6000fd5b5050601c54602454604051635bc4ffdf60e01b81526001600160a01b039283169450635bc4ffdf935062000be49260019260099291169060040162003b0b565b600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb8833981519152925063ca669fa79150602401600060405180830381600087803b15801562000c6d57600080fd5b505af115801562000c82573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000ca3915062003780565b6001600160a01b039091168152602001604051809103906000f08015801562000cd0573d6000803e3d6000fd5b50602d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152601160448201527024b73a32b930b1ba34b7b728363ab3b4b760791b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201526060925060008051602062015cb8833981519152915063ca669fa790602401600060405180830381600087803b15801562000dd257600080fd5b505af115801562000de7573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b8152600094506001600160a01b03928316935063342094ba9262000e2a9216908590600190889060040162003b7b565b6020604051808303816000875af115801562000e4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e70919062003c18565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562000ec857600080fd5b505af115801562000edd573d6000803e3d6000fd5b5050601e54602d54604051634d4547c960e01b81526001600160a01b0391821660048201526024810186905291169250634d4547c99150604401600060405180830381600087803b15801562000f3257600080fd5b505af115801562000f47573d6000803e3d6000fd5b5050601e54602d546040516328e26caf60e11b81526001600160a01b039182166004820152911692506351c4d95e9150602401602060405180830381865afa15801562000f98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbe919062003c18565b602e55602554602f80546001600160a01b0319166001600160a01b0392831690811790915560248054604051630935e01b60e21b815260048101939093526200108c9316916324d7806c91016020604051808303816000875af11580156200102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001050919062003abf565b6040518060400160405280601781526020017f6578706563746564206465706c6f7965722061646d696e00000000000000000081525062002951565b60248054602f5460405163288c314960e21b81526001600160a01b0391821660048201526200114193919092169163a230c5249101602060405180830381865afa158015620010df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001105919062003abf565b6040518060400160405280601881526020017f6465706c6f7965722061646d696e206973206d656d626572000000000000000081525062003518565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620011a057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001181575b5050505050905090565b604051636ec1689f60e11b81526001600482015260008051602062015cb88339815191529063dd82d13e90602401600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50505050620005b362001512565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200135b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001343578382906000526020600020018054620012af9062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620012dd9062003c32565b80156200132e5780601f1062001302576101008083540402835291602001916200132e565b820191906000526020600020905b8154815290600101906020018083116200131057829003601f168201915b5050505050815260200190600101906200128d565b5050505081525050815260200190600101906200123a565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620014f957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620014ba5790505b505050505081525050815260200190600101906200144c565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050604080518082019091526013815272436f6d6d756e697479204d656574696e67203760681b60208201526024546027548551939450610280936001600160a01b0392831692909116908690600090620015b257620015b262003c84565b6001600160a01b039283166020918202929092010152602854865191169086906001908110620015e657620015e662003c84565b60200260200101906001600160a01b031690816001600160a01b0316815250506050846000815181106200161e576200161e62003c84565b602002602001019061ffff16908161ffff168152505060f0846001815181106200164c576200164c62003c84565b61ffff92909216602092830291909101909101526024805460275460405163288c314960e21b81526001600160a01b0391821660048201526200170593919092169163a230c5249101602060405180830381865afa158015620016b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016d9919062003abf565b6040518060400160405280600d81526020016c2099103737ba1036b2b6b132b960991b81525062002951565b6024805460285460405163288c314960e21b81526001600160a01b039182166004820152620017aa93919092169163a230c5249101602060405180830381865afa15801562001758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177e919062003abf565b6040518060400160405280600d81526020016c2099903737ba1036b2b6b132b960991b81525062002951565b604051630618f58760e51b8152637bfa4b9f60e01b600482015260008051602062015cb88339815191529063c31eb0e090602401600060405180830381600087803b158015620017f957600080fd5b505af11580156200180e573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200184a90889088908890889060040162003c9a565b6020604051808303816000875af11580156200186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001890919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038381166004830152600092169063318e3d8c9060240160a060405180830381865afa158015620018dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001903919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0385811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152868216602482015292935060009291169063584f01be90604401608060405180830381865afa158015620019d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019fc919062003f6e565b905062001a4c60405180606001604052806029815260200162015cd86029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562001aa157600080fd5b505af115801562001ab6573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb309915062001af2908b908b908b908b9060040162003c9a565b6020604051808303816000875af115801562001b12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b38919062003c18565b50602254604051630c638f6360e21b81526001600160a01b038681166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001b85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bab919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b0388811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562001bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c23919062003e9f565b602254602654604051632c2780df60e11b81526001600160a01b039182166004820152898216602482015292935060009291169063584f01be90604401608060405180830381865afa15801562001c7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca4919062003f6e565b905062001cf460405180606001604052806029815260200162015cd86029913984604001516001600160401b031685608001516001600160401b031684602001516001600160401b031662003525565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001d5357600080fd5b505af115801562001d68573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038b811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001db9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de391908101906200400d565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528982166024820152600092919091169063584f01be90604401608060405180830381865afa15801562001e3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e64919062003f6e565b905062001e7f62001e7942622a300062003ae3565b62003572565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b15801562001ed457600080fd5b505af115801562001ee9573d6000803e3d6000fd5b5050602254604051631b827d6760e21b81526001600160a01b038c811660048301529091169250636e09f59c91506024016000604051808303816000875af115801562001f3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f6491908101906200400d565b50602254604051630c638f6360e21b81526001600160a01b038a81166004830152600092169063318e3d8c9060240160a060405180830381865afa15801562001fb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd7919062003e46565b602254604051631e3c1f4f60e31b81526001600160a01b038c811660048301529293506000929091169063f1e0fa78906024016101c060405180830381865afa15801562002029573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200204f919062003e9f565b60255460405163ca669fa760e01b81526001600160a01b03909116600482015290915060008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b158015620020a757600080fd5b505af1158015620020bc573d6000803e3d6000fd5b50505050602d60009054906101000a90046001600160a01b03166001600160a01b0316634acdb3098f8f8f8f6040518563ffffffff1660e01b815260040162002109949392919062003c9a565b6020604051808303816000875af115801562002129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200214f919062003c18565b50602254602754604051632c2780df60e11b81526001600160a01b0391821660048201528c8216602482015291169063584f01be90604401608060405180830381865afa158015620021a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021cb919062003f6e565b92506200221b60405180606001604052806029815260200162015cd86029913983604001516001600160401b031684608001516001600160401b031686602001516001600160401b031662003525565b5050505050505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620022719062003c32565b80601f01602080910402602001604051908101604052809291908181526020018280546200229f9062003c32565b8015620022f05780601f10620022c457610100808354040283529160200191620022f0565b820191906000526020600020905b815481529060010190602001808311620022d257829003601f168201915b5050505050815260200190600101906200224f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200135b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023d657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023975790505b5050505050815250508152602001906001019062002329565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200135b578382906000526020600020018054620024359062003c32565b80601f0160208091040260200160405190810160405280929190818152602001828054620024639062003c32565b8015620024b45780601f106200248857610100808354040283529160200191620024b4565b820191906000526020600020905b8154815290600101906020018083116200249657829003601f168201915b50505050508152602001906001019062002413565b600754600090610100900460ff1615620024ec5750600754610100900460ff1690565b600060008051602062015cb88339815191523b15620025f1576040805160008051602062015cb8833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002573917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620040ac565b60408051601f19818403018152908290526200258f91620040df565b6000604051808303816000865af19150503d8060008114620025ce576040519150601f19603f3d011682016040523d82523d6000602084013e620025d3565b606091505b5091505080806020019051810190620025ed919062003abf565b9150505b919050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805180820182526013815272436f6d6d756e697479204d656574696e67203760681b60208201529051630618f58760e51b8152637bfa4b9f60e01b60048201529192506103e89160008051602062015cb88339815191529063c31eb0e090602401600060405180830381600087803b158015620026b757600080fd5b505af1158015620026cc573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb30991506200270890879087908790879060040162003c9a565b6020604051808303816000875af115801562002728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200274e919062003c18565b5060255460405163ca669fa760e01b81526001600160a01b03909116600482015260008051602062015cb88339815191529063ca669fa790602401600060405180830381600087803b158015620027a457600080fd5b505af1158015620027b9573d6000803e3d6000fd5b5050602d54604051634acdb30960e01b81526001600160a01b039091169250634acdb3099150620027f590879087908790879060040162003c9a565b6020604051808303816000875af115801562002815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283b919062003c18565b50602d5460408051631298d80960e21b81529051620028e9926001600160a01b031691634a6360249160048083019260009291908290030181865afa15801562002889573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028b3919081019062004252565b51600114604051806040016040528060138152602001723737ba1037b7329034b73a32b930b1ba34b7b760691b81525062002951565b50505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620011a0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001181575050505050905090565b816200299b577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620029889190620043b8565b60405180910390a16200299b82620035cd565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002a3057600080fd5b505af115801562002a45573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062015cb8833981519152925063c657c7189150608401600060405180830381600087803b15801562002ada57600080fd5b505af115801562002aef573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062015cb8833981519152925063c657c7189150608401600060405180830381600087803b15801562002b8457600080fd5b505af115801562002b99573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002c3a57600080fd5b505af115801562002c4f573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062015cb883398151915292506306447d569150602401600060405180830381600087803b15801562002ca857600080fd5b505af115801562002cbd573d6000803e3d6000fd5b5050505060405162002ccf906200378e565b604051809103906000f08015801562002cec573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002d7657600080fd5b505af115801562002d8b573d6000803e3d6000fd5b5050505060405162002d9d906200379c565b604051809103906000f08015801562002dba573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002e4357600080fd5b505af115801562002e58573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562002ea657600080fd5b505af115801562002ebb573d6000803e3d6000fd5b5050505060405162002ecd90620037aa565b604051809103906000f08015801562002eea573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b15801562002f7057600080fd5b505af115801562002f85573d6000803e3d6000fd5b5050505060405162002f9790620037b8565b604051809103906000f08015801562002fb4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200303e57600080fd5b505af115801562003053573d6000803e3d6000fd5b50506023546040516001600160a01b039091169250620030749150620037c6565b6001600160a01b039091168152602001604051809103906000f080158015620030a1573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200313057600080fd5b505af115801562003145573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620031669150620037d4565b6001600160a01b039091168152602001604051809103906000f08015801562003193573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b1580156200322257600080fd5b505af115801562003237573d6000803e3d6000fd5b50505050604051620032499062003772565b604051809103906000f08015801562003266573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620032c657600080fd5b505af1158015620032db573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200330c90620037e2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562003351573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b606482015260008051602062015cb88339815191529063c657c71890608401600060405180830381600087803b158015620033de57600080fd5b505af1158015620033f3573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200346f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003495919062003aa1565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062015cb8833981519152916390c5013b9160048082019260009290919082900301818387803b158015620034fc57600080fd5b505af115801562003511573d6000803e3d6000fd5b5050505050565b6200299b82158262002951565b620028e984848484604051602401620035429493929190620043e9565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b17905262003648565b60008051602062015cb883398151915263e5d6bf0262003593834262003ae3565b6040518263ffffffff1660e01b8152600401620035b291815260200190565b600060405180830381600087803b158015620034fc57600080fd5b8062003645577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036339060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200364562003669565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008051602062015cb88339815191523b1562003761576040805160008051602062015cb8833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620036fc9291602001620040ac565b60408051601f19818403018152908290526200371891620040df565b6000604051808303816000865af19150503d806000811462003757576040519150601f19603f3d011682016040523d82523d6000602084013e6200375c565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200441b83390190565b6115b38062007bf083390190565b61012080620091a383390190565b610c7280620092c383390190565b6137238062009f3583390190565b6125a3806200d65883390190565b6110db806200fbfb83390190565b6130438062010cd683390190565b611f9f8062013d1983390190565b600081518084526020808501945080840160005b838110156200382b5781516001600160a01b03168752958201959082019060010162003804565b509495945050505050565b6020815260006200384b6020830184620037f0565b9392505050565b60005b838110156200386f57818101518382015260200162003855565b50506000910152565b600081518084526200389281602086016020860162003852565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200395c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200394557605f198985030183526200393284865162003878565b948e01949350918d019160010162003913565b505050978a019794505091880191600101620038cd565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003a1457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620039fe5783516001600160e01b0319168252928b019260019290920191908b0190620039d2565b50978a0197955050509187019160010162003994565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003a7c57603f1988860301845262003a6985835162003878565b9450928501929085019060010162003a4a565b5092979650505050505050565b80516001600160a01b0381168114620025f157600080fd5b60006020828403121562003ab457600080fd5b6200384b8262003a89565b60006020828403121562003ad257600080fd5b815180151581146200384b57600080fd5b8082018082111562003b0557634e487b7160e01b600052601160045260246000fd5b92915050565b60a08152600062003b3260a08301600681526561204e616d6560d01b602082015260400190565b828103602084015262003b578160058152641d5c9b1b1b60da1b602082015260400190565b6040840196909652505060608101929092526001600160a01b031660809091015290565b60018060a01b03851681526000602060a081840152601860a08401527f6f776e65722063616e2073706f6f66206d65746164617461000000000000000060c084015260e08301866040850152851515606085015260e0608085015280855180835261010086019150838701925060005b8181101562003c095783518352928401929184019160010162003beb565b50909998505050505050505050565b60006020828403121562003c2b57600080fd5b5051919050565b600181811c9082168062003c4757607f821691505b60208210810362003c6857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60808152600062003caf6080830187620037f0565b82810360208481019190915286518083528782019282019060005b8181101562003cec57845161ffff168352938301939183019160010162003cca565b505061ffff87166040860152848103606086015262003d0c818762003878565b9998505050505050505050565b60405160a081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b60405290565b60405161014081016001600160401b038111828210171562003d3e5762003d3e62003c6e565b604051601f8201601f191681016001600160401b038111828210171562003d955762003d9562003c6e565b604052919050565b8051600381900b8114620025f157600080fd5b80516001600160401b0381168114620025f157600080fd5b600060a0828403121562003ddb57600080fd5b62003de562003d19565b905062003df28262003d9d565b815262003e026020830162003d9d565b602082015262003e156040830162003db0565b604082015262003e286060830162003db0565b606082015262003e3b6080830162003db0565b608082015292915050565b600060a0828403121562003e5957600080fd5b6200384b838362003dc8565b805161ffff81168114620025f157600080fd5b805160ff81168114620025f157600080fd5b805163ffffffff81168114620025f157600080fd5b60006101c0828403121562003eb357600080fd5b62003ebd62003d44565b62003ec88362003db0565b815262003ed86020840162003db0565b602082015262003eeb6040840162003db0565b604082015262003efe6060840162003e65565b606082015262003f116080840162003e78565b608082015262003f2460a0840162003e78565b60a082015262003f3760c0840162003e8a565b60c082015260e083015160e082015261010080840151818301525061012062003f638582860162003dc8565b908201529392505050565b60006080828403121562003f8157600080fd5b604051608081018181106001600160401b038211171562003fa65762003fa662003c6e565b60405262003fb48362003db0565b815262003fc46020840162003db0565b602082015260408301516040820152606083015160608201528091505092915050565b60006001600160401b0382111562004003576200400362003c6e565b5060051b60200190565b600060208083850312156200402157600080fd5b82516001600160401b038111156200403857600080fd5b8301601f810185136200404a57600080fd5b8051620040616200405b8262003fe7565b62003d6a565b81815260059190911b820183019083810190878311156200408157600080fd5b928401925b82841015620040a15783518252928401929084019062004086565b979650505050505050565b6001600160e01b0319831681528151600090620040d181600485016020870162003852565b919091016004019392505050565b60008251620040f381846020870162003852565b9190910192915050565b600082601f8301126200410f57600080fd5b81516020620041226200405b8362003fe7565b82815260059290921b840181019181810190868411156200414257600080fd5b8286015b8481101562004168576200415a8162003a89565b835291830191830162004146565b509695505050505050565b600082601f8301126200418557600080fd5b81516020620041986200405b8362003fe7565b82815260059290921b84018101918181019086841115620041b857600080fd5b8286015b848110156200416857620041d08162003e65565b8352918301918301620041bc565b600082601f830112620041f057600080fd5b81516001600160401b038111156200420c576200420c62003c6e565b62004221601f8201601f191660200162003d6a565b8181528460208386010111156200423757600080fd5b6200424a82602083016020870162003852565b949350505050565b600060208083850312156200426657600080fd5b82516001600160401b03808211156200427e57600080fd5b818501915085601f8301126200429357600080fd5b8151620042a46200405b8262003fe7565b81815260059190911b83018401908481019088831115620042c457600080fd5b8585015b83811015620043ab57805185811115620042e157600080fd5b860160a0818c03601f19011215620042f95760008081fd5b6200430362003d19565b8882015187811115620043165760008081fd5b620043268d8b83860101620040fd565b825250604080830151888111156200433e5760008081fd5b6200434e8e8c8387010162004173565b8b8401525060608084015189811115620043685760008081fd5b620043788f8d83880101620041de565b8385015250608091508184015181840152506200439860a0840162003e65565b90820152845250918601918601620042c8565b5098975050505050505050565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200384b608083018462003878565b608081526000620043fe608083018762003878565b602083019590955250604081019290925260609091015291905056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122028e1b297438dc1433039ab47585ab8a2c36116f1b883698a6f56faa0dce7639164736f6c63430008130033", + "sourceMap": "337:5002:131:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;499:1357:131;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:268:131;;;:::i;3360:151:72:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2616:2334:131:-;;;:::i;2592:140:72:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5573:14:134;;5566:22;5548:41;;5536:2;5521:18;1819:584:65;5408:187:134;1862:748:131;;;:::i;2304:142:72:-;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;6141:51:134;3476:66:127;;3487:3;;;;;:23;;6114:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;499:1357:131:-;542:13;558:15;:20;:51;;594:15;558:51;;;581:10;558:51;542:67;-1:-1:-1;;;;;;;;;;;;619:7:131;627:9;542:67;635:1;627:9;:::i;:::-;619:18;;;;;;;;;;;;;6858:25:134;;6846:2;6831:18;;6712:177;619:18:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;648:13;:11;:13::i;:::-;687:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;672:12:131;:36;;-1:-1:-1;;;;;;672:36:131;-1:-1:-1;;;;;672:36:131;;;;;;;;;718:43;;;-1:-1:-1;;;718:43:131;;;;;7106:51:134;;;;7173:18;;;7166:30;7232:1;7212:18;;;7205:29;-1:-1:-1;;;7250:18:134;;;7243:38;-1:-1:-1;;;;;;;;;;;718:8:131;;;7298:19:134;;718:43:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:3:131;;:11;;;-1:-1:-1;;;781:11:131;;;;-1:-1:-1;;;;;;;;;;;772:8:131;-1:-1:-1;772:8:131;;-1:-1:-1;;;;;;781:3:131;;;;:9;;:11;;;;;;;;;;;;;;;:3;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;772:21;;-1:-1:-1;;;;;;772:21:131;;;;;;;-1:-1:-1;;;;;6159:32:134;;;772:21:131;;;6141:51:134;6114:18;;772:21:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;803:3:131;;834:12;;803:45;;-1:-1:-1;;;803:45:131;;-1:-1:-1;;;;;834:12:131;;;803:45;;;6141:51:134;803:3:131;;;-1:-1:-1;803:22:131;;-1:-1:-1;6114:18:134;;803:45:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:3;;;;;;;;;-1:-1:-1;;;;;882:3:131;-1:-1:-1;;;;;882:17:131;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;859:3;:43;;-1:-1:-1;;;;;;859:43:131;-1:-1:-1;;;;;859:43:131;;;;;;;;;912:41;;;-1:-1:-1;;;912:41:131;;;;;7540:51:134;;;;7607:18;;;7600:30;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7685:18:134;;;7678:45;-1:-1:-1;;;;;;;;;;;912:8:131;;;7740:19:134;;912:41:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;973:2:131;;964:12;;-1:-1:-1;;;964:12:131;;-1:-1:-1;;;;;973:2:131;;;964:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;964:8:131;-1:-1:-1;964:8:131;;-1:-1:-1;6114:18:134;;964:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;986:3:131;;1028:4;;986:48;;-1:-1:-1;;;986:48:131;;-1:-1:-1;;;;;986:3:131;;;;-1:-1:-1;986:8:131;;-1:-1:-1;986:48:131;;:3;;1017:1;;1028:4;;;986:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1054:2:131;;1045:12;;-1:-1:-1;;;1045:12:131;;-1:-1:-1;;;;;1054:2:131;;;1045:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1045:8:131;-1:-1:-1;1045:8:131;;-1:-1:-1;6114:18:134;;1045:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1067:3:131;;1109:4;;1067:48;;-1:-1:-1;;;1067:48:131;;-1:-1:-1;;;;;1067:3:131;;;;-1:-1:-1;1067:8:131;;-1:-1:-1;1067:48:131;;:3;;1098:1;;1109:4;;;1067:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1135:2:131;;1126:12;;-1:-1:-1;;;1126:12:131;;-1:-1:-1;;;;;1135:2:131;;;1126:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1126:8:131;-1:-1:-1;1126:8:131;;-1:-1:-1;6114:18:134;;1126:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1148:3:131;;1190:4;;1148:48;;-1:-1:-1;;;1148:48:131;;-1:-1:-1;;;;;1148:3:131;;;;-1:-1:-1;1148:8:131;;-1:-1:-1;1148:48:131;;:3;;1179:1;;1190:4;;;1148:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1216:2:131;;1207:12;;-1:-1:-1;;;1207:12:131;;-1:-1:-1;;;;;1216:2:131;;;1207:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1207:8:131;-1:-1:-1;1207:8:131;;-1:-1:-1;6114:18:134;;1207:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:4:131;;1241:35;;-1:-1:-1;;;;;1269:4:131;;;;-1:-1:-1;1241:35:131;;-1:-1:-1;1241:35:131;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;1241:35:131;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1229:9:131;:47;;-1:-1:-1;;;;;;1229:47:131;-1:-1:-1;;;;;1229:47:131;;;;;;;;;1286:49;;;-1:-1:-1;;;1286:49:131;;;;;10579:51:134;;;;10646:18;;;10639:30;10705:2;10685:18;;;10678:30;-1:-1:-1;;;10724:18:134;;;10717:47;-1:-1:-1;;;;;;;;;;;1286:8:131;;;10781:19:134;;1286:49:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1392:2:131;;1383:12;;-1:-1:-1;;;1383:12:131;;-1:-1:-1;;;;;1392:2:131;;;1383:12;;;6141:51:134;1346:26:131;;-1:-1:-1;;;;;;;;;;;;1383:8:131;-1:-1:-1;1383:8:131;;6114:18:134;;1383:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1446:3:131;;1478:2;;1446:84;;-1:-1:-1;;;1446:84:131;;1405:26;;-1:-1:-1;;;;;;1446:3:131;;;;-1:-1:-1;1446:23:131;;:84;;1478:2;;1405:26;;1446:3;;1520:9;;1446:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1550:2;;1541:12;;-1:-1:-1;;;1541:12:131;;-1:-1:-1;;;;;1550:2:131;;;1541:12;;;6141:51:134;1405:125:131;;-1:-1:-1;;;;;;;;;;;;1541:8:131;;;6114:18:134;;1541:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1563:3:131;;1590:9;;1563:58;;-1:-1:-1;;;1563:58:131;;-1:-1:-1;;;;;1590:9:131;;;1563:58;;;12324:51:134;12391:18;;;12384:34;;;1563:3:131;;;-1:-1:-1;1563:18:131;;-1:-1:-1;12297:18:134;;1563:58:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1647:3:131;;1678:9;;1647:42;;-1:-1:-1;;;1647:42:131;;-1:-1:-1;;;;;1678:9:131;;;1647:42;;;6141:51:134;1647:3:131;;;-1:-1:-1;1647:22:131;;-1:-1:-1;6114:18:134;;1647:42:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1632:12;:57;1708:2;;1700:5;:10;;-1:-1:-1;;;;;;1700:10:131;-1:-1:-1;;;;;1708:2:131;;;1700:10;;;;;;1731:4;;;:19;;-1:-1:-1;;;1731:19:131;;;;;6141:51:134;;;;1720:58:131;;1731:4;;:12;;6114:18:134;1731:19:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1720:58;;;;;;;;;;;;;;;;;:10;:58::i;:::-;1800:4;;;1814:5;;1800:20;;-1:-1:-1;;;1800:20:131;;-1:-1:-1;;;;;1814:5:131;;;1800:20;;;6141:51:134;1788:61:131;;1800:4;;;;;:13;;6114:18:134;1800:20:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1788:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;532:1324;;;499:1357::o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;5069:268:131:-;5121:13;;-1:-1:-1;;;5121:13:131;;5129:4;5121:13;;;5548:41:134;-1:-1:-1;;;;;;;;;;;5121:7:131;;;5521:18:134;;5121:13:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5313:17;:15;:17::i;3360:151:72:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2616:2334:131;2692:16;;;2706:1;2692:16;;;;;;;;2660:29;;2692:16;;;;;;;;-1:-1:-1;;2756:15:131;;;2769:1;2756:15;;;;;;;;2660:48;;-1:-1:-1;2718:35:131;;2756:15;;-1:-1:-1;2769:1:131;2756:15;;;;;;;;;;-1:-1:-1;;2828:59:131;;;;;;;;;;;;-1:-1:-1;;;2828:59:131;;;;2924:4;;2958:2;;2940:15;;2718:53;;-1:-1:-1;2815:3:131;;-1:-1:-1;;;;;2924:4:131;;;;2958:2;;;;2940:15;;-1:-1:-1;;2940:15:131;;;;:::i;:::-;-1:-1:-1;;;;;2940:20:131;;;:15;;;;;;;;;:20;2988:2;;2970:15;;2988:2;;;2970:12;;2988:2;;2970:15;;;;;;:::i;:::-;;;;;;:20;-1:-1:-1;;;;;2970:20:131;;;-1:-1:-1;;;;;2970:20:131;;;;;3025:2;3000:19;3020:1;3000:22;;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;;3062:3;3037:19;3057:1;3037:22;;;;;;;;:::i;:::-;:28;;;;;:22;;;;;;;;;;;:28;3087:4;;;3101:2;;3087:17;;-1:-1:-1;;;3087:17:131;;-1:-1:-1;;;;;3101:2:131;;;3087:17;;;6141:51:134;3076:46:131;;3087:4;;;;;:13;;6114:18:134;3087:17:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3076:46;;;;;;;;;;;;;-1:-1:-1;;;3076:46:131;;;:10;:46::i;:::-;3143:4;;;3157:2;;3143:17;;-1:-1:-1;;;3143:17:131;;-1:-1:-1;;;;;3157:2:131;;;3143:17;;;6141:51:134;3132:46:131;;3143:4;;;;;:13;;6114:18:134;3143:17:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3132:46;;;;;;;;;;;;;-1:-1:-1;;;3132:46:131;;;:10;:46::i;:::-;3189:50;;-1:-1:-1;;;3189:50:131;;-1:-1:-1;;;3189:50:131;;;13222:52:134;-1:-1:-1;;;;;;;;;;;3189:15:131;;;13195:18:134;;3189:50:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3249:9:131;;:138;;-1:-1:-1;;;3249:138:131;;-1:-1:-1;;;;;3249:9:131;;;;-1:-1:-1;3249:32:131;;-1:-1:-1;3249:138:131;;3295:12;;3309:19;;3330:24;;3356:21;;3249:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3421:3:131;;:46;;-1:-1:-1;;;3421:46:131;;-1:-1:-1;;;;;6159:32:134;;;3421:46:131;;;6141:51:134;3398:20:131;;3421:3;;:27;;6114:18:134;;3421:46:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3501:3;;:27;;-1:-1:-1;;;3501:27:131;;-1:-1:-1;;;;;6159:32:134;;;3501:27:131;;;6141:51:134;3398:69:131;;-1:-1:-1;3477:21:131;;3501:3;;;;:17;;6114:18:134;;3501:27:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3567:3;;3590:2;;3567:36;;-1:-1:-1;;;3567:36:131;;-1:-1:-1;;;;;3590:2:131;;;3567:36;;;18088:34:134;18158:15;;;18138:18;;;18131:43;3477:51:131;;-1:-1:-1;3538:26:131;;3567:3;;;:22;;18023:18:134;;3567:36:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3538:65;;3614:101;;;;;;;;;;;;;;;;;;3671:2;:16;;;-1:-1:-1;;;;;3614:101:131;3689:2;:17;;;-1:-1:-1;;;;;3614:101:131;3708:3;:6;;;-1:-1:-1;;;;;3614:101:131;:11;:101::i;:::-;3735:2;;3726:12;;-1:-1:-1;;;3726:12:131;;-1:-1:-1;;;;;3735:2:131;;;3726:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;3726:8:131;;;6114:18:134;;3726:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3748:9:131;;:138;;-1:-1:-1;;;3748:138:131;;-1:-1:-1;;;;;3748:9:131;;;;-1:-1:-1;3748:32:131;;-1:-1:-1;3748:138:131;;3794:12;;3808:19;;3829:24;;3855:21;;3748:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3920:3:131;;:46;;-1:-1:-1;;;3920:46:131;;-1:-1:-1;;;;;6159:32:134;;;3920:46:131;;;6141:51:134;3897:20:131;;3920:3;;:27;;6114:18:134;;3920:46:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4000:3;;:27;;-1:-1:-1;;;4000:27:131;;-1:-1:-1;;;;;6159:32:134;;;4000:27:131;;;6141:51:134;3897:69:131;;-1:-1:-1;3976:21:131;;4000:3;;;;:17;;6114:18:134;;4000:27:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4066:3;;4089:2;;4066:36;;-1:-1:-1;;;4066:36:131;;-1:-1:-1;;;;;4089:2:131;;;4066:36;;;18088:34:134;18158:15;;;18138:18;;;18131:43;3976:51:131;;-1:-1:-1;4037:26:131;;4066:3;;;:22;;18023:18:134;;4066:36:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4037:65;;4113:101;;;;;;;;;;;;;;;;;;4170:2;:16;;;-1:-1:-1;;;;;4113:101:131;4188:2;:17;;;-1:-1:-1;;;;;4113:101:131;4207:3;:6;;;-1:-1:-1;;;;;4113:101:131;:11;:101::i;:::-;317:28:66;309:37;;-1:-1:-1;;;;;4225:15:131;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4252:3:131;;:32;;-1:-1:-1;;;4252:32:131;;-1:-1:-1;;;;;6159:32:134;;;4252::131;;;6141:51:134;4252:3:131;;;;-1:-1:-1;4252:22:131;;-1:-1:-1;6114:18:134;;4252:32:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4252:32:131;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4323:3:131;;4346:2;;4323:36;;-1:-1:-1;;;4323:36:131;;-1:-1:-1;;;;;4346:2:131;;;4323:36;;;18088:34:134;18158:15;;;18138:18;;;18131:43;4294:26:131;;4323:3;;;;;:22;;18023:18:134;;4323:36:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4294:65;-1:-1:-1;4370:31:131;4375:25;:15;4393:7;4375:25;:::i;:::-;4370:4;:31::i;:::-;4421:2;;4412:12;;-1:-1:-1;;;4412:12:131;;-1:-1:-1;;;;;4421:2:131;;;4412:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;4412:8:131;;;6114:18:134;;4412:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4434:3:131;;:32;;-1:-1:-1;;;4434:32:131;;-1:-1:-1;;;;;6159:32:134;;;4434::131;;;6141:51:134;4434:3:131;;;;-1:-1:-1;4434:22:131;;-1:-1:-1;6114:18:134;;4434:32:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4434:32:131;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4500:3:131;;:46;;-1:-1:-1;;;4500:46:131;;-1:-1:-1;;;;;6159:32:134;;;4500:46:131;;;6141:51:134;4477:20:131;;4500:3;;:27;;6114:18:134;;4500:46:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4580:3;;:27;;-1:-1:-1;;;4580:27:131;;-1:-1:-1;;;;;6159:32:134;;;4580:27:131;;;6141:51:134;4477:69:131;;-1:-1:-1;4556:21:131;;4580:3;;;;:17;;6114:18:134;;4580:27:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4627:2;;4618:12;;-1:-1:-1;;;4618:12:131;;-1:-1:-1;;;;;4627:2:131;;;4618:12;;;6141:51:134;4556::131;;-1:-1:-1;;;;;;;;;;;;4618:8:131;;;6114:18:134;;4618:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:9;;;;;;;;;-1:-1:-1;;;;;4640:9:131;-1:-1:-1;;;;;4640:32:131;;4686:12;4700:19;4721:24;4747:21;4640:138;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4795:3:131;;4818:2;;4795:36;;-1:-1:-1;;;4795:36:131;;-1:-1:-1;;;;;4818:2:131;;;4795:36;;;18088:34:134;18158:15;;;18138:18;;;18131:43;4795:3:131;;;:22;;18023:18:134;;4795:36:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4789:42;;4842:101;;;;;;;;;;;;;;;;;;4899:2;:16;;;-1:-1:-1;;;;;4842:101:131;4917:2;:17;;;-1:-1:-1;;;;;4842:101:131;4936:3;:6;;;-1:-1:-1;;;;;4842:101:131;:11;:101::i;:::-;2650:2300;;;;;;;;;;;;;;2616:2334::o;2592:140:72:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;12324:51:134;;;-1:-1:-1;;;12391:18:134;;;12384:34;2196:43:65;;;;;;;;;12297:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;1862:748:131:-;1936:16;;;1950:1;1936:16;;;;;;;;;1904:29;;1936:16;;;;;;;;;-1:-1:-1;;2000:15:131;;;2013:1;2000:15;;;;;;;;;1904:48;;-1:-1:-1;1962:35:131;;2000:15;-1:-1:-1;2000:15:131;;;;;;;;;;;-1:-1:-1;;2073:59:131;;;;;;;;;;;-1:-1:-1;;;2073:59:131;;;;2143:50;;-1:-1:-1;;;2143:50:131;;-1:-1:-1;;;2143:50:131;;;13222:52:134;1962:53:131;;-1:-1:-1;2059:4:131;;-1:-1:-1;;;;;;;;;;;2143:15:131;;;13195:18:134;;2143:50:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2203:9:131;;:138;;-1:-1:-1;;;2203:138:131;;-1:-1:-1;;;;;2203:9:131;;;;-1:-1:-1;2203:32:131;;-1:-1:-1;2203:138:131;;2249:12;;2263:19;;2284:24;;2310:21;;2203:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2361:2:131;;2352:12;;-1:-1:-1;;;2352:12:131;;-1:-1:-1;;;;;2361:2:131;;;2352:12;;;6141:51:134;-1:-1:-1;;;;;;;;;;;2352:8:131;;;6114:18:134;;2352:12:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2374:9:131;;:138;;-1:-1:-1;;;2374:138:131;;-1:-1:-1;;;;;2374:9:131;;;;-1:-1:-1;2374:32:131;;-1:-1:-1;2374:138:131;;2420:12;;2434:19;;2455:24;;2481:21;;2374:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2534:9:131;;:33;;;-1:-1:-1;;;2534:33:131;;;;2523:80;;-1:-1:-1;;;;;2534:9:131;;:31;;:33;;;;;:9;;:33;;;;;;;:9;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2534:33:131;;;;;;;;;;;;:::i;:::-;:40;2578:1;2534:45;2523:80;;;;;;;;;;;;;-1:-1:-1;;;2523:80:131;;;:10;:80::i;:::-;1894:716;;;;1862:748::o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;25750:51:134;;;;25817:18;;;25810:30;25876:1;25856:18;;;25849:29;-1:-1:-1;;;25894:18:134;;;25887:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;25942:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;26184:51:134;;;;26251:18;;;26244:30;26310:1;26290:18;;;26283:29;-1:-1:-1;;;26328:18:134;;;26321:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;26376:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;26618:51:134;;;;26685:18;;;26678:30;26744:1;26724:18;;;26717:29;-1:-1:-1;;;26762:18:134;;;26755:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;26810:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;27052:51:134;27119:18;;;27112:30;27178:2;27158:18;;;27151:30;-1:-1:-1;;;27197:18:134;;;27190:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;27249:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;6141:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;6114:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;27491:51:134;;;;27558:18;;;27551:30;27617:2;27597:18;;;27590:30;-1:-1:-1;;;27636:18:134;;;27629:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;27686:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;27928:51:134;;;;27995:18;;;27988:30;28054:1;28034:18;;;28027:29;-1:-1:-1;;;28072:18:134;;;28065:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;28121:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;6141:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;6114:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;28363:51:134;;;;28430:18;;;28423:30;28489:1;28469:18;;;28462:29;-1:-1:-1;;;28507:18:134;;;28500:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;28553:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;28795:51:134;;;;28862:18;;;28855:30;28921:2;28901:18;;;28894:30;-1:-1:-1;;;28940:18:134;;;28933:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;28990:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;29232:51:134;;;;29299:18;;;29292:30;29358:2;29338:18;;;29331:30;-1:-1:-1;;;29377:18:134;;;29370:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;29432:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;6159:32:134;;;6141:51;;6129:2;6114:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;29674:51:134;;;;29741:18;;;29734:30;29800:2;29780:18;;;29773:30;-1:-1:-1;;;29819:18:134;;;29812:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;29874:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;6141:51:134;;;;2573:3:127;;;;:22;;6114:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;30191:15:134;;;30173:34;;30243:15;;;30238:2;30223:18;;30216:43;30295:15;;;30290:2;30275:18;;30268:43;30347:15;;;30342:2;30327:18;;30320:43;30122:3;30107:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;30586:51:134;;;;30653:18;;;30646:30;30712:2;30692:18;;;30685:30;-1:-1:-1;;;30731:18:134;;;30724:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;30784:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;31070:25:134;;;31131:2;31111:18;;;31104:30;31170:2;31150:18;;;31143:30;-1:-1:-1;;;31189:19:134;;;31182:42;31276:18;;;31269:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;31241:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;676:107:68:-;754:22;766:4;765:5;772:3;754:10;:22::i;30515:175:80:-;30597:86;30667:2;30671;30675;30679;30613:69;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;30613:69:80;;;;;;;;;;;;;;-1:-1:-1;;;;;30613:69:80;-1:-1:-1;;;30613:69:80;;;30597:15;:86::i;24604:93:70:-;-1:-1:-1;;;;;;;;;;;24659:7:70;24667:22;24685:4;24667:15;:22;:::i;:::-;24659:31;;;;;;;;;;;;;6858:25:134;;6846:2;6831:18;;6712:177;24659:31:70;;;;;;;;;;;;;;;;;;;;3262:157:65;3322:9;3317:96;;3352:30;;;;;31956:2:134;31938:21;;;31995:2;31975:18;;;31968:30;32034:25;32029:2;32014:18;;32007:53;32092:2;32077:18;;31754:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;181:376:80:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;2409:432:65:-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;32308:51:134;;;-1:-1:-1;;;32375:18:134;;;32368:34;;;;2712:4:65;32418:18:134;;;32411:34;2489:11:65;;1671:64;2586:43;;32281:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:461:134:-;67:3;105:5;99:12;132:6;127:3;120:19;158:4;187:2;182:3;178:12;171:19;;224:2;217:5;213:14;245:1;255:195;269:6;266:1;263:13;255:195;;;334:13;;-1:-1:-1;;;;;330:39:134;318:52;;390:12;;;;425:15;;;;366:1;284:9;255:195;;;-1:-1:-1;466:3:134;;14:461;-1:-1:-1;;;;;14:461:134:o;480:261::-;659:2;648:9;641:21;622:4;679:56;731:2;720:9;716:18;708:6;679:56;:::i;:::-;671:64;480:261;-1:-1:-1;;;480:261:134:o;746:250::-;831:1;841:113;855:6;852:1;849:13;841:113;;;931:11;;;925:18;912:11;;;905:39;877:2;870:10;841:113;;;-1:-1:-1;;988:1:134;970:16;;963:27;746:250::o;1001:271::-;1043:3;1081:5;1075:12;1108:6;1103:3;1096:19;1124:76;1193:6;1186:4;1181:3;1177:14;1170:4;1163:5;1159:16;1124:76;:::i;:::-;1254:2;1233:15;-1:-1:-1;;1229:29:134;1220:39;;;;1261:4;1216:50;;1001:271;-1:-1:-1;;1001:271:134:o;1277:1744::-;1512:2;1564:21;;;1634:13;;1537:18;;;1656:22;;;1483:4;;1512:2;1697;;1715:18;;;;1752:1;1795:15;;;1780:31;;1776:40;;1839:15;;;1483:4;;1903:1089;1919:6;1914:3;1911:15;1903:1089;;;-1:-1:-1;;1988:22:134;;;1984:36;1972:49;;2044:13;;2131:9;;-1:-1:-1;;;;;2127:35:134;2112:51;;2202:11;;2196:18;2234:15;;;2227:27;;;2315:19;;2084:15;;;2347:24;;;2528:21;;;;2394:2;2476:17;;;2464:30;;2460:39;;;2418:15;;;;2573:1;2587:296;2603:8;2598:3;2595:17;2587:296;;;2709:2;2705:7;2696:6;2688;2684:19;2680:33;2673:5;2666:48;2741:42;2776:6;2765:8;2759:15;2741:42;:::i;:::-;2812:17;;;;2731:52;-1:-1:-1;2855:14:134;;;;2631:1;2622:11;2587:296;;;-1:-1:-1;;;2970:12:134;;;;2906:6;-1:-1:-1;;2935:15:134;;;;1945:1;1936:11;1903:1089;;;-1:-1:-1;3009:6:134;;1277:1744;-1:-1:-1;;;;;;;;;;1277:1744:134:o;3026:1569::-;3230:4;3259:2;3299;3288:9;3284:18;3329:2;3318:9;3311:21;3352:6;3387;3381:13;3418:6;3410;3403:22;3444:2;3434:12;;3477:2;3466:9;3462:18;3455:25;;3539:2;3529:6;3526:1;3522:14;3511:9;3507:30;3503:39;3577:2;3569:6;3565:15;3598:1;3619;3629:937;3645:6;3640:3;3637:15;3629:937;;;3714:22;;;-1:-1:-1;;3710:36:134;3698:49;;3770:13;;3857:9;;-1:-1:-1;;;;;3853:35:134;3838:51;;3928:11;;3922:18;3960:15;;;3953:27;;;4041:19;;3810:15;;;4073:24;;;4163:21;;;;4208:1;;4131:2;4119:15;;;4222:236;4238:8;4233:3;4230:17;4222:236;;;4319:15;;-1:-1:-1;;;;;;4315:42:134;4301:57;;4427:17;;;;4266:1;4257:11;;;;;4384:14;;;;4222:236;;;-1:-1:-1;4544:12:134;;;;4481:5;-1:-1:-1;;;4509:15:134;;;;3671:1;3662:11;3629:937;;;-1:-1:-1;4583:6:134;;3026:1569;-1:-1:-1;;;;;;;;;3026:1569:134:o;4600:803::-;4762:4;4791:2;4831;4820:9;4816:18;4861:2;4850:9;4843:21;4884:6;4919;4913:13;4950:6;4942;4935:22;4988:2;4977:9;4973:18;4966:25;;5050:2;5040:6;5037:1;5033:14;5022:9;5018:30;5014:39;5000:53;;5088:2;5080:6;5076:15;5109:1;5119:255;5133:6;5130:1;5127:13;5119:255;;;5226:2;5222:7;5210:9;5202:6;5198:22;5194:36;5189:3;5182:49;5254:40;5287:6;5278;5272:13;5254:40;:::i;:::-;5244:50;-1:-1:-1;5352:12:134;;;;5317:15;;;;5155:1;5148:9;5119:255;;;-1:-1:-1;5391:6:134;;4600:803;-1:-1:-1;;;;;;;4600:803:134:o;5600:177::-;5679:13;;-1:-1:-1;;;;;5721:31:134;;5711:42;;5701:70;;5767:1;5764;5757:12;5782:208;5852:6;5905:2;5893:9;5884:7;5880:23;5876:32;5873:52;;;5921:1;5918;5911:12;5873:52;5944:40;5974:9;5944:40;:::i;6203:277::-;6270:6;6323:2;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;6371:9;6365:16;6424:5;6417:13;6410:21;6403:5;6400:32;6390:60;;6446:1;6443;6436:12;6485:222;6550:9;;;6571:10;;;6568:133;;;6623:10;6618:3;6614:20;6611:1;6604:31;6658:4;6655:1;6648:15;6686:4;6683:1;6676:15;6568:133;6485:222;;;;:::o;8087:755::-;8490:3;8479:9;8472:22;8453:4;8517:50;8562:3;8551:9;8547:19;7847:1;7835:14;;-1:-1:-1;;;7874:4:134;7865:14;;7858:32;7915:2;7906:12;;7770:154;8517:50;8615:9;8607:6;8603:22;8598:2;8587:9;8583:18;8576:50;8643:37;8673:6;8006:1;7994:14;;-1:-1:-1;;;8033:4:134;8024:14;;8017:31;8073:2;8064:12;;7929:153;8643:37;8711:2;8696:18;;8689:34;;;;-1:-1:-1;;8754:2:134;8739:18;;8732:34;;;;-1:-1:-1;;;;;8803:32:134;8797:3;8782:19;;;8775:61;8635:45;8087:755::o;10811:1145::-;11222:1;11218;11213:3;11209:11;11205:19;11197:6;11193:32;11182:9;11175:51;11156:4;11245:2;11283:3;11278:2;11267:9;11263:18;11256:31;11324:2;11318:3;11307:9;11303:19;11296:31;11364:26;11358:3;11347:9;11343:19;11336:55;11426:3;11415:9;11411:19;11466:6;11461:2;11450:9;11446:18;11439:34;11523:6;11516:14;11509:22;11504:2;11493:9;11489:18;11482:50;11569:3;11563;11552:9;11548:19;11541:32;11593:3;11625:6;11619:13;11653:6;11648:3;11641:19;11691:3;11680:9;11676:19;11669:26;;11730:2;11722:6;11718:15;11704:29;;11751:1;11761:169;11775:6;11772:1;11769:13;11761:169;;;11836:13;;11824:26;;11905:15;;;;11870:12;;;;11797:1;11790:9;11761:169;;;-1:-1:-1;11947:3:134;;10811:1145;-1:-1:-1;;;;;;;;;10811:1145:134:o;11961:184::-;12031:6;12084:2;12072:9;12063:7;12059:23;12055:32;12052:52;;;12100:1;12097;12090:12;12052:52;-1:-1:-1;12123:16:134;;11961:184;-1:-1:-1;11961:184:134:o;12429:380::-;12508:1;12504:12;;;;12551;;;12572:61;;12626:4;12618:6;12614:17;12604:27;;12572:61;12679:2;12671:6;12668:14;12648:18;12645:38;12642:161;;12725:10;12720:3;12716:20;12713:1;12706:31;12760:4;12757:1;12750:15;12788:4;12785:1;12778:15;12642:161;;12429:380;;;:::o;12814:127::-;12875:10;12870:3;12866:20;12863:1;12856:31;12906:4;12903:1;12896:15;12930:4;12927:1;12920:15;12946:127;13007:10;13002:3;12998:20;12995:1;12988:31;13038:4;13035:1;13028:15;13062:4;13059:1;13052:15;13285:1030;13614:3;13603:9;13596:22;13577:4;13641:57;13693:3;13682:9;13678:19;13670:6;13641:57;:::i;:::-;13755:22;;;13717:2;13735:18;;;13728:50;;;;13827:13;;13849:22;;;13925:15;;;;13887;;;13958:1;13968:182;13982:6;13979:1;13976:13;13968:182;;;14047:13;;14062:6;14043:26;14031:39;;14125:15;;;;14090:12;;;;14004:1;13997:9;13968:182;;;13972:3;;14198:6;14190;14186:19;14181:2;14170:9;14166:18;14159:47;14251:9;14246:3;14242:19;14237:2;14226:9;14222:18;14215:47;14279:30;14305:3;14297:6;14279:30;:::i;:::-;14271:38;13285:1030;-1:-1:-1;;;;;;;;;13285:1030:134:o;14320:253::-;14392:2;14386:9;14434:4;14422:17;;-1:-1:-1;;;;;14454:34:134;;14490:22;;;14451:62;14448:88;;;14516:18;;:::i;:::-;14552:2;14545:22;14320:253;:::o;14578:255::-;14650:2;14644:9;14692:6;14680:19;;-1:-1:-1;;;;;14714:34:134;;14750:22;;;14711:62;14708:88;;;14776:18;;:::i;14838:275::-;14909:2;14903:9;14974:2;14955:13;;-1:-1:-1;;14951:27:134;14939:40;;-1:-1:-1;;;;;14994:34:134;;15030:22;;;14991:62;14988:88;;;15056:18;;:::i;:::-;15092:2;15085:22;14838:275;;-1:-1:-1;14838:275:134:o;15118:164::-;15195:13;;15248:1;15237:20;;;15227:31;;15217:59;;15272:1;15269;15262:12;15287:175;15365:13;;-1:-1:-1;;;;;15407:30:134;;15397:41;;15387:69;;15452:1;15449;15442:12;15467:571;15535:5;15583:4;15571:9;15566:3;15562:19;15558:30;15555:50;;;15601:1;15598;15591:12;15555:50;15623:22;;:::i;:::-;15614:31;;15668:38;15696:9;15668:38;:::i;:::-;15661:5;15654:53;15739:47;15782:2;15771:9;15767:18;15739:47;:::i;:::-;15734:2;15727:5;15723:14;15716:71;15819:48;15863:2;15852:9;15848:18;15819:48;:::i;:::-;15814:2;15807:5;15803:14;15796:72;15900:48;15944:2;15933:9;15929:18;15900:48;:::i;:::-;15895:2;15888:5;15884:14;15877:72;15982:49;16026:3;16015:9;16011:19;15982:49;:::i;:::-;15976:3;15969:5;15965:15;15958:74;15467:571;;;;:::o;16043:256::-;16141:6;16194:3;16182:9;16173:7;16169:23;16165:33;16162:53;;;16211:1;16208;16201:12;16162:53;16234:59;16285:7;16274:9;16234:59;:::i;16304:163::-;16382:13;;16435:6;16424:18;;16414:29;;16404:57;;16457:1;16454;16447:12;16472:160;16549:13;;16602:4;16591:16;;16581:27;;16571:55;;16622:1;16619;16612:12;16637:167;16715:13;;16768:10;16757:22;;16747:33;;16737:61;;16794:1;16791;16784:12;16809:1062;16907:6;16960:3;16948:9;16939:7;16935:23;16931:33;16928:53;;;16977:1;16974;16967:12;16928:53;17003:22;;:::i;:::-;17048:39;17077:9;17048:39;:::i;:::-;17041:5;17034:54;17120:48;17164:2;17153:9;17149:18;17120:48;:::i;:::-;17115:2;17108:5;17104:14;17097:72;17201:48;17245:2;17234:9;17230:18;17201:48;:::i;:::-;17196:2;17189:5;17185:14;17178:72;17282:48;17326:2;17315:9;17311:18;17282:48;:::i;:::-;17277:2;17270:5;17266:14;17259:72;17364:48;17407:3;17396:9;17392:19;17364:48;:::i;:::-;17358:3;17351:5;17347:15;17340:73;17446:48;17489:3;17478:9;17474:19;17446:48;:::i;:::-;17440:3;17433:5;17429:15;17422:73;17528:49;17572:3;17561:9;17557:19;17528:49;:::i;:::-;17522:3;17515:5;17511:15;17504:74;17632:3;17621:9;17617:19;17611:26;17605:3;17598:5;17594:15;17587:51;17657:3;17713:2;17702:9;17698:18;17692:25;17687:2;17680:5;17676:14;17669:49;;17737:3;17772:68;17832:7;17827:2;17816:9;17812:18;17772:68;:::i;:::-;17756:14;;;17749:92;17760:5;16809:1062;-1:-1:-1;;;16809:1062:134:o;18185:675::-;18288:6;18341:3;18329:9;18320:7;18316:23;18312:33;18309:53;;;18358:1;18355;18348:12;18309:53;18391:2;18385:9;18433:3;18425:6;18421:16;18503:6;18491:10;18488:22;-1:-1:-1;;;;;18455:10:134;18452:34;18449:62;18446:88;;;18514:18;;:::i;:::-;18550:2;18543:22;18589:39;18618:9;18589:39;:::i;:::-;18581:6;18574:55;18662:48;18706:2;18695:9;18691:18;18662:48;:::i;:::-;18657:2;18649:6;18645:15;18638:73;18765:2;18754:9;18750:18;18744:25;18739:2;18731:6;18727:15;18720:50;18824:2;18813:9;18809:18;18803:25;18798:2;18790:6;18786:15;18779:50;18848:6;18838:16;;;18185:675;;;;:::o;18865:183::-;18925:4;-1:-1:-1;;;;;18950:6:134;18947:30;18944:56;;;18980:18;;:::i;:::-;-1:-1:-1;19025:1:134;19021:14;19037:4;19017:25;;18865:183::o;19053:881::-;19148:6;19179:2;19222;19210:9;19201:7;19197:23;19193:32;19190:52;;;19238:1;19235;19228:12;19190:52;19271:9;19265:16;-1:-1:-1;;;;;19296:6:134;19293:30;19290:50;;;19336:1;19333;19326:12;19290:50;19359:22;;19412:4;19404:13;;19400:27;-1:-1:-1;19390:55:134;;19441:1;19438;19431:12;19390:55;19470:2;19464:9;19493:60;19509:43;19549:2;19509:43;:::i;:::-;19493:60;:::i;:::-;19587:15;;;19669:1;19665:10;;;;19657:19;;19653:28;;;19618:12;;;;19693:19;;;19690:39;;;19725:1;19722;19715:12;19690:39;19749:11;;;;19769:135;19785:6;19780:3;19777:15;19769:135;;;19851:10;;19839:23;;19802:12;;;;19882;;;;19769:135;;;19923:5;19053:881;-1:-1:-1;;;;;;;19053:881:134:o;20218:384::-;-1:-1:-1;;;;;;20403:33:134;;20391:46;;20460:13;;20373:3;;20482:74;20460:13;20545:1;20536:11;;20529:4;20517:17;;20482:74;:::i;:::-;20576:16;;;;20594:1;20572:24;;20218:384;-1:-1:-1;;;20218:384:134:o;20607:287::-;20736:3;20774:6;20768:13;20790:66;20849:6;20844:3;20837:4;20829:6;20825:17;20790:66;:::i;:::-;20872:16;;;;;20607:287;-1:-1:-1;;20607:287:134:o;20899:683::-;20964:5;21017:3;21010:4;21002:6;20998:17;20994:27;20984:55;;21035:1;21032;21025:12;20984:55;21064:6;21058:13;21090:4;21114:60;21130:43;21170:2;21130:43;:::i;21114:60::-;21208:15;;;21294:1;21290:10;;;;21278:23;;21274:32;;;21239:12;;;;21318:15;;;21315:35;;;21346:1;21343;21336:12;21315:35;21382:2;21374:6;21370:15;21394:159;21410:6;21405:3;21402:15;21394:159;;;21476:34;21506:3;21476:34;:::i;:::-;21464:47;;21531:12;;;;21427;;21394:159;;;-1:-1:-1;21571:5:134;20899:683;-1:-1:-1;;;;;;20899:683:134:o;21587:681::-;21651:5;21704:3;21697:4;21689:6;21685:17;21681:27;21671:55;;21722:1;21719;21712:12;21671:55;21751:6;21745:13;21777:4;21801:60;21817:43;21857:2;21817:43;:::i;21801:60::-;21895:15;;;21981:1;21977:10;;;;21965:23;;21961:32;;;21926:12;;;;22005:15;;;22002:35;;;22033:1;22030;22023:12;22002:35;22069:2;22061:6;22057:15;22081:158;22097:6;22092:3;22089:15;22081:158;;;22163:33;22192:3;22163:33;:::i;:::-;22151:46;;22217:12;;;;22114;;22081:158;;22273:510;22327:5;22380:3;22373:4;22365:6;22361:17;22357:27;22347:55;;22398:1;22395;22388:12;22347:55;22427:6;22421:13;-1:-1:-1;;;;;22449:2:134;22446:26;22443:52;;;22475:18;;:::i;:::-;22519:55;22562:2;22543:13;;-1:-1:-1;;22539:27:134;22568:4;22535:38;22519:55;:::i;:::-;22599:2;22590:7;22583:19;22645:3;22638:4;22633:2;22625:6;22621:15;22617:26;22614:35;22611:55;;;22662:1;22659;22652:12;22611:55;22675:77;22749:2;22742:4;22733:7;22729:18;22722:4;22714:6;22710:17;22675:77;:::i;:::-;22770:7;22273:510;-1:-1:-1;;;;22273:510:134:o;22788:2294::-;22915:6;22946:2;22989;22977:9;22968:7;22964:23;22960:32;22957:52;;;23005:1;23002;22995:12;22957:52;23038:9;23032:16;-1:-1:-1;;;;;23108:2:134;23100:6;23097:14;23094:34;;;23124:1;23121;23114:12;23094:34;23162:6;23151:9;23147:22;23137:32;;23207:7;23200:4;23196:2;23192:13;23188:27;23178:55;;23229:1;23226;23219:12;23178:55;23258:2;23252:9;23281:60;23297:43;23337:2;23297:43;:::i;23281:60::-;23375:15;;;23457:1;23453:10;;;;23445:19;;23441:28;;;23406:12;;;;23481:19;;;23478:39;;;23513:1;23510;23503:12;23478:39;23545:2;23541;23537:11;23557:1495;23573:6;23568:3;23565:15;23557:1495;;;23652:3;23646:10;23688:2;23675:11;23672:19;23669:39;;;23704:1;23701;23694:12;23669:39;23731:20;;23803:4;23775:16;;;-1:-1:-1;;23771:30:134;23767:41;23764:131;;;23849:1;23878:2;23874;23867:14;23764:131;23921:22;;:::i;:::-;23986:2;23982;23978:11;23972:18;24019:2;24009:8;24006:16;24003:106;;;24063:1;24092:2;24088;24081:14;24003:106;24136:76;24204:7;24199:2;24188:8;24184:2;24180:17;24176:26;24136:76;:::i;:::-;24129:5;24122:91;;24236:2;24281;24277;24273:11;24267:18;24314:2;24304:8;24301:16;24298:106;;;24358:1;24387:2;24383;24376:14;24298:106;24440:75;24507:7;24502:2;24491:8;24487:2;24483:17;24479:26;24440:75;:::i;:::-;24435:2;24428:5;24424:14;24417:99;;24540:2;24585:3;24581:2;24577:12;24571:19;24619:2;24609:8;24606:16;24603:109;;;24664:1;24694:3;24689;24682:16;24603:109;24748:65;24805:7;24800:2;24789:8;24785:2;24781:17;24777:26;24748:65;:::i;:::-;24743:2;24736:5;24732:14;24725:89;;24838:3;24827:14;;24892:3;24888:2;24884:12;24878:19;24872:3;24865:5;24861:15;24854:44;;24935:43;24972:4;24968:2;24964:13;24935:43;:::i;:::-;24918:15;;;24911:68;24992:18;;-1:-1:-1;25030:12:134;;;;23590;;23557:1495;;;-1:-1:-1;25071:5:134;22788:2294;-1:-1:-1;;;;;;;;22788:2294:134:o;25087:446::-;25337:2;25326:9;25319:21;25376:1;25371:2;25360:9;25356:18;25349:29;-1:-1:-1;;;25409:2:134;25398:9;25394:18;25387:35;25460:3;25453:4;25442:9;25438:20;25431:33;25300:4;25481:46;25522:3;25511:9;25507:19;25499:6;25481:46;:::i;31314:435::-;31547:3;31536:9;31529:22;31510:4;31568:46;31609:3;31598:9;31594:19;31586:6;31568:46;:::i;:::-;31645:2;31630:18;;31623:34;;;;-1:-1:-1;31688:2:134;31673:18;;31666:34;;;;31731:2;31716:18;;;31709:34;31560:54;31314:435;-1:-1:-1;31314:435:134:o", "linkReferences": {} }, "methodIdentifiers": { @@ -615,7 +615,7 @@ "testNonMemberReputation()": "2571fac2", "testSocialBot()": "bc63aee5" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBotAltersLR\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMemebrshpInversePerformance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonMemberReputation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSocialBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SocialBot.t.sol\":\"TestSocialBotPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/SocialBot.t.sol\":{\"keccak256\":\"0x7189ada980948f99f5cdf59ea148c0af4f78e67784fdf79f6ee5717fde819861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34738462b05e41a684306d6717e3f16d42a8c194c3d43d1ba8800bebfe57bec3\",\"dweb:/ipfs/QmdAbRmhZGMAKKpTbwZeYhsUXMAWmvmihtFJbF3zsdJNYY\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBotAltersLR\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMemebrshpInversePerformance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonMemberReputation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSocialBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/SocialBot.t.sol\":\"TestSocialBotPlugin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/SocialBot.t.sol\":{\"keccak256\":\"0x7189ada980948f99f5cdf59ea148c0af4f78e67784fdf79f6ee5717fde819861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34738462b05e41a684306d6717e3f16d42a8c194c3d43d1ba8800bebfe57bec3\",\"dweb:/ipfs/QmdAbRmhZGMAKKpTbwZeYhsUXMAWmvmihtFJbF3zsdJNYY\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1276,6 +1276,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1340,6 +1348,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1453,10 +1469,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1993,10 +2009,10 @@ }, "ast": { "absolutePath": "test/SocialBot.t.sol", - "id": 73860, + "id": 74646, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "ILocalReputation": [ 1423 @@ -2005,13 +2021,13 @@ 2915 ], "SocialBotPlugin": [ - 7390 + 8141 ], "TestSocialBotPlugin": [ - 73859 + 74645 ], "console": [ - 32435 + 33186 ], "groupState": [ 1229 @@ -2024,12 +2040,12 @@ ] }, "nodeType": "SourceUnit", - "src": "31:5309:118", + "src": "31:5309:131", "nodes": [ { - "id": 73213, + "id": 73999, "nodeType": "PragmaDirective", - "src": "31:23:118", + "src": "31:23:131", "nodes": [], "literals": [ "solidity", @@ -2038,24 +2054,24 @@ ] }, { - "id": 73215, + "id": 74001, "nodeType": "ImportDirective", - "src": "56:48:118", + "src": "56:48:131", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 73860, - "sourceUnit": 70241, + "scope": 74646, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 73214, + "id": 74000, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "64:11:118", + "referencedDeclaration": 71026, + "src": "64:11:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2064,24 +2080,24 @@ "unitAlias": "" }, { - "id": 73217, + "id": 74003, "nodeType": "ImportDirective", - "src": "106:65:118", + "src": "106:65:131", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 73860, + "scope": 74646, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 73216, + "id": 74002, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "114:15:118", + "src": "114:15:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2090,37 +2106,37 @@ "unitAlias": "" }, { - "id": 73218, + "id": 74004, "nodeType": "ImportDirective", - "src": "172:43:118", + "src": "172:43:131", "nodes": [], "absolutePath": "contracts/ILocalReputation.sol", "file": "../contracts/ILocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 73860, + "scope": 74646, "sourceUnit": 1424, "symbolAliases": [], "unitAlias": "" }, { - "id": 73220, + "id": 74006, "nodeType": "ImportDirective", - "src": "216:86:118", + "src": "216:86:131", "nodes": [], "absolutePath": "contracts/plugins/interactions/SocialBotPlugin.sol", "file": "../contracts/plugins/interactions/SocialBotPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 73860, - "sourceUnit": 7391, + "scope": 74646, + "sourceUnit": 8142, "symbolAliases": [ { "foreign": { - "id": 73219, + "id": 74005, "name": "SocialBotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7390, - "src": "224:15:118", + "referencedDeclaration": 8141, + "src": "224:15:131", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2129,33 +2145,33 @@ "unitAlias": "" }, { - "id": 73221, + "id": 74007, "nodeType": "ImportDirective", - "src": "304:31:118", + "src": "304:31:131", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 73860, - "sourceUnit": 32436, + "scope": 74646, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 73859, + "id": 74645, "nodeType": "ContractDefinition", - "src": "337:5002:118", + "src": "337:5002:131", "nodes": [ { - "id": 73226, + "id": 74012, "nodeType": "VariableDeclaration", - "src": "387:28:118", + "src": "387:28:131", "nodes": [], "constant": false, "mutability": "mutable", "name": "LocalRepAlgo", - "nameLocation": "403:12:118", - "scope": 73859, + "nameLocation": "403:12:131", + "scope": 74645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2163,20 +2179,20 @@ "typeString": "contract LocalReputation" }, "typeName": { - "id": 73225, + "id": 74011, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73224, + "id": 74010, "name": "LocalReputation", "nameLocations": [ - "387:15:118" + "387:15:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "387:15:118" + "src": "387:15:131" }, "referencedDeclaration": 2915, - "src": "387:15:118", + "src": "387:15:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2185,53 +2201,53 @@ "visibility": "internal" }, { - "id": 73229, + "id": 74015, "nodeType": "VariableDeclaration", - "src": "421:25:118", + "src": "421:25:131", "nodes": [], "constant": false, "mutability": "mutable", "name": "BotPlugin", - "nameLocation": "437:9:118", - "scope": 73859, + "nameLocation": "437:9:131", + "scope": 74645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" }, "typeName": { - "id": 73228, + "id": 74014, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73227, + "id": 74013, "name": "SocialBotPlugin", "nameLocations": [ - "421:15:118" + "421:15:131" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "421:15:118" + "referencedDeclaration": 8141, + "src": "421:15:131" }, - "referencedDeclaration": 7390, - "src": "421:15:118", + "referencedDeclaration": 8141, + "src": "421:15:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, "visibility": "internal" }, { - "id": 73231, + "id": 74017, "nodeType": "VariableDeclaration", - "src": "453:20:118", + "src": "453:20:131", "nodes": [], "constant": false, "mutability": "mutable", "name": "taskPluginId", - "nameLocation": "461:12:118", - "scope": 73859, + "nameLocation": "461:12:131", + "scope": 74645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2239,10 +2255,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73230, + "id": 74016, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "453:7:118", + "src": "453:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2251,15 +2267,15 @@ "visibility": "internal" }, { - "id": 73233, + "id": 74019, "nodeType": "VariableDeclaration", - "src": "479:13:118", + "src": "479:13:131", "nodes": [], "constant": false, "mutability": "mutable", "name": "Admin", - "nameLocation": "487:5:118", - "scope": 73859, + "nameLocation": "487:5:131", + "scope": 74645, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2267,10 +2283,10 @@ "typeString": "address" }, "typeName": { - "id": 73232, + "id": 74018, "name": "address", "nodeType": "ElementaryTypeName", - "src": "479:7:118", + "src": "479:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2280,30 +2296,30 @@ "visibility": "internal" }, { - "id": 73470, + "id": 74256, "nodeType": "FunctionDefinition", - "src": "499:1357:118", + "src": "499:1357:131", "nodes": [], "body": { - "id": 73469, + "id": 74255, "nodeType": "Block", - "src": "532:1324:118", + "src": "532:1324:131", "nodes": [], "statements": [ { "assignments": [ - 73238 + 74024 ], "declarations": [ { "constant": false, - "id": 73238, + "id": 74024, "mutability": "mutable", "name": "time0", - "nameLocation": "550:5:118", + "nameLocation": "550:5:131", "nodeType": "VariableDeclaration", - "scope": 73469, - "src": "542:13:118", + "scope": 74255, + "src": "542:13:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2311,10 +2327,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73237, + "id": 74023, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "542:7:118", + "src": "542:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2323,40 +2339,40 @@ "visibility": "internal" } ], - "id": 73247, + "id": 74033, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73242, + "id": 74028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73239, + "id": 74025, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "558:5:118", + "src": "558:5:131", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73240, + "id": 74026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "564:9:118", + "memberLocation": "564:9:131", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "558:15:118", + "src": "558:15:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2366,21 +2382,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73241, + "id": 74027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "577:1:118", + "src": "577:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "558:20:118", + "src": "558:20:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2388,48 +2404,48 @@ }, "falseExpression": { "expression": { - "id": 73244, + "id": 74030, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "594:5:118", + "src": "594:5:131", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73245, + "id": 74031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "600:9:118", + "memberLocation": "600:9:131", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "594:15:118", + "src": "594:15:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73246, + "id": 74032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "558:51:118", + "src": "558:51:131", "trueExpression": { "hexValue": "31363939393939393939", - "id": 73243, + "id": 74029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "581:10:118", + "src": "581:10:131", "typeDescriptions": { "typeIdentifier": "t_rational_1699999999_by_1", "typeString": "int_const 1699999999" @@ -2442,7 +2458,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "542:67:118" + "src": "542:67:131" }, { "expression": { @@ -2452,18 +2468,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73253, + "id": 74039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73251, + "id": 74037, "name": "time0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73238, - "src": "627:5:118", + "referencedDeclaration": 74024, + "src": "627:5:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2473,21 +2489,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 73252, + "id": 74038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "635:1:118", + "src": "635:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "627:9:118", + "src": "627:9:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2502,33 +2518,33 @@ } ], "expression": { - "id": 73248, + "id": 74034, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "619:2:118", + "referencedDeclaration": 13541, + "src": "619:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73250, + "id": 74036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "622:4:118", + "memberLocation": "622:4:131", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "619:7:118", + "referencedDeclaration": 24657, + "src": "619:7:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73254, + "id": 74040, "isConstant": false, "isLValue": false, "isPure": false, @@ -2537,16 +2553,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "619:18:118", + "src": "619:18:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73255, + "id": 74041, "nodeType": "ExpressionStatement", - "src": "619:18:118" + "src": "619:18:131" }, { "expression": { @@ -2554,33 +2570,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73256, + "id": 74042, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "648:5:118", + "src": "648:5:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_TestSocialBotPlugin_$73859_$", + "typeIdentifier": "t_type$_t_super$_TestSocialBotPlugin_$74645_$", "typeString": "type(contract super TestSocialBotPlugin)" } }, - "id": 73258, + "id": 74044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "654:5:118", + "memberLocation": "654:5:131", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "648:11:118", + "referencedDeclaration": 70929, + "src": "648:11:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 73259, + "id": 74045, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,31 +2605,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "648:13:118", + "src": "648:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73260, + "id": 74046, "nodeType": "ExpressionStatement", - "src": "648:13:118" + "src": "648:13:131" }, { "expression": { - "id": 73266, + "id": 74052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73261, + "id": 74047, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73226, - "src": "672:12:118", + "referencedDeclaration": 74012, + "src": "672:12:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2625,39 +2641,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 73264, + "id": 74050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "687:19:118", + "src": "687:19:131", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LocalReputation_$2915_$", "typeString": "function () returns (contract LocalReputation)" }, "typeName": { - "id": 73263, + "id": 74049, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73262, + "id": 74048, "name": "LocalReputation", "nameLocations": [ - "691:15:118" + "691:15:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "691:15:118" + "src": "691:15:131" }, "referencedDeclaration": 2915, - "src": "691:15:118", + "src": "691:15:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } } }, - "id": 73265, + "id": 74051, "isConstant": false, "isLValue": false, "isPure": false, @@ -2666,22 +2682,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "687:21:118", + "src": "687:21:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "src": "672:36:118", + "src": "672:36:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 73267, + "id": 74053, "nodeType": "ExpressionStatement", - "src": "672:36:118" + "src": "672:36:131" }, { "expression": { @@ -2689,12 +2705,12 @@ { "arguments": [ { - "id": 73273, + "id": 74059, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73226, - "src": "735:12:118", + "referencedDeclaration": 74012, + "src": "735:12:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2708,26 +2724,26 @@ "typeString": "contract LocalReputation" } ], - "id": 73272, + "id": 74058, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "727:7:118", + "src": "727:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73271, + "id": 74057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "727:7:118", + "src": "727:7:131", "typeDescriptions": {} } }, - "id": 73274, + "id": 74060, "isConstant": false, "isLValue": false, "isPure": false, @@ -2736,7 +2752,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "727:21:118", + "src": "727:21:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2745,14 +2761,14 @@ }, { "hexValue": "4c6f63616c526570", - "id": 73275, + "id": 74061, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "750:10:118", + "src": "750:10:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_74a11e5e5ccd92d929e0c2fad99603e46f36685fdae0c11877d61c7e6dc67689", "typeString": "literal_string \"LocalRep\"" @@ -2772,33 +2788,33 @@ } ], "expression": { - "id": 73268, + "id": 74054, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "718:2:118", + "referencedDeclaration": 13541, + "src": "718:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73270, + "id": 74056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "721:5:118", + "memberLocation": "721:5:131", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "718:8:118", + "referencedDeclaration": 23909, + "src": "718:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 73276, + "id": 74062, "isConstant": false, "isLValue": false, "isPure": false, @@ -2807,16 +2823,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "718:43:118", + "src": "718:43:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73277, + "id": 74063, "nodeType": "ExpressionStatement", - "src": "718:43:118" + "src": "718:43:131" }, { "expression": { @@ -2826,33 +2842,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73281, + "id": 74067, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "781:3:118", + "referencedDeclaration": 70555, + "src": "781:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73282, + "id": 74068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "785:5:118", + "memberLocation": "785:5:131", "memberName": "owner", "nodeType": "MemberAccess", - "referencedDeclaration": 8822, - "src": "781:9:118", + "referencedDeclaration": 9573, + "src": "781:9:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 73283, + "id": 74069, "isConstant": false, "isLValue": false, "isPure": false, @@ -2861,7 +2877,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "781:11:118", + "src": "781:11:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2877,33 +2893,33 @@ } ], "expression": { - "id": 73278, + "id": 74064, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "772:2:118", + "referencedDeclaration": 13541, + "src": "772:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73280, + "id": 74066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "775:5:118", + "memberLocation": "775:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "772:8:118", + "referencedDeclaration": 24720, + "src": "772:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73284, + "id": 74070, "isConstant": false, "isLValue": false, "isPure": false, @@ -2912,16 +2928,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "772:21:118", + "src": "772:21:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73285, + "id": 74071, "nodeType": "ExpressionStatement", - "src": "772:21:118" + "src": "772:21:131" }, { "expression": { @@ -2929,12 +2945,12 @@ { "arguments": [ { - "id": 73291, + "id": 74077, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73226, - "src": "834:12:118", + "referencedDeclaration": 74012, + "src": "834:12:131", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2948,26 +2964,26 @@ "typeString": "contract LocalReputation" } ], - "id": 73290, + "id": 74076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "826:7:118", + "src": "826:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73289, + "id": 74075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "826:7:118", + "src": "826:7:131", "typeDescriptions": {} } }, - "id": 73292, + "id": 74078, "isConstant": false, "isLValue": false, "isPure": false, @@ -2976,7 +2992,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "826:21:118", + "src": "826:21:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2992,33 +3008,33 @@ } ], "expression": { - "id": 73286, + "id": 74072, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "803:3:118", + "referencedDeclaration": 70555, + "src": "803:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73288, + "id": 74074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "807:18:118", + "memberLocation": "807:18:131", "memberName": "setDefaulLRAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8816, - "src": "803:22:118", + "referencedDeclaration": 9567, + "src": "803:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73293, + "id": 74079, "isConstant": false, "isLValue": false, "isPure": false, @@ -3027,31 +3043,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "803:45:118", + "src": "803:45:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73294, + "id": 74080, "nodeType": "ExpressionStatement", - "src": "803:45:118" + "src": "803:45:131" }, { "expression": { - "id": 73301, + "id": 74087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73295, + "id": 74081, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "859:3:118", + "referencedDeclaration": 70567, + "src": "859:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -3066,33 +3082,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73297, + "id": 74083, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "882:3:118", + "referencedDeclaration": 70555, + "src": "882:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73298, + "id": 74084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "886:13:118", + "memberLocation": "886:13:131", "memberName": "defaultLRAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 8810, - "src": "882:17:118", + "referencedDeclaration": 9561, + "src": "882:17:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 73299, + "id": 74085, "isConstant": false, "isLValue": false, "isPure": false, @@ -3101,7 +3117,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "882:19:118", + "src": "882:19:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3116,18 +3132,18 @@ "typeString": "address" } ], - "id": 73296, + "id": 74082, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "865:16:118", + "src": "865:16:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 73300, + "id": 74086, "isConstant": false, "isLValue": false, "isPure": false, @@ -3136,22 +3152,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "865:37:118", + "src": "865:37:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "src": "859:43:118", + "src": "859:43:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73302, + "id": 74088, "nodeType": "ExpressionStatement", - "src": "859:43:118" + "src": "859:43:131" }, { "expression": { @@ -3159,12 +3175,12 @@ { "arguments": [ { - "id": 73308, + "id": 74094, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "929:3:118", + "referencedDeclaration": 70567, + "src": "929:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -3178,26 +3194,26 @@ "typeString": "contract ILocalReputation" } ], - "id": 73307, + "id": 74093, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "921:7:118", + "src": "921:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73306, + "id": 74092, "name": "address", "nodeType": "ElementaryTypeName", - "src": "921:7:118", + "src": "921:7:131", "typeDescriptions": {} } }, - "id": 73309, + "id": 74095, "isConstant": false, "isLValue": false, "isPure": false, @@ -3206,7 +3222,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "921:12:118", + "src": "921:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3215,14 +3231,14 @@ }, { "hexValue": "4c6f63616c52657075746174696f6e", - "id": 73310, + "id": 74096, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "935:17:118", + "src": "935:17:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_98f272edd236549249fc84a1d550d0c5afc01963fb5bd2d449ba3987ce342e91", "typeString": "literal_string \"LocalReputation\"" @@ -3242,33 +3258,33 @@ } ], "expression": { - "id": 73303, + "id": 74089, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "912:2:118", + "referencedDeclaration": 13541, + "src": "912:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73305, + "id": 74091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "915:5:118", + "memberLocation": "915:5:131", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "912:8:118", + "referencedDeclaration": 23909, + "src": "912:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 73311, + "id": 74097, "isConstant": false, "isLValue": false, "isPure": false, @@ -3277,27 +3293,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "912:41:118", + "src": "912:41:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73312, + "id": 74098, "nodeType": "ExpressionStatement", - "src": "912:41:118" + "src": "912:41:131" }, { "expression": { "arguments": [ { - "id": 73316, + "id": 74102, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "973:2:118", + "referencedDeclaration": 70589, + "src": "973:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3312,33 +3328,33 @@ } ], "expression": { - "id": 73313, + "id": 74099, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "964:2:118", + "referencedDeclaration": 13541, + "src": "964:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73315, + "id": 74101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "967:5:118", + "memberLocation": "967:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "964:8:118", + "referencedDeclaration": 24720, + "src": "964:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73317, + "id": 74103, "isConstant": false, "isLValue": false, "isPure": false, @@ -3347,30 +3363,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "964:12:118", + "src": "964:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73318, + "id": 74104, "nodeType": "ExpressionStatement", - "src": "964:12:118" + "src": "964:12:131" }, { "expression": { "arguments": [ { "hexValue": "61204e616d65", - "id": 73322, + "id": 74108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "995:8:118", + "src": "995:8:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ca13575eb32678433fa565f812cf3b015c147a8529ce2b45b72586d4563ad0cb", "typeString": "literal_string \"a Name\"" @@ -3379,14 +3395,14 @@ }, { "hexValue": "75726c6c6c", - "id": 73323, + "id": 74109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1005:7:118", + "src": "1005:7:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -3395,14 +3411,14 @@ }, { "hexValue": "31", - "id": 73324, + "id": 74110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1014:1:118", + "src": "1014:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3411,14 +3427,14 @@ }, { "hexValue": "34", - "id": 73325, + "id": 74111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1017:1:118", + "src": "1017:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -3428,14 +3444,14 @@ { "arguments": [ { - "id": 73328, + "id": 74114, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1028:4:118", + "referencedDeclaration": 70573, + "src": "1028:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3443,30 +3459,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73327, + "id": 74113, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1020:7:118", + "src": "1020:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73326, + "id": 74112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1020:7:118", + "src": "1020:7:131", "typeDescriptions": {} } }, - "id": 73329, + "id": 74115, "isConstant": false, "isLValue": false, "isPure": false, @@ -3475,7 +3491,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1020:13:118", + "src": "1020:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3507,33 +3523,33 @@ } ], "expression": { - "id": 73319, + "id": 74105, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "986:3:118", + "referencedDeclaration": 70549, + "src": "986:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 73321, + "id": 74107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "990:4:118", + "memberLocation": "990:4:131", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "986:8:118", + "src": "986:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 73330, + "id": 74116, "isConstant": false, "isLValue": false, "isPure": false, @@ -3542,27 +3558,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "986:48:118", + "src": "986:48:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73331, + "id": 74117, "nodeType": "ExpressionStatement", - "src": "986:48:118" + "src": "986:48:131" }, { "expression": { "arguments": [ { - "id": 73335, + "id": 74121, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "1054:2:118", + "referencedDeclaration": 70591, + "src": "1054:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3577,33 +3593,33 @@ } ], "expression": { - "id": 73332, + "id": 74118, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1045:2:118", + "referencedDeclaration": 13541, + "src": "1045:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73334, + "id": 74120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1048:5:118", + "memberLocation": "1048:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1045:8:118", + "referencedDeclaration": 24720, + "src": "1045:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73336, + "id": 74122, "isConstant": false, "isLValue": false, "isPure": false, @@ -3612,30 +3628,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1045:12:118", + "src": "1045:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73337, + "id": 74123, "nodeType": "ExpressionStatement", - "src": "1045:12:118" + "src": "1045:12:131" }, { "expression": { "arguments": [ { "hexValue": "61204e616d65", - "id": 73341, + "id": 74127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1076:8:118", + "src": "1076:8:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ca13575eb32678433fa565f812cf3b015c147a8529ce2b45b72586d4563ad0cb", "typeString": "literal_string \"a Name\"" @@ -3644,14 +3660,14 @@ }, { "hexValue": "75726c6c6c", - "id": 73342, + "id": 74128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1086:7:118", + "src": "1086:7:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -3660,14 +3676,14 @@ }, { "hexValue": "31", - "id": 73343, + "id": 74129, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1095:1:118", + "src": "1095:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3676,14 +3692,14 @@ }, { "hexValue": "36", - "id": 73344, + "id": 74130, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1098:1:118", + "src": "1098:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" @@ -3693,14 +3709,14 @@ { "arguments": [ { - "id": 73347, + "id": 74133, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1109:4:118", + "referencedDeclaration": 70573, + "src": "1109:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3708,30 +3724,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73346, + "id": 74132, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1101:7:118", + "src": "1101:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73345, + "id": 74131, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1101:7:118", + "src": "1101:7:131", "typeDescriptions": {} } }, - "id": 73348, + "id": 74134, "isConstant": false, "isLValue": false, "isPure": false, @@ -3740,7 +3756,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1101:13:118", + "src": "1101:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3772,33 +3788,33 @@ } ], "expression": { - "id": 73338, + "id": 74124, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1067:3:118", + "referencedDeclaration": 70549, + "src": "1067:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 73340, + "id": 74126, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1071:4:118", + "memberLocation": "1071:4:131", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1067:8:118", + "src": "1067:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 73349, + "id": 74135, "isConstant": false, "isLValue": false, "isPure": false, @@ -3807,27 +3823,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1067:48:118", + "src": "1067:48:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73350, + "id": 74136, "nodeType": "ExpressionStatement", - "src": "1067:48:118" + "src": "1067:48:131" }, { "expression": { "arguments": [ { - "id": 73354, + "id": 74140, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "1135:2:118", + "referencedDeclaration": 70593, + "src": "1135:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3842,33 +3858,33 @@ } ], "expression": { - "id": 73351, + "id": 74137, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1126:2:118", + "referencedDeclaration": 13541, + "src": "1126:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73353, + "id": 74139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1129:5:118", + "memberLocation": "1129:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1126:8:118", + "referencedDeclaration": 24720, + "src": "1126:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73355, + "id": 74141, "isConstant": false, "isLValue": false, "isPure": false, @@ -3877,30 +3893,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1126:12:118", + "src": "1126:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73356, + "id": 74142, "nodeType": "ExpressionStatement", - "src": "1126:12:118" + "src": "1126:12:131" }, { "expression": { "arguments": [ { "hexValue": "61204e616d65", - "id": 73360, + "id": 74146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1157:8:118", + "src": "1157:8:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ca13575eb32678433fa565f812cf3b015c147a8529ce2b45b72586d4563ad0cb", "typeString": "literal_string \"a Name\"" @@ -3909,14 +3925,14 @@ }, { "hexValue": "75726c6c6c", - "id": 73361, + "id": 74147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1167:7:118", + "src": "1167:7:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_66df7330539404f5749d24c7f6f3cdc1024e7044ce839d7a2bf32fd444c47b81", "typeString": "literal_string \"urlll\"" @@ -3925,14 +3941,14 @@ }, { "hexValue": "31", - "id": 73362, + "id": 74148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1176:1:118", + "src": "1176:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3941,14 +3957,14 @@ }, { "hexValue": "39", - "id": 73363, + "id": 74149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1179:1:118", + "src": "1179:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" @@ -3958,14 +3974,14 @@ { "arguments": [ { - "id": 73366, + "id": 74152, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1190:4:118", + "referencedDeclaration": 70573, + "src": "1190:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3973,30 +3989,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73365, + "id": 74151, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1182:7:118", + "src": "1182:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73364, + "id": 74150, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1182:7:118", + "src": "1182:7:131", "typeDescriptions": {} } }, - "id": 73367, + "id": 74153, "isConstant": false, "isLValue": false, "isPure": false, @@ -4005,7 +4021,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1182:13:118", + "src": "1182:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4037,33 +4053,33 @@ } ], "expression": { - "id": 73357, + "id": 74143, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69763, - "src": "1148:3:118", + "referencedDeclaration": 70549, + "src": "1148:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_IAutID_$1194", "typeString": "contract IAutID" } }, - "id": 73359, + "id": 74145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1152:4:118", + "memberLocation": "1152:4:131", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1079, - "src": "1148:8:118", + "src": "1148:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 73368, + "id": 74154, "isConstant": false, "isLValue": false, "isPure": false, @@ -4072,27 +4088,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1148:48:118", + "src": "1148:48:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73369, + "id": 74155, "nodeType": "ExpressionStatement", - "src": "1148:48:118" + "src": "1148:48:131" }, { "expression": { "arguments": [ { - "id": 73373, + "id": 74159, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1216:2:118", + "referencedDeclaration": 70587, + "src": "1216:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4107,33 +4123,33 @@ } ], "expression": { - "id": 73370, + "id": 74156, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1207:2:118", + "referencedDeclaration": 13541, + "src": "1207:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73372, + "id": 74158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1210:5:118", + "memberLocation": "1210:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1207:8:118", + "referencedDeclaration": 24720, + "src": "1207:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73374, + "id": 74160, "isConstant": false, "isLValue": false, "isPure": false, @@ -4142,33 +4158,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1207:12:118", + "src": "1207:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73375, + "id": 74161, "nodeType": "ExpressionStatement", - "src": "1207:12:118" + "src": "1207:12:131" }, { "expression": { - "id": 73385, + "id": 74171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73376, + "id": 74162, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "1229:9:118", + "referencedDeclaration": 74015, + "src": "1229:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, @@ -4179,14 +4195,14 @@ { "arguments": [ { - "id": 73382, + "id": 74168, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1269:4:118", + "referencedDeclaration": 70573, + "src": "1269:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -4194,30 +4210,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73381, + "id": 74167, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1261:7:118", + "src": "1261:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73380, + "id": 74166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1261:7:118", + "src": "1261:7:131", "typeDescriptions": {} } }, - "id": 73383, + "id": 74169, "isConstant": false, "isLValue": false, "isPure": false, @@ -4226,7 +4242,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1261:13:118", + "src": "1261:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4241,39 +4257,39 @@ "typeString": "address" } ], - "id": 73379, + "id": 74165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1241:19:118", + "src": "1241:19:131", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$7390_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$8141_$", "typeString": "function (address) returns (contract SocialBotPlugin)" }, "typeName": { - "id": 73378, + "id": 74164, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73377, + "id": 74163, "name": "SocialBotPlugin", "nameLocations": [ - "1245:15:118" + "1245:15:131" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "1245:15:118" + "referencedDeclaration": 8141, + "src": "1245:15:131" }, - "referencedDeclaration": 7390, - "src": "1245:15:118", + "referencedDeclaration": 8141, + "src": "1245:15:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } }, - "id": 73384, + "id": 74170, "isConstant": false, "isLValue": false, "isPure": false, @@ -4282,22 +4298,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1241:35:118", + "src": "1241:35:131", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "src": "1229:47:118", + "src": "1229:47:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73386, + "id": 74172, "nodeType": "ExpressionStatement", - "src": "1229:47:118" + "src": "1229:47:131" }, { "expression": { @@ -4305,14 +4321,14 @@ { "arguments": [ { - "id": 73392, + "id": 74178, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "1303:9:118", + "referencedDeclaration": 74015, + "src": "1303:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } @@ -4320,30 +4336,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } ], - "id": 73391, + "id": 74177, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1295:7:118", + "src": "1295:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73390, + "id": 74176, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1295:7:118", + "src": "1295:7:131", "typeDescriptions": {} } }, - "id": 73393, + "id": 74179, "isConstant": false, "isLValue": false, "isPure": false, @@ -4352,7 +4368,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1295:18:118", + "src": "1295:18:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4361,14 +4377,14 @@ }, { "hexValue": "496e746572616374696f6e506c7567696e", - "id": 73394, + "id": 74180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1315:19:118", + "src": "1315:19:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_dde92f28cc84bf7640d9fc65d67dc27e409507d89354a065fc314e10ecdc08c3", "typeString": "literal_string \"InteractionPlugin\"" @@ -4388,33 +4404,33 @@ } ], "expression": { - "id": 73387, + "id": 74173, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1286:2:118", + "referencedDeclaration": 13541, + "src": "1286:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73389, + "id": 74175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1289:5:118", + "memberLocation": "1289:5:131", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1286:8:118", + "referencedDeclaration": 23909, + "src": "1286:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 73395, + "id": 74181, "isConstant": false, "isLValue": false, "isPure": false, @@ -4423,31 +4439,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1286:49:118", + "src": "1286:49:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73396, + "id": 74182, "nodeType": "ExpressionStatement", - "src": "1286:49:118" + "src": "1286:49:131" }, { "assignments": [ - 73401 + 74187 ], "declarations": [ { "constant": false, - "id": 73401, + "id": 74187, "mutability": "mutable", "name": "depmodrek", - "nameLocation": "1363:9:118", + "nameLocation": "1363:9:131", "nodeType": "VariableDeclaration", - "scope": 73469, - "src": "1346:26:118", + "scope": 74255, + "src": "1346:26:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4456,18 +4472,18 @@ }, "typeName": { "baseType": { - "id": 73399, + "id": 74185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1346:7:118", + "src": "1346:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73400, + "id": 74186, "nodeType": "ArrayTypeName", - "src": "1346:9:118", + "src": "1346:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -4476,20 +4492,20 @@ "visibility": "internal" } ], - "id": 73402, + "id": 74188, "nodeType": "VariableDeclarationStatement", - "src": "1346:26:118" + "src": "1346:26:131" }, { "expression": { "arguments": [ { - "id": 73406, + "id": 74192, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1392:2:118", + "referencedDeclaration": 70587, + "src": "1392:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4504,33 +4520,33 @@ } ], "expression": { - "id": 73403, + "id": 74189, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1383:2:118", + "referencedDeclaration": 13541, + "src": "1383:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73405, + "id": 74191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1386:5:118", + "memberLocation": "1386:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1383:8:118", + "referencedDeclaration": 24720, + "src": "1383:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73407, + "id": 74193, "isConstant": false, "isLValue": false, "isPure": false, @@ -4539,31 +4555,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1383:12:118", + "src": "1383:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73408, + "id": 74194, "nodeType": "ExpressionStatement", - "src": "1383:12:118" + "src": "1383:12:131" }, { "assignments": [ - 73410 + 74196 ], "declarations": [ { "constant": false, - "id": 73410, + "id": 74196, "mutability": "mutable", "name": "pluginDefinitionID", - "nameLocation": "1413:18:118", + "nameLocation": "1413:18:131", "nodeType": "VariableDeclaration", - "scope": 73469, - "src": "1405:26:118", + "scope": 74255, + "src": "1405:26:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4571,10 +4587,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73409, + "id": 74195, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1405:7:118", + "src": "1405:7:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4583,18 +4599,18 @@ "visibility": "internal" } ], - "id": 73422, + "id": 74208, "initialValue": { "arguments": [ { "arguments": [ { - "id": 73415, + "id": 74201, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1478:2:118", + "referencedDeclaration": 70589, + "src": "1478:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4608,27 +4624,27 @@ "typeString": "address" } ], - "id": 73414, + "id": 74200, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1470:8:118", + "src": "1470:8:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 73413, + "id": 74199, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1470:8:118", + "src": "1470:8:131", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 73416, + "id": 74202, "isConstant": false, "isLValue": false, "isPure": false, @@ -4637,7 +4653,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1470:11:118", + "src": "1470:11:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4646,14 +4662,14 @@ }, { "hexValue": "6f776e65722063616e2073706f6f66206d65746164617461", - "id": 73417, + "id": 74203, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1483:26:118", + "src": "1483:26:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4c13ebec01b44a9ccdb306618e8038e6656dfd9a7b9226e7b71b62062b044365", "typeString": "literal_string \"owner can spoof metadata\"" @@ -4662,14 +4678,14 @@ }, { "hexValue": "30", - "id": 73418, + "id": 74204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1511:1:118", + "src": "1511:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4678,14 +4694,14 @@ }, { "hexValue": "74727565", - "id": 73419, + "id": 74205, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1514:4:118", + "src": "1514:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4693,12 +4709,12 @@ "value": "true" }, { - "id": 73420, + "id": 74206, "name": "depmodrek", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73401, - "src": "1520:9:118", + "referencedDeclaration": 74187, + "src": "1520:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4729,33 +4745,33 @@ } ], "expression": { - "id": 73411, + "id": 74197, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1446:3:118", + "referencedDeclaration": 70555, + "src": "1446:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73412, + "id": 74198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1450:19:118", + "memberLocation": "1450:19:131", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1446:23:118", + "referencedDeclaration": 9556, + "src": "1446:23:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 73421, + "id": 74207, "isConstant": false, "isLValue": false, "isPure": false, @@ -4764,7 +4780,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1446:84:118", + "src": "1446:84:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4772,18 +4788,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1405:125:118" + "src": "1405:125:131" }, { "expression": { "arguments": [ { - "id": 73426, + "id": 74212, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1550:2:118", + "referencedDeclaration": 70587, + "src": "1550:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4798,33 +4814,33 @@ } ], "expression": { - "id": 73423, + "id": 74209, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1541:2:118", + "referencedDeclaration": 13541, + "src": "1541:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73425, + "id": 74211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1544:5:118", + "memberLocation": "1544:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1541:8:118", + "referencedDeclaration": 24720, + "src": "1541:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73427, + "id": 74213, "isConstant": false, "isLValue": false, "isPure": false, @@ -4833,16 +4849,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1541:12:118", + "src": "1541:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73428, + "id": 74214, "nodeType": "ExpressionStatement", - "src": "1541:12:118" + "src": "1541:12:131" }, { "expression": { @@ -4850,14 +4866,14 @@ { "arguments": [ { - "id": 73434, + "id": 74220, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "1590:9:118", + "referencedDeclaration": 74015, + "src": "1590:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } @@ -4865,30 +4881,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } ], - "id": 73433, + "id": 74219, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1582:7:118", + "src": "1582:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73432, + "id": 74218, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1582:7:118", + "src": "1582:7:131", "typeDescriptions": {} } }, - "id": 73435, + "id": 74221, "isConstant": false, "isLValue": false, "isPure": false, @@ -4897,7 +4913,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1582:18:118", + "src": "1582:18:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4905,12 +4921,12 @@ } }, { - "id": 73436, + "id": 74222, "name": "pluginDefinitionID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73410, - "src": "1602:18:118", + "referencedDeclaration": 74196, + "src": "1602:18:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4929,33 +4945,33 @@ } ], "expression": { - "id": 73429, + "id": 74215, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1563:3:118", + "referencedDeclaration": 70555, + "src": "1563:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73431, + "id": 74217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1567:14:118", + "memberLocation": "1567:14:131", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "1563:18:118", + "referencedDeclaration": 9533, + "src": "1563:18:131", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 73437, + "id": 74223, "isConstant": false, "isLValue": false, "isPure": false, @@ -4964,31 +4980,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1563:58:118", + "src": "1563:58:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73438, + "id": 74224, "nodeType": "ExpressionStatement", - "src": "1563:58:118" + "src": "1563:58:131" }, { "expression": { - "id": 73447, + "id": 74233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73439, + "id": 74225, "name": "taskPluginId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73231, - "src": "1632:12:118", + "referencedDeclaration": 74017, + "src": "1632:12:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5001,14 +5017,14 @@ { "arguments": [ { - "id": 73444, + "id": 74230, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "1678:9:118", + "referencedDeclaration": 74015, + "src": "1678:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } @@ -5016,30 +5032,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } ], - "id": 73443, + "id": 74229, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1670:7:118", + "src": "1670:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73442, + "id": 74228, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1670:7:118", + "src": "1670:7:131", "typeDescriptions": {} } }, - "id": 73445, + "id": 74231, "isConstant": false, "isLValue": false, "isPure": false, @@ -5048,7 +5064,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1670:18:118", + "src": "1670:18:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5064,33 +5080,33 @@ } ], "expression": { - "id": 73440, + "id": 74226, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1647:3:118", + "referencedDeclaration": 70555, + "src": "1647:3:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 73441, + "id": 74227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1651:18:118", + "memberLocation": "1651:18:131", "memberName": "tokenIdFromAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 8789, - "src": "1647:22:118", + "referencedDeclaration": 9540, + "src": "1647:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 73446, + "id": 74232, "isConstant": false, "isLValue": false, "isPure": false, @@ -5099,37 +5115,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1647:42:118", + "src": "1647:42:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1632:57:118", + "src": "1632:57:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73448, + "id": 74234, "nodeType": "ExpressionStatement", - "src": "1632:57:118" + "src": "1632:57:131" }, { "expression": { - "id": 73451, + "id": 74237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73449, + "id": 74235, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73233, - "src": "1700:5:118", + "referencedDeclaration": 74019, + "src": "1700:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5138,26 +5154,26 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 73450, + "id": 74236, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1708:2:118", + "referencedDeclaration": 70587, + "src": "1708:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1700:10:118", + "src": "1700:10:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73452, + "id": 74238, "nodeType": "ExpressionStatement", - "src": "1700:10:118" + "src": "1700:10:131" }, { "expression": { @@ -5165,12 +5181,12 @@ { "arguments": [ { - "id": 73456, + "id": 74242, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73233, - "src": "1744:5:118", + "referencedDeclaration": 74019, + "src": "1744:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5185,33 +5201,33 @@ } ], "expression": { - "id": 73454, + "id": 74240, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1731:4:118", + "referencedDeclaration": 70573, + "src": "1731:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 73455, + "id": 74241, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1736:7:118", + "memberLocation": "1736:7:131", "memberName": "isAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 5585, - "src": "1731:12:118", + "referencedDeclaration": 6336, + "src": "1731:12:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) external returns (bool)" } }, - "id": 73457, + "id": 74243, "isConstant": false, "isLValue": false, "isPure": false, @@ -5220,7 +5236,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1731:19:118", + "src": "1731:19:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5229,14 +5245,14 @@ }, { "hexValue": "6578706563746564206465706c6f7965722061646d696e", - "id": 73458, + "id": 74244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1752:25:118", + "src": "1752:25:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fb9300d587932f561bfc732a8909fbd96688e967311865b90ccfeb075e3b849e", "typeString": "literal_string \"expected deployer admin\"" @@ -5255,21 +5271,21 @@ "typeString": "literal_string \"expected deployer admin\"" } ], - "id": 73453, + "id": 74239, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "1720:10:118", + "referencedDeclaration": 11481, + "src": "1720:10:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73459, + "id": 74245, "isConstant": false, "isLValue": false, "isPure": false, @@ -5278,16 +5294,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1720:58:118", + "src": "1720:58:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73460, + "id": 74246, "nodeType": "ExpressionStatement", - "src": "1720:58:118" + "src": "1720:58:131" }, { "expression": { @@ -5295,12 +5311,12 @@ { "arguments": [ { - "id": 73464, + "id": 74250, "name": "Admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73233, - "src": "1814:5:118", + "referencedDeclaration": 74019, + "src": "1814:5:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5315,33 +5331,33 @@ } ], "expression": { - "id": 73462, + "id": 74248, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1800:4:118", + "referencedDeclaration": 70573, + "src": "1800:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 73463, + "id": 74249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1805:8:118", + "memberLocation": "1805:8:131", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "1800:13:118", + "referencedDeclaration": 6323, + "src": "1800:13:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 73465, + "id": 74251, "isConstant": false, "isLValue": false, "isPure": false, @@ -5350,7 +5366,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1800:20:118", + "src": "1800:20:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5359,14 +5375,14 @@ }, { "hexValue": "6465706c6f7965722061646d696e206973206d656d626572", - "id": 73466, + "id": 74252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1822:26:118", + "src": "1822:26:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a52a5aafc1b59e7394a885abcbc8acb149c28a24ca9229e3f9bbcc10da4d6003", "typeString": "literal_string \"deployer admin is member\"" @@ -5385,21 +5401,21 @@ "typeString": "literal_string \"deployer admin is member\"" } ], - "id": 73461, + "id": 74247, "name": "assertFalse", "nodeType": "Identifier", "overloadedDeclarations": [ - 12914, - 12928 + 13665, + 13679 ], - "referencedDeclaration": 12928, - "src": "1788:11:118", + "referencedDeclaration": 13679, + "src": "1788:11:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73467, + "id": 74253, "isConstant": false, "isLValue": false, "isPure": false, @@ -5408,76 +5424,76 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1788:61:118", + "src": "1788:61:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73468, + "id": 74254, "nodeType": "ExpressionStatement", - "src": "1788:61:118" + "src": "1788:61:131" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "508:5:118", + "nameLocation": "508:5:131", "overrides": { - "id": 73235, + "id": 74021, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "523:8:118" + "src": "523:8:131" }, "parameters": { - "id": 73234, + "id": 74020, "nodeType": "ParameterList", "parameters": [], - "src": "513:2:118" + "src": "513:2:131" }, "returnParameters": { - "id": 73236, + "id": 74022, "nodeType": "ParameterList", "parameters": [], - "src": "532:0:118" + "src": "532:0:131" }, - "scope": 73859, + "scope": 74645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 73546, + "id": 74332, "nodeType": "FunctionDefinition", - "src": "1862:748:118", + "src": "1862:748:131", "nodes": [], "body": { - "id": 73545, + "id": 74331, "nodeType": "Block", - "src": "1894:716:118", + "src": "1894:716:131", "nodes": [], "statements": [ { "assignments": [ - 73477 + 74263 ], "declarations": [ { "constant": false, - "id": 73477, + "id": 74263, "mutability": "mutable", "name": "participants", - "nameLocation": "1921:12:118", + "nameLocation": "1921:12:131", "nodeType": "VariableDeclaration", - "scope": 73545, - "src": "1904:29:118", + "scope": 74331, + "src": "1904:29:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5486,18 +5502,18 @@ }, "typeName": { "baseType": { - "id": 73475, + "id": 74261, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1904:7:118", + "src": "1904:7:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73476, + "id": 74262, "nodeType": "ArrayTypeName", - "src": "1904:9:118", + "src": "1904:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5506,19 +5522,19 @@ "visibility": "internal" } ], - "id": 73483, + "id": 74269, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 73481, + "id": 74267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1950:1:118", + "src": "1950:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -5533,39 +5549,39 @@ "typeString": "int_const 1" } ], - "id": 73480, + "id": 74266, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1936:13:118", + "src": "1936:13:131", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 73478, + "id": 74264, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1940:7:118", + "src": "1940:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73479, + "id": 74265, "nodeType": "ArrayTypeName", - "src": "1940:9:118", + "src": "1940:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 73482, + "id": 74268, "isConstant": false, "isLValue": false, "isPure": true, @@ -5574,7 +5590,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1936:16:118", + "src": "1936:16:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -5582,22 +5598,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1904:48:118" + "src": "1904:48:131" }, { "assignments": [ - 73488 + 74274 ], "declarations": [ { "constant": false, - "id": 73488, + "id": 74274, "mutability": "mutable", "name": "participationPoints", - "nameLocation": "1978:19:118", + "nameLocation": "1978:19:131", "nodeType": "VariableDeclaration", - "scope": 73545, - "src": "1962:35:118", + "scope": 74331, + "src": "1962:35:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5606,18 +5622,18 @@ }, "typeName": { "baseType": { - "id": 73486, + "id": 74272, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "1962:6:118", + "src": "1962:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73487, + "id": 74273, "nodeType": "ArrayTypeName", - "src": "1962:8:118", + "src": "1962:8:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" @@ -5626,19 +5642,19 @@ "visibility": "internal" } ], - "id": 73494, + "id": 74280, "initialValue": { "arguments": [ { "hexValue": "31", - "id": 73492, + "id": 74278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2013:1:118", + "src": "2013:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -5653,38 +5669,38 @@ "typeString": "int_const 1" } ], - "id": 73491, + "id": 74277, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2000:12:118", + "src": "2000:12:131", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint16[] memory)" }, "typeName": { "baseType": { - "id": 73489, + "id": 74275, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2004:6:118", + "src": "2004:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73490, + "id": 74276, "nodeType": "ArrayTypeName", - "src": "2004:8:118", + "src": "2004:8:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" } } }, - "id": 73493, + "id": 74279, "isConstant": false, "isLValue": false, "isPure": true, @@ -5693,7 +5709,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2000:15:118", + "src": "2000:15:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", @@ -5701,22 +5717,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "1962:53:118" + "src": "1962:53:131" }, { "assignments": [ - 73496 + 74282 ], "declarations": [ { "constant": false, - "id": 73496, + "id": 74282, "mutability": "mutable", "name": "maxPossiblePointsPerUser", - "nameLocation": "2032:24:118", + "nameLocation": "2032:24:131", "nodeType": "VariableDeclaration", - "scope": 73545, - "src": "2025:31:118", + "scope": 74331, + "src": "2025:31:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5724,10 +5740,10 @@ "typeString": "uint16" }, "typeName": { - "id": 73495, + "id": 74281, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2025:6:118", + "src": "2025:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -5736,17 +5752,17 @@ "visibility": "internal" } ], - "id": 73498, + "id": 74284, "initialValue": { "hexValue": "31303030", - "id": 73497, + "id": 74283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2059:4:118", + "src": "2059:4:131", "typeDescriptions": { "typeIdentifier": "t_rational_1000_by_1", "typeString": "int_const 1000" @@ -5754,22 +5770,22 @@ "value": "1000" }, "nodeType": "VariableDeclarationStatement", - "src": "2025:38:118" + "src": "2025:38:131" }, { "assignments": [ - 73500 + 74286 ], "declarations": [ { "constant": false, - "id": 73500, + "id": 74286, "mutability": "mutable", "name": "categoryOrDescription", - "nameLocation": "2087:21:118", + "nameLocation": "2087:21:131", "nodeType": "VariableDeclaration", - "scope": 73545, - "src": "2073:35:118", + "scope": 74331, + "src": "2073:35:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5777,10 +5793,10 @@ "typeString": "string" }, "typeName": { - "id": 73499, + "id": 74285, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2073:6:118", + "src": "2073:6:131", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5789,17 +5805,17 @@ "visibility": "internal" } ], - "id": 73502, + "id": 74288, "initialValue": { "hexValue": "436f6d6d756e697479204d656574696e672037", - "id": 73501, + "id": 74287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2111:21:118", + "src": "2111:21:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9cf877c6b0781006528a0d5a95adf85a5401a3a4e7c5095e8715089b44136681", "typeString": "literal_string \"Community Meeting 7\"" @@ -5807,7 +5823,7 @@ "value": "Community Meeting 7" }, "nodeType": "VariableDeclarationStatement", - "src": "2073:59:118" + "src": "2073:59:131" }, { "expression": { @@ -5815,41 +5831,41 @@ { "expression": { "expression": { - "id": 73506, + "id": 74292, "name": "SocialBotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7390, - "src": "2159:15:118", + "referencedDeclaration": 8141, + "src": "2159:15:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SocialBotPlugin_$7390_$", + "typeIdentifier": "t_type$_t_contract$_SocialBotPlugin_$8141_$", "typeString": "type(contract SocialBotPlugin)" } }, - "id": 73507, + "id": 74293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2175:8:118", + "memberLocation": "2175:8:131", "memberName": "NotAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 7200, - "src": "2159:24:118", + "referencedDeclaration": 7951, + "src": "2159:24:131", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 73508, + "id": 74294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2184:8:118", + "memberLocation": "2184:8:131", "memberName": "selector", "nodeType": "MemberAccess", - "src": "2159:33:118", + "src": "2159:33:131", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -5864,33 +5880,33 @@ } ], "expression": { - "id": 73503, + "id": 74289, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2143:2:118", + "referencedDeclaration": 13541, + "src": "2143:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73505, + "id": 74291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2146:12:118", + "memberLocation": "2146:12:131", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "2143:15:118", + "referencedDeclaration": 24781, + "src": "2143:15:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 73509, + "id": 74295, "isConstant": false, "isLValue": false, "isPure": false, @@ -5899,63 +5915,63 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2143:50:118", + "src": "2143:50:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73510, + "id": 74296, "nodeType": "ExpressionStatement", - "src": "2143:50:118" + "src": "2143:50:131" }, { "expression": { "arguments": [ { - "id": 73514, + "id": 74300, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73477, - "src": "2249:12:118", + "referencedDeclaration": 74263, + "src": "2249:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 73515, + "id": 74301, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73488, - "src": "2263:19:118", + "referencedDeclaration": 74274, + "src": "2263:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, { - "id": 73516, + "id": 74302, "name": "maxPossiblePointsPerUser", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73496, - "src": "2284:24:118", + "referencedDeclaration": 74282, + "src": "2284:24:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { - "id": 73517, + "id": 74303, "name": "categoryOrDescription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73500, - "src": "2310:21:118", + "referencedDeclaration": 74286, + "src": "2310:21:131", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -5982,33 +5998,33 @@ } ], "expression": { - "id": 73511, + "id": 74297, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "2203:9:118", + "referencedDeclaration": 74015, + "src": "2203:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73513, + "id": 74299, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2213:22:118", + "memberLocation": "2213:22:131", "memberName": "applyEventConsequences", "nodeType": "MemberAccess", - "referencedDeclaration": 7379, - "src": "2203:32:118", + "referencedDeclaration": 8130, + "src": "2203:32:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_uint16_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address[] memory,uint16[] memory,uint16,string memory) external returns (uint256)" } }, - "id": 73518, + "id": 74304, "isConstant": false, "isLValue": false, "isPure": false, @@ -6017,27 +6033,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2203:138:118", + "src": "2203:138:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73519, + "id": 74305, "nodeType": "ExpressionStatement", - "src": "2203:138:118" + "src": "2203:138:131" }, { "expression": { "arguments": [ { - "id": 73523, + "id": 74309, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2361:2:118", + "referencedDeclaration": 70587, + "src": "2361:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6052,33 +6068,33 @@ } ], "expression": { - "id": 73520, + "id": 74306, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2352:2:118", + "referencedDeclaration": 13541, + "src": "2352:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73522, + "id": 74308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2355:5:118", + "memberLocation": "2355:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2352:8:118", + "referencedDeclaration": 24720, + "src": "2352:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73524, + "id": 74310, "isConstant": false, "isLValue": false, "isPure": false, @@ -6087,63 +6103,63 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2352:12:118", + "src": "2352:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73525, + "id": 74311, "nodeType": "ExpressionStatement", - "src": "2352:12:118" + "src": "2352:12:131" }, { "expression": { "arguments": [ { - "id": 73529, + "id": 74315, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73477, - "src": "2420:12:118", + "referencedDeclaration": 74263, + "src": "2420:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 73530, + "id": 74316, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73488, - "src": "2434:19:118", + "referencedDeclaration": 74274, + "src": "2434:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, { - "id": 73531, + "id": 74317, "name": "maxPossiblePointsPerUser", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73496, - "src": "2455:24:118", + "referencedDeclaration": 74282, + "src": "2455:24:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { - "id": 73532, + "id": 74318, "name": "categoryOrDescription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73500, - "src": "2481:21:118", + "referencedDeclaration": 74286, + "src": "2481:21:131", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -6170,33 +6186,33 @@ } ], "expression": { - "id": 73526, + "id": 74312, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "2374:9:118", + "referencedDeclaration": 74015, + "src": "2374:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73528, + "id": 74314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2384:22:118", + "memberLocation": "2384:22:131", "memberName": "applyEventConsequences", "nodeType": "MemberAccess", - "referencedDeclaration": 7379, - "src": "2374:32:118", + "referencedDeclaration": 8130, + "src": "2374:32:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_uint16_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address[] memory,uint16[] memory,uint16,string memory) external returns (uint256)" } }, - "id": 73533, + "id": 74319, "isConstant": false, "isLValue": false, "isPure": false, @@ -6205,16 +6221,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2374:138:118", + "src": "2374:138:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73534, + "id": 74320, "nodeType": "ExpressionStatement", - "src": "2374:138:118" + "src": "2374:138:131" }, { "expression": { @@ -6224,7 +6240,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73541, + "id": 74327, "isConstant": false, "isLValue": false, "isPure": false, @@ -6235,33 +6251,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73536, + "id": 74322, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "2534:9:118", + "referencedDeclaration": 74015, + "src": "2534:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73537, + "id": 74323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2544:21:118", + "memberLocation": "2544:21:131", "memberName": "getAllBotInteractions", "nodeType": "MemberAccess", - "referencedDeclaration": 7389, - "src": "2534:31:118", + "referencedDeclaration": 8140, + "src": "2534:31:131", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_struct$_SocialBotEvent_$7186_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_struct$_SocialBotEvent_$7937_memory_ptr_$dyn_memory_ptr_$", "typeString": "function () view external returns (struct SocialBotPlugin.SocialBotEvent memory[] memory)" } }, - "id": 73538, + "id": 74324, "isConstant": false, "isLValue": false, "isPure": false, @@ -6270,22 +6286,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2534:33:118", + "src": "2534:33:131", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_SocialBotEvent_$7186_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_SocialBotEvent_$7937_memory_ptr_$dyn_memory_ptr", "typeString": "struct SocialBotPlugin.SocialBotEvent memory[] memory" } }, - "id": 73539, + "id": 74325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2568:6:118", + "memberLocation": "2568:6:131", "memberName": "length", "nodeType": "MemberAccess", - "src": "2534:40:118", + "src": "2534:40:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6295,21 +6311,21 @@ "operator": "==", "rightExpression": { "hexValue": "31", - "id": 73540, + "id": 74326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2578:1:118", + "src": "2578:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2534:45:118", + "src": "2534:45:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6317,14 +6333,14 @@ }, { "hexValue": "6e6f74206f6e6520696e746572616374696f6e", - "id": 73542, + "id": 74328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2581:21:118", + "src": "2581:21:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7b4e72582e22800d500588d8ca7d6d59ec11f16a56e3935834c5de9b1baea9be", "typeString": "literal_string \"not one interaction\"" @@ -6343,21 +6359,21 @@ "typeString": "literal_string \"not one interaction\"" } ], - "id": 73535, + "id": 74321, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2523:10:118", + "referencedDeclaration": 11481, + "src": "2523:10:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73543, + "id": 74329, "isConstant": false, "isLValue": false, "isPure": false, @@ -6366,16 +6382,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2523:80:118", + "src": "2523:80:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73544, + "id": 74330, "nodeType": "ExpressionStatement", - "src": "2523:80:118" + "src": "2523:80:131" } ] }, @@ -6384,49 +6400,49 @@ "kind": "function", "modifiers": [], "name": "testSocialBot", - "nameLocation": "1871:13:118", + "nameLocation": "1871:13:131", "parameters": { - "id": 73471, + "id": 74257, "nodeType": "ParameterList", "parameters": [], - "src": "1884:2:118" + "src": "1884:2:131" }, "returnParameters": { - "id": 73472, + "id": 74258, "nodeType": "ParameterList", "parameters": [], - "src": "1894:0:118" + "src": "1894:0:131" }, - "scope": 73859, + "scope": 74645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 73832, + "id": 74618, "nodeType": "FunctionDefinition", - "src": "2616:2334:118", + "src": "2616:2334:131", "nodes": [], "body": { - "id": 73831, + "id": 74617, "nodeType": "Block", - "src": "2650:2300:118", + "src": "2650:2300:131", "nodes": [], "statements": [ { "assignments": [ - 73553 + 74339 ], "declarations": [ { "constant": false, - "id": 73553, + "id": 74339, "mutability": "mutable", "name": "participants", - "nameLocation": "2677:12:118", + "nameLocation": "2677:12:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "2660:29:118", + "scope": 74617, + "src": "2660:29:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6435,18 +6451,18 @@ }, "typeName": { "baseType": { - "id": 73551, + "id": 74337, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2660:7:118", + "src": "2660:7:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73552, + "id": 74338, "nodeType": "ArrayTypeName", - "src": "2660:9:118", + "src": "2660:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -6455,19 +6471,19 @@ "visibility": "internal" } ], - "id": 73559, + "id": 74345, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 73557, + "id": 74343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2706:1:118", + "src": "2706:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -6482,39 +6498,39 @@ "typeString": "int_const 2" } ], - "id": 73556, + "id": 74342, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2692:13:118", + "src": "2692:13:131", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 73554, + "id": 74340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2696:7:118", + "src": "2696:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73555, + "id": 74341, "nodeType": "ArrayTypeName", - "src": "2696:9:118", + "src": "2696:9:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 73558, + "id": 74344, "isConstant": false, "isLValue": false, "isPure": true, @@ -6523,7 +6539,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2692:16:118", + "src": "2692:16:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -6531,22 +6547,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2660:48:118" + "src": "2660:48:131" }, { "assignments": [ - 73564 + 74350 ], "declarations": [ { "constant": false, - "id": 73564, + "id": 74350, "mutability": "mutable", "name": "participationPoints", - "nameLocation": "2734:19:118", + "nameLocation": "2734:19:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "2718:35:118", + "scope": 74617, + "src": "2718:35:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6555,18 +6571,18 @@ }, "typeName": { "baseType": { - "id": 73562, + "id": 74348, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2718:6:118", + "src": "2718:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73563, + "id": 74349, "nodeType": "ArrayTypeName", - "src": "2718:8:118", + "src": "2718:8:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" @@ -6575,19 +6591,19 @@ "visibility": "internal" } ], - "id": 73570, + "id": 74356, "initialValue": { "arguments": [ { "hexValue": "32", - "id": 73568, + "id": 74354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2769:1:118", + "src": "2769:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -6602,38 +6618,38 @@ "typeString": "int_const 2" } ], - "id": 73567, + "id": 74353, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2756:12:118", + "src": "2756:12:131", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint16_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint16[] memory)" }, "typeName": { "baseType": { - "id": 73565, + "id": 74351, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2760:6:118", + "src": "2760:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73566, + "id": 74352, "nodeType": "ArrayTypeName", - "src": "2760:8:118", + "src": "2760:8:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr", "typeString": "uint16[]" } } }, - "id": 73569, + "id": 74355, "isConstant": false, "isLValue": false, "isPure": true, @@ -6642,7 +6658,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2756:15:118", + "src": "2756:15:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", @@ -6650,22 +6666,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2718:53:118" + "src": "2718:53:131" }, { "assignments": [ - 73572 + 74358 ], "declarations": [ { "constant": false, - "id": 73572, + "id": 74358, "mutability": "mutable", "name": "maxPossiblePointsPerUser", - "nameLocation": "2788:24:118", + "nameLocation": "2788:24:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "2781:31:118", + "scope": 74617, + "src": "2781:31:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6673,10 +6689,10 @@ "typeString": "uint16" }, "typeName": { - "id": 73571, + "id": 74357, "name": "uint16", "nodeType": "ElementaryTypeName", - "src": "2781:6:118", + "src": "2781:6:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -6685,17 +6701,17 @@ "visibility": "internal" } ], - "id": 73574, + "id": 74360, "initialValue": { "hexValue": "363430", - "id": 73573, + "id": 74359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2815:3:118", + "src": "2815:3:131", "typeDescriptions": { "typeIdentifier": "t_rational_640_by_1", "typeString": "int_const 640" @@ -6703,22 +6719,22 @@ "value": "640" }, "nodeType": "VariableDeclarationStatement", - "src": "2781:37:118" + "src": "2781:37:131" }, { "assignments": [ - 73576 + 74362 ], "declarations": [ { "constant": false, - "id": 73576, + "id": 74362, "mutability": "mutable", "name": "categoryOrDescription", - "nameLocation": "2842:21:118", + "nameLocation": "2842:21:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "2828:35:118", + "scope": 74617, + "src": "2828:35:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6726,10 +6742,10 @@ "typeString": "string" }, "typeName": { - "id": 73575, + "id": 74361, "name": "string", "nodeType": "ElementaryTypeName", - "src": "2828:6:118", + "src": "2828:6:131", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -6738,17 +6754,17 @@ "visibility": "internal" } ], - "id": 73578, + "id": 74364, "initialValue": { "hexValue": "436f6d6d756e697479204d656574696e672037", - "id": 73577, + "id": 74363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2866:21:118", + "src": "2866:21:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9cf877c6b0781006528a0d5a95adf85a5401a3a4e7c5095e8715089b44136681", "typeString": "literal_string \"Community Meeting 7\"" @@ -6756,22 +6772,22 @@ "value": "Community Meeting 7" }, "nodeType": "VariableDeclarationStatement", - "src": "2828:59:118" + "src": "2828:59:131" }, { "assignments": [ - 73580 + 74366 ], "declarations": [ { "constant": false, - "id": 73580, + "id": 74366, "mutability": "mutable", "name": "novaAddr", - "nameLocation": "2905:8:118", + "nameLocation": "2905:8:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "2897:16:118", + "scope": 74617, + "src": "2897:16:131", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6779,10 +6795,10 @@ "typeString": "address" }, "typeName": { - "id": 73579, + "id": 74365, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2897:7:118", + "src": "2897:7:131", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6792,18 +6808,18 @@ "visibility": "internal" } ], - "id": 73585, + "id": 74371, "initialValue": { "arguments": [ { - "id": 73583, + "id": 74369, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "2924:4:118", + "referencedDeclaration": 70573, + "src": "2924:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -6811,30 +6827,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 73582, + "id": 74368, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2916:7:118", + "src": "2916:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73581, + "id": 74367, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2916:7:118", + "src": "2916:7:131", "typeDescriptions": {} } }, - "id": 73584, + "id": 74370, "isConstant": false, "isLValue": false, "isPure": false, @@ -6843,7 +6859,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2916:13:118", + "src": "2916:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6851,39 +6867,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2897:32:118" + "src": "2897:32:131" }, { "expression": { - "id": 73590, + "id": 74376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 73586, + "id": 74372, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73553, - "src": "2940:12:118", + "referencedDeclaration": 74339, + "src": "2940:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 73588, + "id": 74374, "indexExpression": { "hexValue": "30", - "id": 73587, + "id": 74373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2953:1:118", + "src": "2953:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6895,7 +6911,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2940:15:118", + "src": "2940:15:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6904,58 +6920,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 73589, + "id": 74375, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "2958:2:118", + "referencedDeclaration": 70591, + "src": "2958:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2940:20:118", + "src": "2940:20:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73591, + "id": 74377, "nodeType": "ExpressionStatement", - "src": "2940:20:118" + "src": "2940:20:131" }, { "expression": { - "id": 73596, + "id": 74382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 73592, + "id": 74378, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73553, - "src": "2970:12:118", + "referencedDeclaration": 74339, + "src": "2970:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 73594, + "id": 74380, "indexExpression": { "hexValue": "31", - "id": 73593, + "id": 74379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2983:1:118", + "src": "2983:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6967,7 +6983,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2970:15:118", + "src": "2970:15:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6976,58 +6992,58 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 73595, + "id": 74381, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "2988:2:118", + "referencedDeclaration": 70593, + "src": "2988:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2970:20:118", + "src": "2970:20:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 73597, + "id": 74383, "nodeType": "ExpressionStatement", - "src": "2970:20:118" + "src": "2970:20:131" }, { "expression": { - "id": 73602, + "id": 74388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 73598, + "id": 74384, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73564, - "src": "3000:19:118", + "referencedDeclaration": 74350, + "src": "3000:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 73600, + "id": 74386, "indexExpression": { "hexValue": "30", - "id": 73599, + "id": 74385, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3020:1:118", + "src": "3020:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7039,7 +7055,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3000:22:118", + "src": "3000:22:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -7049,61 +7065,61 @@ "operator": "=", "rightHandSide": { "hexValue": "3830", - "id": 73601, + "id": 74387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3025:2:118", + "src": "3025:2:131", "typeDescriptions": { "typeIdentifier": "t_rational_80_by_1", "typeString": "int_const 80" }, "value": "80" }, - "src": "3000:27:118", + "src": "3000:27:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73603, + "id": 74389, "nodeType": "ExpressionStatement", - "src": "3000:27:118" + "src": "3000:27:131" }, { "expression": { - "id": 73608, + "id": 74394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 73604, + "id": 74390, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73564, - "src": "3037:19:118", + "referencedDeclaration": 74350, + "src": "3037:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, - "id": 73606, + "id": 74392, "indexExpression": { "hexValue": "31", - "id": 73605, + "id": 74391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3057:1:118", + "src": "3057:1:131", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7115,7 +7131,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3037:22:118", + "src": "3037:22:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" @@ -7125,29 +7141,29 @@ "operator": "=", "rightHandSide": { "hexValue": "323430", - "id": 73607, + "id": 74393, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3062:3:118", + "src": "3062:3:131", "typeDescriptions": { "typeIdentifier": "t_rational_240_by_1", "typeString": "int_const 240" }, "value": "240" }, - "src": "3037:28:118", + "src": "3037:28:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, - "id": 73609, + "id": 74395, "nodeType": "ExpressionStatement", - "src": "3037:28:118" + "src": "3037:28:131" }, { "expression": { @@ -7155,12 +7171,12 @@ { "arguments": [ { - "id": 73613, + "id": 74399, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "3101:2:118", + "referencedDeclaration": 70591, + "src": "3101:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7175,33 +7191,33 @@ } ], "expression": { - "id": 73611, + "id": 74397, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3087:4:118", + "referencedDeclaration": 70573, + "src": "3087:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 73612, + "id": 74398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3092:8:118", + "memberLocation": "3092:8:131", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "3087:13:118", + "referencedDeclaration": 6323, + "src": "3087:13:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 73614, + "id": 74400, "isConstant": false, "isLValue": false, "isPure": false, @@ -7210,7 +7226,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3087:17:118", + "src": "3087:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7219,14 +7235,14 @@ }, { "hexValue": "4132206e6f74206d656d626572", - "id": 73615, + "id": 74401, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3106:15:118", + "src": "3106:15:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_acfd8628d31a1b3e5a3830e8f2e8a5b2f406eddf6d122ba8be6f17d12ceb265e", "typeString": "literal_string \"A2 not member\"" @@ -7245,21 +7261,21 @@ "typeString": "literal_string \"A2 not member\"" } ], - "id": 73610, + "id": 74396, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3076:10:118", + "referencedDeclaration": 11481, + "src": "3076:10:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73616, + "id": 74402, "isConstant": false, "isLValue": false, "isPure": false, @@ -7268,16 +7284,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3076:46:118", + "src": "3076:46:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73617, + "id": 74403, "nodeType": "ExpressionStatement", - "src": "3076:46:118" + "src": "3076:46:131" }, { "expression": { @@ -7285,12 +7301,12 @@ { "arguments": [ { - "id": 73621, + "id": 74407, "name": "A3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69807, - "src": "3157:2:118", + "referencedDeclaration": 70593, + "src": "3157:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7305,33 +7321,33 @@ } ], "expression": { - "id": 73619, + "id": 74405, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "3143:4:118", + "referencedDeclaration": 70573, + "src": "3143:4:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 73620, + "id": 74406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3148:8:118", + "memberLocation": "3148:8:131", "memberName": "isMember", "nodeType": "MemberAccess", - "referencedDeclaration": 5572, - "src": "3143:13:118", + "referencedDeclaration": 6323, + "src": "3143:13:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 73622, + "id": 74408, "isConstant": false, "isLValue": false, "isPure": false, @@ -7340,7 +7356,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3143:17:118", + "src": "3143:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7349,14 +7365,14 @@ }, { "hexValue": "4133206e6f74206d656d626572", - "id": 73623, + "id": 74409, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3162:15:118", + "src": "3162:15:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ec6647156816728fac075d52a4cf08702db84e5e2fff7585685a6cc1d5e05c84", "typeString": "literal_string \"A3 not member\"" @@ -7375,21 +7391,21 @@ "typeString": "literal_string \"A3 not member\"" } ], - "id": 73618, + "id": 74404, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "3132:10:118", + "referencedDeclaration": 11481, + "src": "3132:10:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 73624, + "id": 74410, "isConstant": false, "isLValue": false, "isPure": false, @@ -7398,16 +7414,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3132:46:118", + "src": "3132:46:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73625, + "id": 74411, "nodeType": "ExpressionStatement", - "src": "3132:46:118" + "src": "3132:46:131" }, { "expression": { @@ -7415,41 +7431,41 @@ { "expression": { "expression": { - "id": 73629, + "id": 74415, "name": "SocialBotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7390, - "src": "3205:15:118", + "referencedDeclaration": 8141, + "src": "3205:15:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SocialBotPlugin_$7390_$", + "typeIdentifier": "t_type$_t_contract$_SocialBotPlugin_$8141_$", "typeString": "type(contract SocialBotPlugin)" } }, - "id": 73630, + "id": 74416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3221:8:118", + "memberLocation": "3221:8:131", "memberName": "NotAdmin", "nodeType": "MemberAccess", - "referencedDeclaration": 7200, - "src": "3205:24:118", + "referencedDeclaration": 7951, + "src": "3205:24:131", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 73631, + "id": 74417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3230:8:118", + "memberLocation": "3230:8:131", "memberName": "selector", "nodeType": "MemberAccess", - "src": "3205:33:118", + "src": "3205:33:131", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -7464,33 +7480,33 @@ } ], "expression": { - "id": 73626, + "id": 74412, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3189:2:118", + "referencedDeclaration": 13541, + "src": "3189:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73628, + "id": 74414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3192:12:118", + "memberLocation": "3192:12:131", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24030, - "src": "3189:15:118", + "referencedDeclaration": 24781, + "src": "3189:15:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", "typeString": "function (bytes4) external" } }, - "id": 73632, + "id": 74418, "isConstant": false, "isLValue": false, "isPure": false, @@ -7499,63 +7515,63 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3189:50:118", + "src": "3189:50:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73633, + "id": 74419, "nodeType": "ExpressionStatement", - "src": "3189:50:118" + "src": "3189:50:131" }, { "expression": { "arguments": [ { - "id": 73637, + "id": 74423, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73553, - "src": "3295:12:118", + "referencedDeclaration": 74339, + "src": "3295:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 73638, + "id": 74424, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73564, - "src": "3309:19:118", + "referencedDeclaration": 74350, + "src": "3309:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, { - "id": 73639, + "id": 74425, "name": "maxPossiblePointsPerUser", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73572, - "src": "3330:24:118", + "referencedDeclaration": 74358, + "src": "3330:24:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { - "id": 73640, + "id": 74426, "name": "categoryOrDescription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73576, - "src": "3356:21:118", + "referencedDeclaration": 74362, + "src": "3356:21:131", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -7582,33 +7598,33 @@ } ], "expression": { - "id": 73634, + "id": 74420, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "3249:9:118", + "referencedDeclaration": 74015, + "src": "3249:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73636, + "id": 74422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3259:22:118", + "memberLocation": "3259:22:131", "memberName": "applyEventConsequences", "nodeType": "MemberAccess", - "referencedDeclaration": 7379, - "src": "3249:32:118", + "referencedDeclaration": 8130, + "src": "3249:32:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_uint16_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address[] memory,uint16[] memory,uint16,string memory) external returns (uint256)" } }, - "id": 73641, + "id": 74427, "isConstant": false, "isLValue": false, "isPure": false, @@ -7617,31 +7633,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3249:138:118", + "src": "3249:138:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73642, + "id": 74428, "nodeType": "ExpressionStatement", - "src": "3249:138:118" + "src": "3249:138:131" }, { "assignments": [ - 73645 + 74431 ], "declarations": [ { "constant": false, - "id": 73645, + "id": 74431, "mutability": "mutable", "name": "P0", - "nameLocation": "3416:2:118", + "nameLocation": "3416:2:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "3398:20:118", + "scope": 74617, + "src": "3398:20:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7649,20 +7665,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 73644, + "id": 74430, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73643, + "id": 74429, "name": "periodData", "nameLocations": [ - "3398:10:118" + "3398:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "3398:10:118" + "src": "3398:10:131" }, "referencedDeclaration": 1207, - "src": "3398:10:118", + "src": "3398:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -7671,18 +7687,18 @@ "visibility": "internal" } ], - "id": 73653, + "id": 74439, "initialValue": { "arguments": [ { "arguments": [ { - "id": 73650, + "id": 74436, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "3457:8:118", + "referencedDeclaration": 74366, + "src": "3457:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7696,26 +7712,26 @@ "typeString": "address" } ], - "id": 73649, + "id": 74435, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3449:7:118", + "src": "3449:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73648, + "id": 74434, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3449:7:118", + "src": "3449:7:131", "typeDescriptions": {} } }, - "id": 73651, + "id": 74437, "isConstant": false, "isLValue": false, "isPure": false, @@ -7724,7 +7740,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3449:17:118", + "src": "3449:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7740,33 +7756,33 @@ } ], "expression": { - "id": 73646, + "id": 74432, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3421:3:118", + "referencedDeclaration": 70567, + "src": "3421:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73647, + "id": 74433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3425:23:118", + "memberLocation": "3425:23:131", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "3421:27:118", + "src": "3421:27:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 73652, + "id": 74438, "isConstant": false, "isLValue": false, "isPure": false, @@ -7775,7 +7791,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3421:46:118", + "src": "3421:46:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -7783,22 +7799,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3398:69:118" + "src": "3398:69:131" }, { "assignments": [ - 73656 + 74442 ], "declarations": [ { "constant": false, - "id": 73656, + "id": 74442, "mutability": "mutable", "name": "GS0", - "nameLocation": "3495:3:118", + "nameLocation": "3495:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "3477:21:118", + "scope": 74617, + "src": "3477:21:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7806,20 +7822,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 73655, + "id": 74441, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73654, + "id": 74440, "name": "groupState", "nameLocations": [ - "3477:10:118" + "3477:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "3477:10:118" + "src": "3477:10:131" }, "referencedDeclaration": 1229, - "src": "3477:10:118", + "src": "3477:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -7828,16 +7844,16 @@ "visibility": "internal" } ], - "id": 73661, + "id": 74447, "initialValue": { "arguments": [ { - "id": 73659, + "id": 74445, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "3519:8:118", + "referencedDeclaration": 74366, + "src": "3519:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7852,33 +7868,33 @@ } ], "expression": { - "id": 73657, + "id": 74443, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3501:3:118", + "referencedDeclaration": 70567, + "src": "3501:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73658, + "id": 74444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3505:13:118", + "memberLocation": "3505:13:131", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "3501:17:118", + "src": "3501:17:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 73660, + "id": 74446, "isConstant": false, "isLValue": false, "isPure": false, @@ -7887,7 +7903,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3501:27:118", + "src": "3501:27:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -7895,22 +7911,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3477:51:118" + "src": "3477:51:131" }, { "assignments": [ - 73664 + 74450 ], "declarations": [ { "constant": false, - "id": 73664, + "id": 74450, "mutability": "mutable", "name": "IS0", - "nameLocation": "3561:3:118", + "nameLocation": "3561:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "3538:26:118", + "scope": 74617, + "src": "3538:26:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -7918,20 +7934,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 73663, + "id": 74449, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73662, + "id": 74448, "name": "individualState", "nameLocations": [ - "3538:15:118" + "3538:15:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "3538:15:118" + "src": "3538:15:131" }, "referencedDeclaration": 1238, - "src": "3538:15:118", + "src": "3538:15:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -7940,28 +7956,28 @@ "visibility": "internal" } ], - "id": 73670, + "id": 74456, "initialValue": { "arguments": [ { - "id": 73667, + "id": 74453, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "3590:2:118", + "referencedDeclaration": 70589, + "src": "3590:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 73668, + "id": 74454, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "3594:8:118", + "referencedDeclaration": 74366, + "src": "3594:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7980,33 +7996,33 @@ } ], "expression": { - "id": 73665, + "id": 74451, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3567:3:118", + "referencedDeclaration": 70567, + "src": "3567:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73666, + "id": 74452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3571:18:118", + "memberLocation": "3571:18:131", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "3567:22:118", + "src": "3567:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 73669, + "id": 74455, "isConstant": false, "isLValue": false, "isPure": false, @@ -8015,7 +8031,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3567:36:118", + "src": "3567:36:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -8023,21 +8039,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3538:65:118" + "src": "3538:65:131" }, { "expression": { "arguments": [ { "hexValue": "41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320", - "id": 73674, + "id": 74460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3626:43:118", + "src": "3626:43:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4e8054a38919cc24b7974a6447c077d0a09e6990e682534a2e6a938366d33153", "typeString": "literal_string \"Average rep. | Average perf. | A1 givenC \"" @@ -8046,27 +8062,27 @@ }, { "expression": { - "id": 73675, + "id": 74461, "name": "P0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73645, - "src": "3671:2:118", + "referencedDeclaration": 74431, + "src": "3671:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73676, + "id": 74462, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3674:13:118", + "memberLocation": "3674:13:131", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "3671:16:118", + "src": "3671:16:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8074,27 +8090,27 @@ }, { "expression": { - "id": 73677, + "id": 74463, "name": "P0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73645, - "src": "3689:2:118", + "referencedDeclaration": 74431, + "src": "3689:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73678, + "id": 74464, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3692:14:118", + "memberLocation": "3692:14:131", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "3689:17:118", + "src": "3689:17:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8102,27 +8118,27 @@ }, { "expression": { - "id": 73679, + "id": 74465, "name": "IS0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73664, - "src": "3708:3:118", + "referencedDeclaration": 74450, + "src": "3708:3:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 73680, + "id": 74466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "3712:2:118", + "memberLocation": "3712:2:131", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "3708:6:118", + "src": "3708:6:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8149,33 +8165,33 @@ } ], "expression": { - "id": 73671, + "id": 74457, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "3614:7:118", + "referencedDeclaration": 33186, + "src": "3614:7:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 73673, + "id": 74459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3622:3:118", + "memberLocation": "3622:3:131", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 28041, - "src": "3614:11:118", + "referencedDeclaration": 28792, + "src": "3614:11:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (string memory,uint256,uint256,uint256) view" } }, - "id": 73681, + "id": 74467, "isConstant": false, "isLValue": false, "isPure": false, @@ -8184,27 +8200,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3614:101:118", + "src": "3614:101:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73682, + "id": 74468, "nodeType": "ExpressionStatement", - "src": "3614:101:118" + "src": "3614:101:131" }, { "expression": { "arguments": [ { - "id": 73686, + "id": 74472, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "3735:2:118", + "referencedDeclaration": 70587, + "src": "3735:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8219,33 +8235,33 @@ } ], "expression": { - "id": 73683, + "id": 74469, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "3726:2:118", + "referencedDeclaration": 13541, + "src": "3726:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73685, + "id": 74471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3729:5:118", + "memberLocation": "3729:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "3726:8:118", + "referencedDeclaration": 24720, + "src": "3726:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73687, + "id": 74473, "isConstant": false, "isLValue": false, "isPure": false, @@ -8254,63 +8270,63 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3726:12:118", + "src": "3726:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73688, + "id": 74474, "nodeType": "ExpressionStatement", - "src": "3726:12:118" + "src": "3726:12:131" }, { "expression": { "arguments": [ { - "id": 73692, + "id": 74478, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73553, - "src": "3794:12:118", + "referencedDeclaration": 74339, + "src": "3794:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 73693, + "id": 74479, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73564, - "src": "3808:19:118", + "referencedDeclaration": 74350, + "src": "3808:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, { - "id": 73694, + "id": 74480, "name": "maxPossiblePointsPerUser", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73572, - "src": "3829:24:118", + "referencedDeclaration": 74358, + "src": "3829:24:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { - "id": 73695, + "id": 74481, "name": "categoryOrDescription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73576, - "src": "3855:21:118", + "referencedDeclaration": 74362, + "src": "3855:21:131", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -8337,33 +8353,33 @@ } ], "expression": { - "id": 73689, + "id": 74475, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "3748:9:118", + "referencedDeclaration": 74015, + "src": "3748:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73691, + "id": 74477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3758:22:118", + "memberLocation": "3758:22:131", "memberName": "applyEventConsequences", "nodeType": "MemberAccess", - "referencedDeclaration": 7379, - "src": "3748:32:118", + "referencedDeclaration": 8130, + "src": "3748:32:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_uint16_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address[] memory,uint16[] memory,uint16,string memory) external returns (uint256)" } }, - "id": 73696, + "id": 74482, "isConstant": false, "isLValue": false, "isPure": false, @@ -8372,31 +8388,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3748:138:118", + "src": "3748:138:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73697, + "id": 74483, "nodeType": "ExpressionStatement", - "src": "3748:138:118" + "src": "3748:138:131" }, { "assignments": [ - 73700 + 74486 ], "declarations": [ { "constant": false, - "id": 73700, + "id": 74486, "mutability": "mutable", "name": "P1", - "nameLocation": "3915:2:118", + "nameLocation": "3915:2:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "3897:20:118", + "scope": 74617, + "src": "3897:20:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8404,20 +8420,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 73699, + "id": 74485, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73698, + "id": 74484, "name": "periodData", "nameLocations": [ - "3897:10:118" + "3897:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "3897:10:118" + "src": "3897:10:131" }, "referencedDeclaration": 1207, - "src": "3897:10:118", + "src": "3897:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -8426,18 +8442,18 @@ "visibility": "internal" } ], - "id": 73708, + "id": 74494, "initialValue": { "arguments": [ { "arguments": [ { - "id": 73705, + "id": 74491, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "3956:8:118", + "referencedDeclaration": 74366, + "src": "3956:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8451,26 +8467,26 @@ "typeString": "address" } ], - "id": 73704, + "id": 74490, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3948:7:118", + "src": "3948:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73703, + "id": 74489, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3948:7:118", + "src": "3948:7:131", "typeDescriptions": {} } }, - "id": 73706, + "id": 74492, "isConstant": false, "isLValue": false, "isPure": false, @@ -8479,7 +8495,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3948:17:118", + "src": "3948:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8495,33 +8511,33 @@ } ], "expression": { - "id": 73701, + "id": 74487, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "3920:3:118", + "referencedDeclaration": 70567, + "src": "3920:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73702, + "id": 74488, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3924:23:118", + "memberLocation": "3924:23:131", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "3920:27:118", + "src": "3920:27:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 73707, + "id": 74493, "isConstant": false, "isLValue": false, "isPure": false, @@ -8530,7 +8546,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3920:46:118", + "src": "3920:46:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -8538,22 +8554,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3897:69:118" + "src": "3897:69:131" }, { "assignments": [ - 73711 + 74497 ], "declarations": [ { "constant": false, - "id": 73711, + "id": 74497, "mutability": "mutable", "name": "GS1", - "nameLocation": "3994:3:118", + "nameLocation": "3994:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "3976:21:118", + "scope": 74617, + "src": "3976:21:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8561,20 +8577,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 73710, + "id": 74496, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73709, + "id": 74495, "name": "groupState", "nameLocations": [ - "3976:10:118" + "3976:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "3976:10:118" + "src": "3976:10:131" }, "referencedDeclaration": 1229, - "src": "3976:10:118", + "src": "3976:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -8583,16 +8599,16 @@ "visibility": "internal" } ], - "id": 73716, + "id": 74502, "initialValue": { "arguments": [ { - "id": 73714, + "id": 74500, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4018:8:118", + "referencedDeclaration": 74366, + "src": "4018:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8607,33 +8623,33 @@ } ], "expression": { - "id": 73712, + "id": 74498, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4000:3:118", + "referencedDeclaration": 70567, + "src": "4000:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73713, + "id": 74499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4004:13:118", + "memberLocation": "4004:13:131", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "4000:17:118", + "src": "4000:17:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 73715, + "id": 74501, "isConstant": false, "isLValue": false, "isPure": false, @@ -8642,7 +8658,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4000:27:118", + "src": "4000:27:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -8650,22 +8666,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3976:51:118" + "src": "3976:51:131" }, { "assignments": [ - 73719 + 74505 ], "declarations": [ { "constant": false, - "id": 73719, + "id": 74505, "mutability": "mutable", "name": "IS1", - "nameLocation": "4060:3:118", + "nameLocation": "4060:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "4037:26:118", + "scope": 74617, + "src": "4037:26:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8673,20 +8689,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 73718, + "id": 74504, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73717, + "id": 74503, "name": "individualState", "nameLocations": [ - "4037:15:118" + "4037:15:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "4037:15:118" + "src": "4037:15:131" }, "referencedDeclaration": 1238, - "src": "4037:15:118", + "src": "4037:15:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -8695,28 +8711,28 @@ "visibility": "internal" } ], - "id": 73725, + "id": 74511, "initialValue": { "arguments": [ { - "id": 73722, + "id": 74508, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "4089:2:118", + "referencedDeclaration": 70589, + "src": "4089:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 73723, + "id": 74509, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4093:8:118", + "referencedDeclaration": 74366, + "src": "4093:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8735,33 +8751,33 @@ } ], "expression": { - "id": 73720, + "id": 74506, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4066:3:118", + "referencedDeclaration": 70567, + "src": "4066:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73721, + "id": 74507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4070:18:118", + "memberLocation": "4070:18:131", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4066:22:118", + "src": "4066:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 73724, + "id": 74510, "isConstant": false, "isLValue": false, "isPure": false, @@ -8770,7 +8786,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4066:36:118", + "src": "4066:36:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -8778,21 +8794,21 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4037:65:118" + "src": "4037:65:131" }, { "expression": { "arguments": [ { "hexValue": "41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320", - "id": 73729, + "id": 74515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4125:43:118", + "src": "4125:43:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4e8054a38919cc24b7974a6447c077d0a09e6990e682534a2e6a938366d33153", "typeString": "literal_string \"Average rep. | Average perf. | A1 givenC \"" @@ -8801,27 +8817,27 @@ }, { "expression": { - "id": 73730, + "id": 74516, "name": "P1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73700, - "src": "4170:2:118", + "referencedDeclaration": 74486, + "src": "4170:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73731, + "id": 74517, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4173:13:118", + "memberLocation": "4173:13:131", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "4170:16:118", + "src": "4170:16:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8829,27 +8845,27 @@ }, { "expression": { - "id": 73732, + "id": 74518, "name": "P1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73700, - "src": "4188:2:118", + "referencedDeclaration": 74486, + "src": "4188:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73733, + "id": 74519, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4191:14:118", + "memberLocation": "4191:14:131", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "4188:17:118", + "src": "4188:17:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8857,27 +8873,27 @@ }, { "expression": { - "id": 73734, + "id": 74520, "name": "IS1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73719, - "src": "4207:3:118", + "referencedDeclaration": 74505, + "src": "4207:3:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 73735, + "id": 74521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4211:2:118", + "memberLocation": "4211:2:131", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4207:6:118", + "src": "4207:6:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -8904,33 +8920,33 @@ } ], "expression": { - "id": 73726, + "id": 74512, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "4113:7:118", + "referencedDeclaration": 33186, + "src": "4113:7:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 73728, + "id": 74514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4121:3:118", + "memberLocation": "4121:3:131", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 28041, - "src": "4113:11:118", + "referencedDeclaration": 28792, + "src": "4113:11:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (string memory,uint256,uint256,uint256) view" } }, - "id": 73736, + "id": 74522, "isConstant": false, "isLValue": false, "isPure": false, @@ -8939,16 +8955,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4113:101:118", + "src": "4113:101:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73737, + "id": 74523, "nodeType": "ExpressionStatement", - "src": "4113:101:118" + "src": "4113:101:131" }, { "expression": { @@ -8956,33 +8972,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73738, + "id": 74524, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4225:2:118", + "referencedDeclaration": 13541, + "src": "4225:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73740, + "id": 74526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4228:12:118", + "memberLocation": "4228:12:131", "memberName": "expectRevert", "nodeType": "MemberAccess", - "referencedDeclaration": 24033, - "src": "4225:15:118", + "referencedDeclaration": 24784, + "src": "4225:15:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 73741, + "id": 74527, "isConstant": false, "isLValue": false, "isPure": false, @@ -8991,27 +9007,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4225:17:118", + "src": "4225:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73742, + "id": 74528, "nodeType": "ExpressionStatement", - "src": "4225:17:118" + "src": "4225:17:131" }, { "expression": { "arguments": [ { - "id": 73746, + "id": 74532, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4275:8:118", + "referencedDeclaration": 74366, + "src": "4275:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9026,33 +9042,33 @@ } ], "expression": { - "id": 73743, + "id": 74529, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4252:3:118", + "referencedDeclaration": 70567, + "src": "4252:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73745, + "id": 74531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4256:18:118", + "memberLocation": "4256:18:131", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "4252:22:118", + "src": "4252:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 73747, + "id": 74533, "isConstant": false, "isLValue": false, "isPure": false, @@ -9061,31 +9077,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4252:32:118", + "src": "4252:32:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 73748, + "id": 74534, "nodeType": "ExpressionStatement", - "src": "4252:32:118" + "src": "4252:32:131" }, { "assignments": [ - 73751 + 74537 ], "declarations": [ { "constant": false, - "id": 73751, + "id": 74537, "mutability": "mutable", "name": "IS2", - "nameLocation": "4317:3:118", + "nameLocation": "4317:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "4294:26:118", + "scope": 74617, + "src": "4294:26:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9093,20 +9109,20 @@ "typeString": "struct individualState" }, "typeName": { - "id": 73750, + "id": 74536, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73749, + "id": 74535, "name": "individualState", "nameLocations": [ - "4294:15:118" + "4294:15:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1238, - "src": "4294:15:118" + "src": "4294:15:131" }, "referencedDeclaration": 1238, - "src": "4294:15:118", + "src": "4294:15:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_storage_ptr", "typeString": "struct individualState" @@ -9115,28 +9131,28 @@ "visibility": "internal" } ], - "id": 73757, + "id": 74543, "initialValue": { "arguments": [ { - "id": 73754, + "id": 74540, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4346:2:118", + "referencedDeclaration": 70591, + "src": "4346:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 73755, + "id": 74541, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4350:8:118", + "referencedDeclaration": 74366, + "src": "4350:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9155,33 +9171,33 @@ } ], "expression": { - "id": 73752, + "id": 74538, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4323:3:118", + "referencedDeclaration": 70567, + "src": "4323:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73753, + "id": 74539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4327:18:118", + "memberLocation": "4327:18:131", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4323:22:118", + "src": "4323:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 73756, + "id": 74542, "isConstant": false, "isLValue": false, "isPure": false, @@ -9190,7 +9206,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4323:36:118", + "src": "4323:36:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", @@ -9198,7 +9214,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4294:65:118" + "src": "4294:65:131" }, { "expression": { @@ -9208,33 +9224,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73762, + "id": 74548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73759, + "id": 74545, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "4375:5:118", + "src": "4375:5:131", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73760, + "id": 74546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4381:9:118", + "memberLocation": "4381:9:131", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "4375:15:118", + "src": "4375:15:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9244,14 +9260,14 @@ "operator": "+", "rightExpression": { "hexValue": "3332", - "id": 73761, + "id": 74547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4393:7:118", + "src": "4393:7:131", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_2764800_by_1", @@ -9259,7 +9275,7 @@ }, "value": "32" }, - "src": "4375:25:118", + "src": "4375:25:131", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9273,18 +9289,18 @@ "typeString": "uint256" } ], - "id": 73758, + "id": 74544, "name": "skip", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 17105, - "src": "4370:4:118", + "referencedDeclaration": 17856, + "src": "4370:4:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 73763, + "id": 74549, "isConstant": false, "isLValue": false, "isPure": false, @@ -9293,27 +9309,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4370:31:118", + "src": "4370:31:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73764, + "id": 74550, "nodeType": "ExpressionStatement", - "src": "4370:31:118" + "src": "4370:31:131" }, { "expression": { "arguments": [ { - "id": 73768, + "id": 74554, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "4421:2:118", + "referencedDeclaration": 70587, + "src": "4421:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9328,33 +9344,33 @@ } ], "expression": { - "id": 73765, + "id": 74551, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4412:2:118", + "referencedDeclaration": 13541, + "src": "4412:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73767, + "id": 74553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4415:5:118", + "memberLocation": "4415:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4412:8:118", + "referencedDeclaration": 24720, + "src": "4412:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73769, + "id": 74555, "isConstant": false, "isLValue": false, "isPure": false, @@ -9363,27 +9379,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4412:12:118", + "src": "4412:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73770, + "id": 74556, "nodeType": "ExpressionStatement", - "src": "4412:12:118" + "src": "4412:12:131" }, { "expression": { "arguments": [ { - "id": 73774, + "id": 74560, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4457:8:118", + "referencedDeclaration": 74366, + "src": "4457:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9398,33 +9414,33 @@ } ], "expression": { - "id": 73771, + "id": 74557, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4434:3:118", + "referencedDeclaration": 70567, + "src": "4434:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73773, + "id": 74559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4438:18:118", + "memberLocation": "4438:18:131", "memberName": "bulkPeriodicUpdate", "nodeType": "MemberAccess", "referencedDeclaration": 1406, - "src": "4434:22:118", + "src": "4434:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (address) external returns (uint256[] memory)" } }, - "id": 73775, + "id": 74561, "isConstant": false, "isLValue": false, "isPure": false, @@ -9433,31 +9449,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4434:32:118", + "src": "4434:32:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 73776, + "id": 74562, "nodeType": "ExpressionStatement", - "src": "4434:32:118" + "src": "4434:32:131" }, { "assignments": [ - 73779 + 74565 ], "declarations": [ { "constant": false, - "id": 73779, + "id": 74565, "mutability": "mutable", "name": "P2", - "nameLocation": "4495:2:118", + "nameLocation": "4495:2:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "4477:20:118", + "scope": 74617, + "src": "4477:20:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9465,20 +9481,20 @@ "typeString": "struct periodData" }, "typeName": { - "id": 73778, + "id": 74564, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73777, + "id": 74563, "name": "periodData", "nameLocations": [ - "4477:10:118" + "4477:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1207, - "src": "4477:10:118" + "src": "4477:10:131" }, "referencedDeclaration": 1207, - "src": "4477:10:118", + "src": "4477:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_storage_ptr", "typeString": "struct periodData" @@ -9487,18 +9503,18 @@ "visibility": "internal" } ], - "id": 73787, + "id": 74573, "initialValue": { "arguments": [ { "arguments": [ { - "id": 73784, + "id": 74570, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4536:8:118", + "referencedDeclaration": 74366, + "src": "4536:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9512,26 +9528,26 @@ "typeString": "address" } ], - "id": 73783, + "id": 74569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4528:7:118", + "src": "4528:7:131", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73782, + "id": 74568, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4528:7:118", + "src": "4528:7:131", "typeDescriptions": {} } }, - "id": 73785, + "id": 74571, "isConstant": false, "isLValue": false, "isPure": false, @@ -9540,7 +9556,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4528:17:118", + "src": "4528:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -9556,33 +9572,33 @@ } ], "expression": { - "id": 73780, + "id": 74566, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4500:3:118", + "referencedDeclaration": 70567, + "src": "4500:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73781, + "id": 74567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4504:23:118", + "memberLocation": "4504:23:131", "memberName": "getPeriodNovaParameters", "nodeType": "MemberAccess", "referencedDeclaration": 1370, - "src": "4500:27:118", + "src": "4500:27:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_periodData_$1207_memory_ptr_$", "typeString": "function (address) view external returns (struct periodData memory)" } }, - "id": 73786, + "id": 74572, "isConstant": false, "isLValue": false, "isPure": false, @@ -9591,7 +9607,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4500:46:118", + "src": "4500:46:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", @@ -9599,22 +9615,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4477:69:118" + "src": "4477:69:131" }, { "assignments": [ - 73790 + 74576 ], "declarations": [ { "constant": false, - "id": 73790, + "id": 74576, "mutability": "mutable", "name": "GS2", - "nameLocation": "4574:3:118", + "nameLocation": "4574:3:131", "nodeType": "VariableDeclaration", - "scope": 73831, - "src": "4556:21:118", + "scope": 74617, + "src": "4556:21:131", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9622,20 +9638,20 @@ "typeString": "struct groupState" }, "typeName": { - "id": 73789, + "id": 74575, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73788, + "id": 74574, "name": "groupState", "nameLocations": [ - "4556:10:118" + "4556:10:131" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1229, - "src": "4556:10:118" + "src": "4556:10:131" }, "referencedDeclaration": 1229, - "src": "4556:10:118", + "src": "4556:10:131", "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_storage_ptr", "typeString": "struct groupState" @@ -9644,16 +9660,16 @@ "visibility": "internal" } ], - "id": 73795, + "id": 74581, "initialValue": { "arguments": [ { - "id": 73793, + "id": 74579, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4598:8:118", + "referencedDeclaration": 74366, + "src": "4598:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9668,33 +9684,33 @@ } ], "expression": { - "id": 73791, + "id": 74577, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4580:3:118", + "referencedDeclaration": 70567, + "src": "4580:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73792, + "id": 74578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4584:13:118", + "memberLocation": "4584:13:131", "memberName": "getGroupState", "nodeType": "MemberAccess", "referencedDeclaration": 1317, - "src": "4580:17:118", + "src": "4580:17:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_groupState_$1229_memory_ptr_$", "typeString": "function (address) view external returns (struct groupState memory)" } }, - "id": 73794, + "id": 74580, "isConstant": false, "isLValue": false, "isPure": false, @@ -9703,7 +9719,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4580:27:118", + "src": "4580:27:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_groupState_$1229_memory_ptr", @@ -9711,18 +9727,18 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "4556:51:118" + "src": "4556:51:131" }, { "expression": { "arguments": [ { - "id": 73799, + "id": 74585, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "4627:2:118", + "referencedDeclaration": 70587, + "src": "4627:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9737,33 +9753,33 @@ } ], "expression": { - "id": 73796, + "id": 74582, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4618:2:118", + "referencedDeclaration": 13541, + "src": "4618:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73798, + "id": 74584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4621:5:118", + "memberLocation": "4621:5:131", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "4618:8:118", + "referencedDeclaration": 24720, + "src": "4618:8:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 73800, + "id": 74586, "isConstant": false, "isLValue": false, "isPure": false, @@ -9772,63 +9788,63 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4618:12:118", + "src": "4618:12:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73801, + "id": 74587, "nodeType": "ExpressionStatement", - "src": "4618:12:118" + "src": "4618:12:131" }, { "expression": { "arguments": [ { - "id": 73805, + "id": 74591, "name": "participants", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73553, - "src": "4686:12:118", + "referencedDeclaration": 74339, + "src": "4686:12:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { - "id": 73806, + "id": 74592, "name": "participationPoints", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73564, - "src": "4700:19:118", + "referencedDeclaration": 74350, + "src": "4700:19:131", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint16_$dyn_memory_ptr", "typeString": "uint16[] memory" } }, { - "id": 73807, + "id": 74593, "name": "maxPossiblePointsPerUser", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73572, - "src": "4721:24:118", + "referencedDeclaration": 74358, + "src": "4721:24:131", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { - "id": 73808, + "id": 74594, "name": "categoryOrDescription", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73576, - "src": "4747:21:118", + "referencedDeclaration": 74362, + "src": "4747:21:131", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -9855,33 +9871,33 @@ } ], "expression": { - "id": 73802, + "id": 74588, "name": "BotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73229, - "src": "4640:9:118", + "referencedDeclaration": 74015, + "src": "4640:9:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, - "id": 73804, + "id": 74590, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4650:22:118", + "memberLocation": "4650:22:131", "memberName": "applyEventConsequences", "nodeType": "MemberAccess", - "referencedDeclaration": 7379, - "src": "4640:32:118", + "referencedDeclaration": 8130, + "src": "4640:32:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint16_$dyn_memory_ptr_$_t_uint16_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address[] memory,uint16[] memory,uint16,string memory) external returns (uint256)" } }, - "id": 73809, + "id": 74595, "isConstant": false, "isLValue": false, "isPure": false, @@ -9890,31 +9906,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4640:138:118", + "src": "4640:138:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73810, + "id": 74596, "nodeType": "ExpressionStatement", - "src": "4640:138:118" + "src": "4640:138:131" }, { "expression": { - "id": 73817, + "id": 74603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73811, + "id": 74597, "name": "IS2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73751, - "src": "4789:3:118", + "referencedDeclaration": 74537, + "src": "4789:3:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" @@ -9925,24 +9941,24 @@ "rightHandSide": { "arguments": [ { - "id": 73814, + "id": 74600, "name": "A2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69805, - "src": "4818:2:118", + "referencedDeclaration": 70591, + "src": "4818:2:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 73815, + "id": 74601, "name": "novaAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73580, - "src": "4822:8:118", + "referencedDeclaration": 74366, + "src": "4822:8:131", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9961,33 +9977,33 @@ } ], "expression": { - "id": 73812, + "id": 74598, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "4795:3:118", + "referencedDeclaration": 70567, + "src": "4795:3:131", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73813, + "id": 74599, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4799:18:118", + "memberLocation": "4799:18:131", "memberName": "getIndividualState", "nodeType": "MemberAccess", "referencedDeclaration": 1327, - "src": "4795:22:118", + "src": "4795:22:131", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_struct$_individualState_$1238_memory_ptr_$", "typeString": "function (address,address) view external returns (struct individualState memory)" } }, - "id": 73816, + "id": 74602, "isConstant": false, "isLValue": false, "isPure": false, @@ -9996,36 +10012,36 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4795:36:118", + "src": "4795:36:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "src": "4789:42:118", + "src": "4789:42:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 73818, + "id": 74604, "nodeType": "ExpressionStatement", - "src": "4789:42:118" + "src": "4789:42:131" }, { "expression": { "arguments": [ { "hexValue": "41766572616765207265702e207c204176657261676520706572662e207c20413120676976656e4320", - "id": 73822, + "id": 74608, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4854:43:118", + "src": "4854:43:131", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4e8054a38919cc24b7974a6447c077d0a09e6990e682534a2e6a938366d33153", "typeString": "literal_string \"Average rep. | Average perf. | A1 givenC \"" @@ -10034,27 +10050,27 @@ }, { "expression": { - "id": 73823, + "id": 74609, "name": "P2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73779, - "src": "4899:2:118", + "referencedDeclaration": 74565, + "src": "4899:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73824, + "id": 74610, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4902:13:118", + "memberLocation": "4902:13:131", "memberName": "cAverageRepLP", "nodeType": "MemberAccess", "referencedDeclaration": 1202, - "src": "4899:16:118", + "src": "4899:16:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -10062,27 +10078,27 @@ }, { "expression": { - "id": 73825, + "id": 74611, "name": "P2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73779, - "src": "4917:2:118", + "referencedDeclaration": 74565, + "src": "4917:2:131", "typeDescriptions": { "typeIdentifier": "t_struct$_periodData_$1207_memory_ptr", "typeString": "struct periodData memory" } }, - "id": 73826, + "id": 74612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4920:14:118", + "memberLocation": "4920:14:131", "memberName": "ePerformanceLP", "nodeType": "MemberAccess", "referencedDeclaration": 1206, - "src": "4917:17:118", + "src": "4917:17:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -10090,27 +10106,27 @@ }, { "expression": { - "id": 73827, + "id": 74613, "name": "IS2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73751, - "src": "4936:3:118", + "referencedDeclaration": 74537, + "src": "4936:3:131", "typeDescriptions": { "typeIdentifier": "t_struct$_individualState_$1238_memory_ptr", "typeString": "struct individualState memory" } }, - "id": 73828, + "id": 74614, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "4940:2:118", + "memberLocation": "4940:2:131", "memberName": "GC", "nodeType": "MemberAccess", "referencedDeclaration": 1233, - "src": "4936:6:118", + "src": "4936:6:131", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -10137,33 +10153,33 @@ } ], "expression": { - "id": 73819, + "id": 74605, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "4842:7:118", + "referencedDeclaration": 33186, + "src": "4842:7:131", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 73821, + "id": 74607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4850:3:118", + "memberLocation": "4850:3:131", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 28041, - "src": "4842:11:118", + "referencedDeclaration": 28792, + "src": "4842:11:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (string memory,uint256,uint256,uint256) view" } }, - "id": 73829, + "id": 74615, "isConstant": false, "isLValue": false, "isPure": false, @@ -10172,16 +10188,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4842:101:118", + "src": "4842:101:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73830, + "id": 74616, "nodeType": "ExpressionStatement", - "src": "4842:101:118" + "src": "4842:101:131" } ] }, @@ -10190,33 +10206,33 @@ "kind": "function", "modifiers": [], "name": "testBotAltersLR", - "nameLocation": "2625:15:118", + "nameLocation": "2625:15:131", "parameters": { - "id": 73547, + "id": 74333, "nodeType": "ParameterList", "parameters": [], - "src": "2640:2:118" + "src": "2640:2:131" }, "returnParameters": { - "id": 73548, + "id": 74334, "nodeType": "ParameterList", "parameters": [], - "src": "2650:0:118" + "src": "2650:0:131" }, - "scope": 73859, + "scope": 74645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 73845, + "id": 74631, "nodeType": "FunctionDefinition", - "src": "4956:107:118", + "src": "4956:107:131", "nodes": [], "body": { - "id": 73844, + "id": 74630, "nodeType": "Block", - "src": "5006:57:118", + "src": "5006:57:131", "nodes": [], "statements": [ { @@ -10224,14 +10240,14 @@ "arguments": [ { "hexValue": "74727565", - "id": 73838, + "id": 74624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5024:4:118", + "src": "5024:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10247,33 +10263,33 @@ } ], "expression": { - "id": 73835, + "id": 74621, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5016:2:118", + "referencedDeclaration": 13541, + "src": "5016:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73837, + "id": 74623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5019:4:118", + "memberLocation": "5019:4:131", "memberName": "skip", "nodeType": "MemberAccess", - "referencedDeclaration": 24020, - "src": "5016:7:118", + "referencedDeclaration": 24771, + "src": "5016:7:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 73839, + "id": 74625, "isConstant": false, "isLValue": false, "isPure": false, @@ -10282,34 +10298,34 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5016:13:118", + "src": "5016:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73840, + "id": 74626, "nodeType": "ExpressionStatement", - "src": "5016:13:118" + "src": "5016:13:131" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], - "id": 73841, + "id": 74627, "name": "testBotAltersLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73832, - "src": "5039:15:118", + "referencedDeclaration": 74618, + "src": "5039:15:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 73842, + "id": 74628, "isConstant": false, "isLValue": false, "isPure": false, @@ -10318,16 +10334,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5039:17:118", + "src": "5039:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73843, + "id": 74629, "nodeType": "ExpressionStatement", - "src": "5039:17:118" + "src": "5039:17:131" } ] }, @@ -10336,33 +10352,33 @@ "kind": "function", "modifiers": [], "name": "testMemebrshpInversePerformance", - "nameLocation": "4965:31:118", + "nameLocation": "4965:31:131", "parameters": { - "id": 73833, + "id": 74619, "nodeType": "ParameterList", "parameters": [], - "src": "4996:2:118" + "src": "4996:2:131" }, "returnParameters": { - "id": 73834, + "id": 74620, "nodeType": "ParameterList", "parameters": [], - "src": "5006:0:118" + "src": "5006:0:131" }, - "scope": 73859, + "scope": 74645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 73858, + "id": 74644, "nodeType": "FunctionDefinition", - "src": "5069:268:118", + "src": "5069:268:131", "nodes": [], "body": { - "id": 73857, + "id": 74643, "nodeType": "Block", - "src": "5111:226:118", + "src": "5111:226:131", "nodes": [], "statements": [ { @@ -10370,14 +10386,14 @@ "arguments": [ { "hexValue": "74727565", - "id": 73851, + "id": 74637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "5129:4:118", + "src": "5129:4:131", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10393,33 +10409,33 @@ } ], "expression": { - "id": 73848, + "id": 74634, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5121:2:118", + "referencedDeclaration": 13541, + "src": "5121:2:131", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73850, + "id": 74636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5124:4:118", + "memberLocation": "5124:4:131", "memberName": "skip", "nodeType": "MemberAccess", - "referencedDeclaration": 24020, - "src": "5121:7:118", + "referencedDeclaration": 24771, + "src": "5121:7:131", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$", "typeString": "function (bool) external" } }, - "id": 73852, + "id": 74638, "isConstant": false, "isLValue": false, "isPure": false, @@ -10428,16 +10444,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5121:13:118", + "src": "5121:13:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73853, + "id": 74639, "nodeType": "ExpressionStatement", - "src": "5121:13:118" + "src": "5121:13:131" }, { "documentation": "thesis: non-members can have reputation obtained through meeting attendence\n outcome: social participation can be a potential onboarding strategy", @@ -10445,18 +10461,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 73854, + "id": 74640, "name": "testBotAltersLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73832, - "src": "5313:15:118", + "referencedDeclaration": 74618, + "src": "5313:15:131", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 73855, + "id": 74641, "isConstant": false, "isLValue": false, "isPure": false, @@ -10465,16 +10481,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5313:17:118", + "src": "5313:17:131", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73856, + "id": 74642, "nodeType": "ExpressionStatement", - "src": "5313:17:118" + "src": "5313:17:131" } ] }, @@ -10483,20 +10499,20 @@ "kind": "function", "modifiers": [], "name": "testNonMemberReputation", - "nameLocation": "5078:23:118", + "nameLocation": "5078:23:131", "parameters": { - "id": 73846, + "id": 74632, "nodeType": "ParameterList", "parameters": [], - "src": "5101:2:118" + "src": "5101:2:131" }, "returnParameters": { - "id": 73847, + "id": 74633, "nodeType": "ParameterList", "parameters": [], - "src": "5111:0:118" + "src": "5111:0:131" }, - "scope": 73859, + "scope": 74645, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -10506,55 +10522,55 @@ "baseContracts": [ { "baseName": { - "id": 73222, + "id": 74008, "name": "DeploysInit", "nameLocations": [ - "369:11:118" + "369:11:131" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "369:11:118" + "referencedDeclaration": 71026, + "src": "369:11:131" }, - "id": 73223, + "id": 74009, "nodeType": "InheritanceSpecifier", - "src": "369:11:118" + "src": "369:11:131" } ], "canonicalName": "TestSocialBotPlugin", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 7390, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 8141, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 73859, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 74645, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "TestSocialBotPlugin", - "nameLocation": "346:19:118", - "scope": 73860, + "nameLocation": "346:19:131", + "scope": 74646, "usedErrors": [] } ], "license": "MIT" }, - "id": 118 + "id": 131 } \ No newline at end of file diff --git a/out/TestLRFormula.t.sol/TestLRFuzz.json b/out/TestLRFormula.t.sol/TestLRFuzz.json index 81e33137..2e694b7d 100644 --- a/out/TestLRFormula.t.sol/TestLRFuzz.json +++ b/out/TestLRFormula.t.sol/TestLRFuzz.json @@ -608,13 +608,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b50620127d580620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001c8578063ba414fa614620001d2578063e20c9f7114620001ed578063fa7626d414620001f757600080fd5b806385226c81146200017f578063916a17c614620001985780639e46559214620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b62000205565b005b6200010b62000599565b6200012162000721565b604051620001309190620021c5565b60405180910390f35b6200014362000785565b60405162000130919062002268565b62000121620008d3565b6200012162000935565b6200017062000997565b6040516200013091906200232e565b6200018962000a81565b604051620001309190620023e5565b6200017062000b5b565b620001b9620001b33660046200244b565b62000c45565b60405190815260200162000130565b6200018962000eb6565b620001dc62000f90565b604051901515815260200162000130565b62000121620010bd565b600754620001dc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200024f9160016001600160a01b039091163b11906200111f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200029a9160026001600160a01b039091163b11906200111f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002e49160046001600160a01b039091163b11906200111f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200032e9160056001600160a01b039091163b11906200111f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003779160066001600160a01b039091163b11906200111f565b601e54602454604080516341dcea9160e01b815290516200041d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062002498565b6001600160a01b03161460405180606001604052806028815260200162012778602891396200111f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004d392919091169063adcee6e390602401602060405180830381865afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620024c3565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200111f565b6200059760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055c919062002498565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200111f565b565b60004215620005a95742620005af565b636553f0ff5b90506000805160206201275883398151915263e5d6bf02620005d3836001620024fd565b6040518263ffffffff1660e01b8152600401620005f291815260200190565b600060405180830381600087803b1580156200060d57600080fd5b505af115801562000622573d6000803e3d6000fd5b50505050620006306200116d565b6040516200063e9062002155565b604051809103906000f0801580156200065b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620006e357600080fd5b505af1158015620006f8573d6000803e3d6000fd5b5050602c54602280546001600160a01b0319166001600160a01b03909216919091179055505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200077b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200075c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008b25783829060005260206000200180546200081e9062002519565b80601f01602080910402602001604051908101604052809291908181526020018280546200084c9062002519565b80156200089d5780601f1062000871576101008083540402835291602001916200089d565b820191906000526020600020905b8154815290600101906020018083116200087f57829003601f168201915b505050505081526020019060010190620007fc565b505050508152505081526020019060010190620007a9565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a6857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a295790505b50505050508152505081526020019060010190620009bb565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000ac79062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000af59062002519565b801562000b465780601f1062000b1a5761010080835404028352916020019162000b46565b820191906000526020600020905b81548152906001019060200180831162000b2857829003601f168201915b50505050508152602001906001019062000aa5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c2c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bed5790505b5050505050815250508152602001906001019062000b7f565b600062000c578860016102bc62001ce6565b975062000c68876001600a62001ce6565b965062000c7a86600a610bb862001ce6565b955062000c8d8560026201117062001ce6565b945062000c9e826002602862001ce6565b915062000caf84601e602862001ce6565b935062000ccd83662386f26fc10000677ce66c50e284000062001ce6565b604051632631f2b160e11b815287891060048201529093506000805160206201275883398151915290634c63e5629060240160006040518083038186803b15801562000d1857600080fd5b505afa15801562000d2d573d6000803e3d6000fd5b5050604051632631f2b160e11b8152878b106004820152600080516020620127588339815191529250634c63e562915060240160006040518083038186803b15801562000d7957600080fd5b505afa15801562000d8e573d6000803e3d6000fd5b505060225460405163093f847960e31b8152600481018c9052602481018b9052604481018a9052606481018990526084810188905260a4810187905260c481018690526001600160a01b0390911692506349fc23c8915060e401602060405180830381865afa15801562000e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e2c919062002555565b905062000e6c678ac7230489e800008211156040518060400160405280600f81526020016e06578706563746564206d617820313608c1b8152506200111f565b62000eab662386f26fc10000821015604051806040016040528060118152602001706578706563746564206d696e20302e303160781b8152506200111f565b979650505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000efc9062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2a9062002519565b801562000f7b5780601f1062000f4f5761010080835404028352916020019162000f7b565b820191906000526020600020905b81548152906001019060200180831162000f5d57829003601f168201915b50505050508152602001906001019062000eda565b600754600090610100900460ff161562000fb35750600754610100900460ff1690565b6000600080516020620127588339815191523b15620010b8576040805160008051602062012758833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200103a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200256f565b60408051601f19818403018152908290526200105691620025a2565b6000604051808303816000865af19150503d806000811462001095576040519150601f19603f3d011682016040523d82523d6000602084013e6200109a565b606091505b5091505080806020019051810190620010b49190620024c3565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b8162001169577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620011569190620025c0565b60405180910390a1620011698262001d2e565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620011fe57600080fd5b505af115801562001213573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012758833981519152925063c657c7189150608401600060405180830381600087803b158015620012a857600080fd5b505af1158015620012bd573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012758833981519152925063c657c7189150608401600060405180830381600087803b1580156200135257600080fd5b505af115801562001367573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201275883398151915292506306447d569150602401600060405180830381600087803b1580156200147657600080fd5b505af11580156200148b573d6000803e3d6000fd5b505050506040516200149d9062002163565b604051809103906000f080158015620014ba573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200154457600080fd5b505af115801562001559573d6000803e3d6000fd5b505050506040516200156b9062002171565b604051809103906000f08015801562001588573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200161157600080fd5b505af115801562001626573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200167457600080fd5b505af115801562001689573d6000803e3d6000fd5b505050506040516200169b906200217f565b604051809103906000f080158015620016b8573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200173e57600080fd5b505af115801562001753573d6000803e3d6000fd5b5050505060405162001765906200218d565b604051809103906000f08015801562001782573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200180c57600080fd5b505af115801562001821573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200184291506200219b565b6001600160a01b039091168152602001604051809103906000f0801580156200186f573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620018fe57600080fd5b505af115801562001913573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620019349150620021a9565b6001600160a01b039091168152602001604051809103906000f08015801562001961573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620019f057600080fd5b505af115801562001a05573d6000803e3d6000fd5b5050505060405162001a179062002155565b604051809103906000f08015801562001a34573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562001a9457600080fd5b505af115801562001aa9573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062001ada90620021b7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001b1f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b15801562001bac57600080fd5b505af115801562001bc1573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001c3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c63919062002498565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012758833981519152916390c5013b9160048082019260009290919082900301818387803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b5050505050565b600062001cf584848462001da9565b905062001d276040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262001f9f565b9392505050565b8062001da6577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d949060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001da66200204c565b50565b60008183111562001e265760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801562001e375750818411155b1562001e4557508262001d27565b600062001e538484620025f1565b62001e60906001620024fd565b90506003851115801562001e7357508481115b1562001e8e5762001e858585620024fd565b91505062001d27565b62001e9d6003600019620025f1565b851015801562001eb9575062001eb685600019620025f1565b81115b1562001ed95762001ecd85600019620025f1565b62001e859084620025f1565b8285111562001f3b57600062001ef08487620025f1565b9050600062001f00838362002607565b90508060000362001f175784935050505062001d27565b600162001f258288620024fd565b62001f319190620025f1565b9350505062001f97565b8385101562001f9757600062001f528686620025f1565b9050600062001f62838362002607565b90508060000362001f795785935050505062001d27565b62001f858186620025f1565b62001f92906001620024fd565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162001fcb9291906200262a565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620020029190620025a2565b600060405180830381855afa9150503d80600081146200203f576040519150601f19603f3d011682016040523d82523d6000602084013e62002044565b606091505b505050505050565b600080516020620127588339815191523b1562002144576040805160008051602062012758833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620020df92916020016200256f565b60408051601f1981840301815290829052620020fb91620025a2565b6000604051808303816000865af19150503d80600081146200213a576040519150601f19603f3d011682016040523d82523d6000602084013e6200213f565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200264f83390190565b6101208062005e2483390190565b610c728062005f4483390190565b6137238062006bb683390190565b6123c2806200a2d983390190565b6110db806200c69b83390190565b613043806200d77683390190565b611f9f80620107b983390190565b6020808252825182820181905260009190848201906040850190845b81811015620022085783516001600160a01b031683529284019291840191600101620021e1565b50909695505050505050565b60005b838110156200223157818101518382015260200162002217565b50506000910152565b600081518084526200225481602086016020860162002214565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200231e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200230757605f19898503018352620022f48486516200223a565b948e01949350918d0191600101620022d5565b505050978a0197945050918801916001016200228f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620023d657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620023c05783516001600160e01b0319168252928b019260019290920191908b019062002394565b50978a0197955050509187019160010162002356565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200243e57603f198886030184526200242b8583516200223a565b945092850192908501906001016200240c565b5092979650505050505050565b600080600080600080600060e0888a0312156200246757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208284031215620024ab57600080fd5b81516001600160a01b038116811462001d2757600080fd5b600060208284031215620024d657600080fd5b8151801515811462001d2757600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620025135762002513620024e7565b92915050565b600181811c908216806200252e57607f821691505b6020821081036200254f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200256857600080fd5b5051919050565b6001600160e01b03198316815281516000906200259481600485016020870162002214565b919091016004019392505050565b60008251620025b681846020870162002214565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d2760808301846200223a565b81810381811115620025135762002513620024e7565b6000826200262557634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006200263f60408301856200223a565b9050826020830152939250505056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220b66f6e34013d1ee6520a2fd926899eb405f43c06d37b1f88fa0555900f2569da64736f6c63430008130033", - "sourceMap": "361:2110:119:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;361:2110:119;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b50620129b680620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001c8578063ba414fa614620001d2578063e20c9f7114620001ed578063fa7626d414620001f757600080fd5b806385226c81146200017f578063916a17c614620001985780639e46559214620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b62000205565b005b6200010b62000599565b6200012162000721565b604051620001309190620021c5565b60405180910390f35b6200014362000785565b60405162000130919062002268565b62000121620008d3565b6200012162000935565b6200017062000997565b6040516200013091906200232e565b6200018962000a81565b604051620001309190620023e5565b6200017062000b5b565b620001b9620001b33660046200244b565b62000c45565b60405190815260200162000130565b6200018962000eb6565b620001dc62000f90565b604051901515815260200162000130565b62000121620010bd565b600754620001dc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200024f9160016001600160a01b039091163b11906200111f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200029a9160026001600160a01b039091163b11906200111f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002e49160046001600160a01b039091163b11906200111f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200032e9160056001600160a01b039091163b11906200111f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003779160066001600160a01b039091163b11906200111f565b601e54602454604080516341dcea9160e01b815290516200041d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062002498565b6001600160a01b03161460405180606001604052806028815260200162012959602891396200111f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004d392919091169063adcee6e390602401602060405180830381865afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620024c3565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200111f565b6200059760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055c919062002498565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200111f565b565b60004215620005a95742620005af565b636553f0ff5b90506000805160206201293983398151915263e5d6bf02620005d3836001620024fd565b6040518263ffffffff1660e01b8152600401620005f291815260200190565b600060405180830381600087803b1580156200060d57600080fd5b505af115801562000622573d6000803e3d6000fd5b50505050620006306200116d565b6040516200063e9062002155565b604051809103906000f0801580156200065b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620006e357600080fd5b505af1158015620006f8573d6000803e3d6000fd5b5050602c54602280546001600160a01b0319166001600160a01b03909216919091179055505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200077b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200075c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008b25783829060005260206000200180546200081e9062002519565b80601f01602080910402602001604051908101604052809291908181526020018280546200084c9062002519565b80156200089d5780601f1062000871576101008083540402835291602001916200089d565b820191906000526020600020905b8154815290600101906020018083116200087f57829003601f168201915b505050505081526020019060010190620007fc565b505050508152505081526020019060010190620007a9565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a6857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a295790505b50505050508152505081526020019060010190620009bb565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000ac79062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000af59062002519565b801562000b465780601f1062000b1a5761010080835404028352916020019162000b46565b820191906000526020600020905b81548152906001019060200180831162000b2857829003601f168201915b50505050508152602001906001019062000aa5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c2c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bed5790505b5050505050815250508152602001906001019062000b7f565b600062000c578860016102bc62001ce6565b975062000c68876001600a62001ce6565b965062000c7a86600a610bb862001ce6565b955062000c8d8560026201117062001ce6565b945062000c9e826002602862001ce6565b915062000caf84601e602862001ce6565b935062000ccd83662386f26fc10000677ce66c50e284000062001ce6565b604051632631f2b160e11b815287891060048201529093506000805160206201293983398151915290634c63e5629060240160006040518083038186803b15801562000d1857600080fd5b505afa15801562000d2d573d6000803e3d6000fd5b5050604051632631f2b160e11b8152878b106004820152600080516020620129398339815191529250634c63e562915060240160006040518083038186803b15801562000d7957600080fd5b505afa15801562000d8e573d6000803e3d6000fd5b505060225460405163093f847960e31b8152600481018c9052602481018b9052604481018a9052606481018990526084810188905260a4810187905260c481018690526001600160a01b0390911692506349fc23c8915060e401602060405180830381865afa15801562000e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e2c919062002555565b905062000e6c678ac7230489e800008211156040518060400160405280600f81526020016e06578706563746564206d617820313608c1b8152506200111f565b62000eab662386f26fc10000821015604051806040016040528060118152602001706578706563746564206d696e20302e303160781b8152506200111f565b979650505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000efc9062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2a9062002519565b801562000f7b5780601f1062000f4f5761010080835404028352916020019162000f7b565b820191906000526020600020905b81548152906001019060200180831162000f5d57829003601f168201915b50505050508152602001906001019062000eda565b600754600090610100900460ff161562000fb35750600754610100900460ff1690565b6000600080516020620129398339815191523b15620010b8576040805160008051602062012939833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200103a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200256f565b60408051601f19818403018152908290526200105691620025a2565b6000604051808303816000865af19150503d806000811462001095576040519150601f19603f3d011682016040523d82523d6000602084013e6200109a565b606091505b5091505080806020019051810190620010b49190620024c3565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b8162001169577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620011569190620025c0565b60405180910390a1620011698262001d2e565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620011fe57600080fd5b505af115801562001213573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012939833981519152925063c657c7189150608401600060405180830381600087803b158015620012a857600080fd5b505af1158015620012bd573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012939833981519152925063c657c7189150608401600060405180830381600087803b1580156200135257600080fd5b505af115801562001367573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201293983398151915292506306447d569150602401600060405180830381600087803b1580156200147657600080fd5b505af11580156200148b573d6000803e3d6000fd5b505050506040516200149d9062002163565b604051809103906000f080158015620014ba573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200154457600080fd5b505af115801562001559573d6000803e3d6000fd5b505050506040516200156b9062002171565b604051809103906000f08015801562001588573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200161157600080fd5b505af115801562001626573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200167457600080fd5b505af115801562001689573d6000803e3d6000fd5b505050506040516200169b906200217f565b604051809103906000f080158015620016b8573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200173e57600080fd5b505af115801562001753573d6000803e3d6000fd5b5050505060405162001765906200218d565b604051809103906000f08015801562001782573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200180c57600080fd5b505af115801562001821573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200184291506200219b565b6001600160a01b039091168152602001604051809103906000f0801580156200186f573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620018fe57600080fd5b505af115801562001913573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620019349150620021a9565b6001600160a01b039091168152602001604051809103906000f08015801562001961573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620019f057600080fd5b505af115801562001a05573d6000803e3d6000fd5b5050505060405162001a179062002155565b604051809103906000f08015801562001a34573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562001a9457600080fd5b505af115801562001aa9573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062001ada90620021b7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001b1f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b15801562001bac57600080fd5b505af115801562001bc1573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001c3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c63919062002498565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012939833981519152916390c5013b9160048082019260009290919082900301818387803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b5050505050565b600062001cf584848462001da9565b905062001d276040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262001f9f565b9392505050565b8062001da6577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d949060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001da66200204c565b50565b60008183111562001e265760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801562001e375750818411155b1562001e4557508262001d27565b600062001e538484620025f1565b62001e60906001620024fd565b90506003851115801562001e7357508481115b1562001e8e5762001e858585620024fd565b91505062001d27565b62001e9d6003600019620025f1565b851015801562001eb9575062001eb685600019620025f1565b81115b1562001ed95762001ecd85600019620025f1565b62001e859084620025f1565b8285111562001f3b57600062001ef08487620025f1565b9050600062001f00838362002607565b90508060000362001f175784935050505062001d27565b600162001f258288620024fd565b62001f319190620025f1565b9350505062001f97565b8385101562001f9757600062001f528686620025f1565b9050600062001f62838362002607565b90508060000362001f795785935050505062001d27565b62001f858186620025f1565b62001f92906001620024fd565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162001fcb9291906200262a565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620020029190620025a2565b600060405180830381855afa9150503d80600081146200203f576040519150601f19603f3d011682016040523d82523d6000602084013e62002044565b606091505b505050505050565b600080516020620129398339815191523b1562002144576040805160008051602062012939833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620020df92916020016200256f565b60408051601f1981840301815290829052620020fb91620025a2565b6000604051808303816000865af19150503d80600081146200213a576040519150601f19603f3d011682016040523d82523d6000602084013e6200213f565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200264f83390190565b6101208062005e2483390190565b610c728062005f4483390190565b6137238062006bb683390190565b6125a3806200a2d983390190565b6110db806200c87c83390190565b613043806200d95783390190565b611f9f806201099a83390190565b6020808252825182820181905260009190848201906040850190845b81811015620022085783516001600160a01b031683529284019291840191600101620021e1565b50909695505050505050565b60005b838110156200223157818101518382015260200162002217565b50506000910152565b600081518084526200225481602086016020860162002214565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200231e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200230757605f19898503018352620022f48486516200223a565b948e01949350918d0191600101620022d5565b505050978a0197945050918801916001016200228f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620023d657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620023c05783516001600160e01b0319168252928b019260019290920191908b019062002394565b50978a0197955050509187019160010162002356565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200243e57603f198886030184526200242b8583516200223a565b945092850192908501906001016200240c565b5092979650505050505050565b600080600080600080600060e0888a0312156200246757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208284031215620024ab57600080fd5b81516001600160a01b038116811462001d2757600080fd5b600060208284031215620024d657600080fd5b8151801515811462001d2757600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620025135762002513620024e7565b92915050565b600181811c908216806200252e57607f821691505b6020821081036200254f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200256857600080fd5b5051919050565b6001600160e01b03198316815281516000906200259481600485016020870162002214565b919091016004019392505050565b60008251620025b681846020870162002214565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d2760808301846200223a565b81810381811115620025135762002513620024e7565b6000826200262557634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006200263f60408301856200223a565b9050826020830152939250505056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122000d48f1d1b608395c1e578b5d8c959be7d10ae8e90e5c33e6134c2dac3110cf464736f6c63430008130033", + "sourceMap": "361:2110:132:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;361:2110:132;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001c8578063ba414fa614620001d2578063e20c9f7114620001ed578063fa7626d414620001f757600080fd5b806385226c81146200017f578063916a17c614620001985780639e46559214620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b62000205565b005b6200010b62000599565b6200012162000721565b604051620001309190620021c5565b60405180910390f35b6200014362000785565b60405162000130919062002268565b62000121620008d3565b6200012162000935565b6200017062000997565b6040516200013091906200232e565b6200018962000a81565b604051620001309190620023e5565b6200017062000b5b565b620001b9620001b33660046200244b565b62000c45565b60405190815260200162000130565b6200018962000eb6565b620001dc62000f90565b604051901515815260200162000130565b62000121620010bd565b600754620001dc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200024f9160016001600160a01b039091163b11906200111f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200029a9160026001600160a01b039091163b11906200111f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002e49160046001600160a01b039091163b11906200111f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200032e9160056001600160a01b039091163b11906200111f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003779160066001600160a01b039091163b11906200111f565b601e54602454604080516341dcea9160e01b815290516200041d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062002498565b6001600160a01b03161460405180606001604052806028815260200162012778602891396200111f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004d392919091169063adcee6e390602401602060405180830381865afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620024c3565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200111f565b6200059760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055c919062002498565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200111f565b565b60004215620005a95742620005af565b636553f0ff5b90506000805160206201275883398151915263e5d6bf02620005d3836001620024fd565b6040518263ffffffff1660e01b8152600401620005f291815260200190565b600060405180830381600087803b1580156200060d57600080fd5b505af115801562000622573d6000803e3d6000fd5b50505050620006306200116d565b6040516200063e9062002155565b604051809103906000f0801580156200065b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620006e357600080fd5b505af1158015620006f8573d6000803e3d6000fd5b5050602c54602280546001600160a01b0319166001600160a01b03909216919091179055505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200077b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200075c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008b25783829060005260206000200180546200081e9062002519565b80601f01602080910402602001604051908101604052809291908181526020018280546200084c9062002519565b80156200089d5780601f1062000871576101008083540402835291602001916200089d565b820191906000526020600020905b8154815290600101906020018083116200087f57829003601f168201915b505050505081526020019060010190620007fc565b505050508152505081526020019060010190620007a9565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a6857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a295790505b50505050508152505081526020019060010190620009bb565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000ac79062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000af59062002519565b801562000b465780601f1062000b1a5761010080835404028352916020019162000b46565b820191906000526020600020905b81548152906001019060200180831162000b2857829003601f168201915b50505050508152602001906001019062000aa5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c2c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bed5790505b5050505050815250508152602001906001019062000b7f565b600062000c578860016102bc62001ce6565b975062000c68876001600a62001ce6565b965062000c7a86600a610bb862001ce6565b955062000c8d8560026201117062001ce6565b945062000c9e826002602862001ce6565b915062000caf84601e602862001ce6565b935062000ccd83662386f26fc10000677ce66c50e284000062001ce6565b604051632631f2b160e11b815287891060048201529093506000805160206201275883398151915290634c63e5629060240160006040518083038186803b15801562000d1857600080fd5b505afa15801562000d2d573d6000803e3d6000fd5b5050604051632631f2b160e11b8152878b106004820152600080516020620127588339815191529250634c63e562915060240160006040518083038186803b15801562000d7957600080fd5b505afa15801562000d8e573d6000803e3d6000fd5b505060225460405163093f847960e31b8152600481018c9052602481018b9052604481018a9052606481018990526084810188905260a4810187905260c481018690526001600160a01b0390911692506349fc23c8915060e401602060405180830381865afa15801562000e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e2c919062002555565b905062000e6c678ac7230489e800008211156040518060400160405280600f81526020016e06578706563746564206d617820313608c1b8152506200111f565b62000eab662386f26fc10000821015604051806040016040528060118152602001706578706563746564206d696e20302e303160781b8152506200111f565b979650505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000efc9062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2a9062002519565b801562000f7b5780601f1062000f4f5761010080835404028352916020019162000f7b565b820191906000526020600020905b81548152906001019060200180831162000f5d57829003601f168201915b50505050508152602001906001019062000eda565b600754600090610100900460ff161562000fb35750600754610100900460ff1690565b6000600080516020620127588339815191523b15620010b8576040805160008051602062012758833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200103a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200256f565b60408051601f19818403018152908290526200105691620025a2565b6000604051808303816000865af19150503d806000811462001095576040519150601f19603f3d011682016040523d82523d6000602084013e6200109a565b606091505b5091505080806020019051810190620010b49190620024c3565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b8162001169577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620011569190620025c0565b60405180910390a1620011698262001d2e565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620011fe57600080fd5b505af115801562001213573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012758833981519152925063c657c7189150608401600060405180830381600087803b158015620012a857600080fd5b505af1158015620012bd573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012758833981519152925063c657c7189150608401600060405180830381600087803b1580156200135257600080fd5b505af115801562001367573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201275883398151915292506306447d569150602401600060405180830381600087803b1580156200147657600080fd5b505af11580156200148b573d6000803e3d6000fd5b505050506040516200149d9062002163565b604051809103906000f080158015620014ba573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200154457600080fd5b505af115801562001559573d6000803e3d6000fd5b505050506040516200156b9062002171565b604051809103906000f08015801562001588573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200161157600080fd5b505af115801562001626573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200167457600080fd5b505af115801562001689573d6000803e3d6000fd5b505050506040516200169b906200217f565b604051809103906000f080158015620016b8573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200173e57600080fd5b505af115801562001753573d6000803e3d6000fd5b5050505060405162001765906200218d565b604051809103906000f08015801562001782573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b1580156200180c57600080fd5b505af115801562001821573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200184291506200219b565b6001600160a01b039091168152602001604051809103906000f0801580156200186f573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620018fe57600080fd5b505af115801562001913573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620019349150620021a9565b6001600160a01b039091168152602001604051809103906000f08015801562001961573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b158015620019f057600080fd5b505af115801562001a05573d6000803e3d6000fd5b5050505060405162001a179062002155565b604051809103906000f08015801562001a34573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562001a9457600080fd5b505af115801562001aa9573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062001ada90620021b7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001b1f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620127588339815191529063c657c71890608401600060405180830381600087803b15801562001bac57600080fd5b505af115801562001bc1573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001c3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c63919062002498565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012758833981519152916390c5013b9160048082019260009290919082900301818387803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b5050505050565b600062001cf584848462001da9565b905062001d276040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262001f9f565b9392505050565b8062001da6577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d949060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001da66200204c565b50565b60008183111562001e265760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801562001e375750818411155b1562001e4557508262001d27565b600062001e538484620025f1565b62001e60906001620024fd565b90506003851115801562001e7357508481115b1562001e8e5762001e858585620024fd565b91505062001d27565b62001e9d6003600019620025f1565b851015801562001eb9575062001eb685600019620025f1565b81115b1562001ed95762001ecd85600019620025f1565b62001e859084620025f1565b8285111562001f3b57600062001ef08487620025f1565b9050600062001f00838362002607565b90508060000362001f175784935050505062001d27565b600162001f258288620024fd565b62001f319190620025f1565b9350505062001f97565b8385101562001f9757600062001f528686620025f1565b9050600062001f62838362002607565b90508060000362001f795785935050505062001d27565b62001f858186620025f1565b62001f92906001620024fd565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162001fcb9291906200262a565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620020029190620025a2565b600060405180830381855afa9150503d80600081146200203f576040519150601f19603f3d011682016040523d82523d6000602084013e62002044565b606091505b505050505050565b600080516020620127588339815191523b1562002144576040805160008051602062012758833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620020df92916020016200256f565b60408051601f1981840301815290829052620020fb91620025a2565b6000604051808303816000865af19150503d80600081146200213a576040519150601f19603f3d011682016040523d82523d6000602084013e6200213f565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200264f83390190565b6101208062005e2483390190565b610c728062005f4483390190565b6137238062006bb683390190565b6123c2806200a2d983390190565b6110db806200c69b83390190565b613043806200d77683390190565b611f9f80620107b983390190565b6020808252825182820181905260009190848201906040850190845b81811015620022085783516001600160a01b031683529284019291840191600101620021e1565b50909695505050505050565b60005b838110156200223157818101518382015260200162002217565b50506000910152565b600081518084526200225481602086016020860162002214565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200231e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200230757605f19898503018352620022f48486516200223a565b948e01949350918d0191600101620022d5565b505050978a0197945050918801916001016200228f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620023d657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620023c05783516001600160e01b0319168252928b019260019290920191908b019062002394565b50978a0197955050509187019160010162002356565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200243e57603f198886030184526200242b8583516200223a565b945092850192908501906001016200240c565b5092979650505050505050565b600080600080600080600060e0888a0312156200246757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208284031215620024ab57600080fd5b81516001600160a01b038116811462001d2757600080fd5b600060208284031215620024d657600080fd5b8151801515811462001d2757600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620025135762002513620024e7565b92915050565b600181811c908216806200252e57607f821691505b6020821081036200254f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200256857600080fd5b5051919050565b6001600160e01b03198316815281516000906200259481600485016020870162002214565b919091016004019392505050565b60008251620025b681846020870162002214565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d2760808301846200223a565b81810381811115620025135762002513620024e7565b6000826200262557634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006200263f60408301856200223a565b9050826020830152939250505056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220b66f6e34013d1ee6520a2fd926899eb405f43c06d37b1f88fa0555900f2569da64736f6c63430008130033", - "sourceMap": "361:2110:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;530:524:119;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;1060:1409:119:-;;;;;;:::i;:::-;;:::i;:::-;;;6082:25:121;;;6070:2;6055:18;1060:1409:119;5936:177:121;2157:141:59;;;:::i;1819:584:52:-;;;:::i;:::-;;;6283:14:121;;6276:22;6258:41;;6246:2;6231:18;1819:584:52;6118:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;6751:51:121;3476:66:114;;3487:3;;;;;:23;;6724:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;530:524:119:-;573:13;589:15;:20;:51;;625:15;589:51;;;612:10;589:51;573:67;-1:-1:-1;;;;;;;;;;;;650:7:119;658:9;573:67;666:1;658:9;:::i;:::-;650:18;;;;;;;;;;;;;6082:25:121;;6070:2;6055:18;;5936:177;650:18:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;679:13;:11;:13::i;:::-;718:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;703:12:119;:36;;-1:-1:-1;;;;;;703:36:119;-1:-1:-1;;;;;703:36:119;;;;;;;;;749:43;;;-1:-1:-1;;;749:43:119;;;;;7569:51:121;;;;7636:18;;;7629:30;7695:1;7675:18;;;7668:29;-1:-1:-1;;;7713:18:121;;;7706:38;-1:-1:-1;;;;;;;;;;;749:8:119;;;7761:19:121;;749:43:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;834:12:119;;803:3;:45;;-1:-1:-1;;;;;;803:45:119;-1:-1:-1;;;;;834:12:119;;;803:45;;;;;;-1:-1:-1;;;530:524:119:o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1060:1409:119;1264:13;1295:18;1301:3;1306:1;1309:3;1295:5;:18::i;:::-;1289:24;;1329:17;1335:3;1340:1;1343:2;1329:5;:17::i;:::-;1323:23;;1362:20;1368:3;1373:2;1377:4;1362:5;:20::i;:::-;1356:26;;1398:20;1404:3;1409:1;1412:5;1398;:20::i;:::-;1392:26;;1439:21;1445:7;1454:1;1457:2;1439:5;:21::i;:::-;1429:31;;1474:16;1480:1;1483:2;1487;1474:5;:16::i;:::-;1470:20;;1513:37;1519:9;1530:10;1542:7;1513:5;:37::i;:::-;1561:20;;-1:-1:-1;;;1561:20:119;;1571:9;;;1561:20;;;6258:41:121;1501:49:119;;-1:-1:-1;;;;;;;;;;;;1561:9:119;;;6231:18:121;;1561:20:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1591:20:119;;-1:-1:-1;;;1591:20:119;;1601:9;;;1591:20;;;6258:41:121;-1:-1:-1;;;;;;;;;;;1591:9:119;-1:-1:-1;1591:9:119;;-1:-1:-1;6231:18:121;;1591:20:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1630:3:119;;:71;;-1:-1:-1;;;1630:71:119;;;;;8491:25:121;;;8532:18;;;8525:34;;;8575:18;;;8568:34;;;8618:18;;;8611:34;;;8661:19;;;8654:35;;;8705:19;;;8698:35;;;8749:19;;;8742:35;;;-1:-1:-1;;;;;1630:3:119;;;;-1:-1:-1;1630:28:119;;-1:-1:-1;8463:19:121;;1630:71:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1622:79;;2352:48;2372:8;2363:5;:17;;2352:48;;;;;;;;;;;;;-1:-1:-1;;;2352:48:119;;;:10;:48::i;:::-;2410:52;2430:10;2421:5;:19;;2410:52;;;;;;;;;;;;;-1:-1:-1;;;2410:52:119;;;:10;:52::i;:::-;1060:1409;;;;;;;;;:::o;2157:141:59:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;9151:51:121;;;-1:-1:-1;;;9218:18:121;;;9211:34;2196:43:52;;;;;;;;;9124:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;10600:51:121;;;;10667:18;;;10660:30;10726:1;10706:18;;;10699:29;-1:-1:-1;;;10744:18:121;;;10737:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;10792:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;11034:51:121;;;;11101:18;;;11094:30;11160:1;11140:18;;;11133:29;-1:-1:-1;;;11178:18:121;;;11171:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;11226:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;11468:51:121;;;;11535:18;;;11528:30;11594:1;11574:18;;;11567:29;-1:-1:-1;;;11612:18:121;;;11605:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;11660:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;11902:51:121;11969:18;;;11962:30;12028:2;12008:18;;;12001:30;-1:-1:-1;;;12047:18:121;;;12040:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;12099:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;6751:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;6724:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;12341:51:121;;;;12408:18;;;12401:30;12467:2;12447:18;;;12440:30;-1:-1:-1;;;12486:18:121;;;12479:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;12536:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;12778:51:121;;;;12845:18;;;12838:30;12904:1;12884:18;;;12877:29;-1:-1:-1;;;12922:18:121;;;12915:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;12971:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;6751:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;6724:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;13213:51:121;;;;13280:18;;;13273:30;13339:1;13319:18;;;13312:29;-1:-1:-1;;;13357:18:121;;;13350:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;13403:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;13645:51:121;;;;13712:18;;;13705:30;13771:2;13751:18;;;13744:30;-1:-1:-1;;;13790:18:121;;;13783:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;13840:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;6769:32:121;;;6751:51;;6739:2;6724:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;14082:51:121;;;;14149:18;;;14142:30;14208:2;14188:18;;;14181:30;-1:-1:-1;;;14227:18:121;;;14220:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;14282:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;6769:32:121;;;6751:51;;6739:2;6724:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;14524:51:121;;;;14591:18;;;14584:30;14650:2;14630:18;;;14623:30;-1:-1:-1;;;14669:18:121;;;14662:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;14724:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;6751:51:121;;;;2573:3:114;;;;:22;;6724:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;15041:15:121;;;15023:34;;15093:15;;;15088:2;15073:18;;15066:43;15145:15;;;15140:2;15125:18;;15118:43;15197:15;;;15192:2;15177:18;;15170:43;14972:3;14957:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;15436:51:121;;;;15503:18;;;15496:30;15562:2;15542:18;;;15535:30;-1:-1:-1;;;15581:18:121;;;15574:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;15634:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;15920:25:121;;;15981:2;15961:18;;;15954:30;16020:2;16000:18;;;15993:30;-1:-1:-1;;;16039:19:121;;;16032:42;16126:18;;;16119:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;16091:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;2815:190:64:-;2898:14;2933:19;2940:1;2943:3;2948;2933:6;:19::i;:::-;2924:28;;2962:36;;;;;;;;;;;;;;-1:-1:-1;;;2962:36:64;;;2991:6;2962:12;:36::i;:::-;2815:190;;;;;:::o;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;16366:2:121;16348:21;;;16405:2;16385:18;;;16378:30;16444:25;16439:2;16424:18;;16417:53;16502:2;16487:18;;16164:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;1546:1263:64:-;1630:14;1671:3;1664;:10;;1656:85;;;;-1:-1:-1;;;1656:85:64;;16718:2:121;1656:85:64;;;16700:21:121;16757:2;16737:18;;;16730:30;16796:34;16776:18;;;16769:62;16867:32;16847:18;;;16840:60;16917:19;;1656:85:64;;;;;;;;1975:3;1970:1;:8;;:20;;;;;1987:3;1982:1;:8;;1970:20;1966:34;;;-1:-1:-1;1999:1:64;1992:8;;1966:34;2011:12;2026:9;2032:3;2026;:9;:::i;:::-;:13;;2038:1;2026:13;:::i;:::-;2011:28;;2234:1;2229;:6;;:18;;;;;2246:1;2239:4;:8;2229:18;2225:38;;;2256:7;2262:1;2256:3;:7;:::i;:::-;2249:14;;;;;2225:38;2282:15;2296:1;-1:-1:-1;;2282:15:64;:::i;:::-;2277:1;:20;;:46;;;;-1:-1:-1;2308:15:64;2322:1;-1:-1:-1;;2308:15:64;:::i;:::-;2301:4;:22;2277:46;2273:82;;;2339:15;2353:1;-1:-1:-1;;2339:15:64;:::i;:::-;2332:23;;:3;:23;:::i;2273:82::-;2459:3;2455:1;:7;2451:352;;;2478:12;2493:7;2497:3;2493:1;:7;:::i;:::-;2478:22;-1:-1:-1;2514:11:64;2528;2535:4;2478:22;2528:11;:::i;:::-;2514:25;;2557:3;2564:1;2557:8;2553:24;;2574:3;2567:10;;;;;;;2553:24;2612:1;2600:9;2606:3;2600;:9;:::i;:::-;:13;;;;:::i;:::-;2591:22;;2464:160;;2451:352;;;2638:3;2634:1;:7;2630:173;;;2657:12;2672:7;2678:1;2672:3;:7;:::i;:::-;2657:22;-1:-1:-1;2693:11:64;2707;2714:4;2657:22;2707:11;:::i;:::-;2693:25;;2736:3;2743:1;2736:8;2732:24;;2753:3;2746:10;;;;;;;2732:24;2779:9;2785:3;2779;:9;:::i;:::-;:13;;2791:1;2779:13;:::i;:::-;2770:22;;2643:160;;2630:173;1646:1163;1546:1263;;;;;:::o;10096:207::-;10172:11;679:42;-1:-1:-1;;;;;10188:36:64;10272:2;10276;10225:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10225:54:64;;;;;;;;;;;;;;-1:-1:-1;;;;;10225:54:64;-1:-1:-1;;;10225:54:64;;;10188:92;;;10225:54;10188:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10096:207:64:o;2409:432:52:-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;17792:51:121;;;-1:-1:-1;;;17859:18:121;;;17852:34;;;;2712:4:52;17902:18:121;;;17895:34;2489:11:52;;1671:64;2586:43;;17765:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5339:592::-;5452:6;5460;5468;5476;5484;5492;5500;5553:3;5541:9;5532:7;5528:23;5524:33;5521:53;;;5570:1;5567;5560:12;5521:53;-1:-1:-1;;5593:23:121;;;5663:2;5648:18;;5635:32;;-1:-1:-1;5714:2:121;5699:18;;5686:32;;5765:2;5750:18;;5737:32;;-1:-1:-1;5816:3:121;5801:19;;5788:33;;-1:-1:-1;5868:3:121;5853:19;;5840:33;;-1:-1:-1;5920:3:121;5905:19;5892:33;;-1:-1:-1;5339:592:121;-1:-1:-1;5339:592:121:o;6310:290::-;6380:6;6433:2;6421:9;6412:7;6408:23;6404:32;6401:52;;;6449:1;6446;6439:12;6401:52;6475:16;;-1:-1:-1;;;;;6520:31:121;;6510:42;;6500:70;;6566:1;6563;6556:12;6813:277;6880:6;6933:2;6921:9;6912:7;6908:23;6904:32;6901:52;;;6949:1;6946;6939:12;6901:52;6981:9;6975:16;7034:5;7027:13;7020:21;7013:5;7010:32;7000:60;;7056:1;7053;7046:12;7095:127;7156:10;7151:3;7147:20;7144:1;7137:31;7187:4;7184:1;7177:15;7211:4;7208:1;7201:15;7227:125;7292:9;;;7313:10;;;7310:36;;;7326:18;;:::i;:::-;7227:125;;;;:::o;7791:380::-;7870:1;7866:12;;;;7913;;;7934:61;;7988:4;7980:6;7976:17;7966:27;;7934:61;8041:2;8033:6;8030:14;8010:18;8007:38;8004:161;;8087:10;8082:3;8078:20;8075:1;8068:31;8122:4;8119:1;8112:15;8150:4;8147:1;8140:15;8004:161;;7791:380;;;:::o;8788:184::-;8858:6;8911:2;8899:9;8890:7;8886:23;8882:32;8879:52;;;8927:1;8924;8917:12;8879:52;-1:-1:-1;8950:16:121;;8788:184;-1:-1:-1;8788:184:121:o;9256:384::-;-1:-1:-1;;;;;;9441:33:121;;9429:46;;9498:13;;9411:3;;9520:74;9498:13;9583:1;9574:11;;9567:4;9555:17;;9520:74;:::i;:::-;9614:16;;;;9632:1;9610:24;;9256:384;-1:-1:-1;;;9256:384:121:o;9645:287::-;9774:3;9812:6;9806:13;9828:66;9887:6;9882:3;9875:4;9867:6;9863:17;9828:66;:::i;:::-;9910:16;;;;;9645:287;-1:-1:-1;;9645:287:121:o;9937:446::-;10187:2;10176:9;10169:21;10226:1;10221:2;10210:9;10206:18;10199:29;-1:-1:-1;;;10259:2:121;10248:9;10244:18;10237:35;10310:3;10303:4;10292:9;10288:20;10281:33;10150:4;10331:46;10372:3;10361:9;10357:19;10349:6;10331:46;:::i;16947:128::-;17014:9;;;17035:11;;;17032:37;;;17049:18;;:::i;17080:209::-;17112:1;17138;17128:132;;17182:10;17177:3;17173:20;17170:1;17163:31;17217:4;17214:1;17207:15;17245:4;17242:1;17235:15;17128:132;-1:-1:-1;17274:9:121;;17080:209::o;17294:291::-;17471:2;17460:9;17453:21;17434:4;17491:45;17532:2;17521:9;17517:18;17509:6;17491:45;:::i;:::-;17483:53;;17572:6;17567:2;17556:9;17552:18;17545:34;17294:291;;;;;:::o", + "object": "0x60806040523480156200001157600080fd5b5060043610620000fc5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001c8578063ba414fa614620001d2578063e20c9f7114620001ed578063fa7626d414620001f757600080fd5b806385226c81146200017f578063916a17c614620001985780639e46559214620001a257600080fd5b80632ade388011620000d85780632ade388014620001395780633e5e3c2314620001525780633f7286f4146200015c57806366d9a9a0146200016657600080fd5b806203603214620001015780630a9254e4146200010d5780631ed7831c1462000117575b600080fd5b6200010b62000205565b005b6200010b62000599565b6200012162000721565b604051620001309190620021c5565b60405180910390f35b6200014362000785565b60405162000130919062002268565b62000121620008d3565b6200012162000935565b6200017062000997565b6040516200013091906200232e565b6200018962000a81565b604051620001309190620023e5565b6200017062000b5b565b620001b9620001b33660046200244b565b62000c45565b60405190815260200162000130565b6200018962000eb6565b620001dc62000f90565b604051901515815260200162000130565b62000121620010bd565b600754620001dc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200024f9160016001600160a01b039091163b11906200111f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200029a9160026001600160a01b039091163b11906200111f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002e49160046001600160a01b039091163b11906200111f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200032e9160056001600160a01b039091163b11906200111f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003779160066001600160a01b039091163b11906200111f565b601e54602454604080516341dcea9160e01b815290516200041d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f3919062002498565b6001600160a01b03161460405180606001604052806028815260200162012959602891396200111f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004d392919091169063adcee6e390602401602060405180830381865afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620024c3565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200111f565b6200059760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055c919062002498565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200111f565b565b60004215620005a95742620005af565b636553f0ff5b90506000805160206201293983398151915263e5d6bf02620005d3836001620024fd565b6040518263ffffffff1660e01b8152600401620005f291815260200190565b600060405180830381600087803b1580156200060d57600080fd5b505af115801562000622573d6000803e3d6000fd5b50505050620006306200116d565b6040516200063e9062002155565b604051809103906000f0801580156200065b573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600860448201526704c6f63616c5265760c41b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620006e357600080fd5b505af1158015620006f8573d6000803e3d6000fd5b5050602c54602280546001600160a01b0319166001600160a01b03909216919091179055505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200077b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200075c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008b25783829060005260206000200180546200081e9062002519565b80601f01602080910402602001604051908101604052809291908181526020018280546200084c9062002519565b80156200089d5780601f1062000871576101008083540402835291602001916200089d565b820191906000526020600020905b8154815290600101906020018083116200087f57829003601f168201915b505050505081526020019060010190620007fc565b505050508152505081526020019060010190620007a9565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a6857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000a295790505b50505050508152505081526020019060010190620009bb565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000ac79062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000af59062002519565b801562000b465780601f1062000b1a5761010080835404028352916020019162000b46565b820191906000526020600020905b81548152906001019060200180831162000b2857829003601f168201915b50505050508152602001906001019062000aa5565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008ca5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c2c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bed5790505b5050505050815250508152602001906001019062000b7f565b600062000c578860016102bc62001ce6565b975062000c68876001600a62001ce6565b965062000c7a86600a610bb862001ce6565b955062000c8d8560026201117062001ce6565b945062000c9e826002602862001ce6565b915062000caf84601e602862001ce6565b935062000ccd83662386f26fc10000677ce66c50e284000062001ce6565b604051632631f2b160e11b815287891060048201529093506000805160206201293983398151915290634c63e5629060240160006040518083038186803b15801562000d1857600080fd5b505afa15801562000d2d573d6000803e3d6000fd5b5050604051632631f2b160e11b8152878b106004820152600080516020620129398339815191529250634c63e562915060240160006040518083038186803b15801562000d7957600080fd5b505afa15801562000d8e573d6000803e3d6000fd5b505060225460405163093f847960e31b8152600481018c9052602481018b9052604481018a9052606481018990526084810188905260a4810187905260c481018690526001600160a01b0390911692506349fc23c8915060e401602060405180830381865afa15801562000e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e2c919062002555565b905062000e6c678ac7230489e800008211156040518060400160405280600f81526020016e06578706563746564206d617820313608c1b8152506200111f565b62000eab662386f26fc10000821015604051806040016040528060118152602001706578706563746564206d696e20302e303160781b8152506200111f565b979650505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620008ca57838290600052602060002001805462000efc9062002519565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2a9062002519565b801562000f7b5780601f1062000f4f5761010080835404028352916020019162000f7b565b820191906000526020600020905b81548152906001019060200180831162000f5d57829003601f168201915b50505050508152602001906001019062000eda565b600754600090610100900460ff161562000fb35750600754610100900460ff1690565b6000600080516020620129398339815191523b15620010b8576040805160008051602062012939833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200103a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200256f565b60408051601f19818403018152908290526200105691620025a2565b6000604051808303816000865af19150503d806000811462001095576040519150601f19603f3d011682016040523d82523d6000602084013e6200109a565b606091505b5091505080806020019051810190620010b49190620024c3565b9150505b919050565b606060138054806020026020016040519081016040528092919081815260200182805480156200077b576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200075c575050505050905090565b8162001169577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620011569190620025c0565b60405180910390a1620011698262001d2e565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620011fe57600080fd5b505af115801562001213573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b606482015260008051602062012939833981519152925063c657c7189150608401600060405180830381600087803b158015620012a857600080fd5b505af1158015620012bd573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b606482015260008051602062012939833981519152925063c657c7189150608401600060405180830381600087803b1580156200135257600080fd5b505af115801562001367573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201293983398151915292506306447d569150602401600060405180830381600087803b1580156200147657600080fd5b505af11580156200148b573d6000803e3d6000fd5b505050506040516200149d9062002163565b604051809103906000f080158015620014ba573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200154457600080fd5b505af115801562001559573d6000803e3d6000fd5b505050506040516200156b9062002171565b604051809103906000f08015801562001588573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200161157600080fd5b505af115801562001626573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b1580156200167457600080fd5b505af115801562001689573d6000803e3d6000fd5b505050506040516200169b906200217f565b604051809103906000f080158015620016b8573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200173e57600080fd5b505af115801562001753573d6000803e3d6000fd5b5050505060405162001765906200218d565b604051809103906000f08015801562001782573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b1580156200180c57600080fd5b505af115801562001821573d6000803e3d6000fd5b50506023546040516001600160a01b0390911692506200184291506200219b565b6001600160a01b039091168152602001604051809103906000f0801580156200186f573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620018fe57600080fd5b505af115801562001913573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620019349150620021a9565b6001600160a01b039091168152602001604051809103906000f08015801562001961573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b158015620019f057600080fd5b505af115801562001a05573d6000803e3d6000fd5b5050505060405162001a179062002155565b604051809103906000f08015801562001a34573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b15801562001a9457600080fd5b505af115801562001aa9573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b03938416945091831692169062001ada90620021b7565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562001b1f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620129398339815191529063c657c71890608401600060405180830381600087803b15801562001bac57600080fd5b505af115801562001bc1573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af115801562001c3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c63919062002498565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b8152905191925060008051602062012939833981519152916390c5013b9160048082019260009290919082900301818387803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b5050505050565b600062001cf584848462001da9565b905062001d276040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262001f9f565b9392505050565b8062001da6577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d949060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001da66200204c565b50565b60008183111562001e265760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b82841015801562001e375750818411155b1562001e4557508262001d27565b600062001e538484620025f1565b62001e60906001620024fd565b90506003851115801562001e7357508481115b1562001e8e5762001e858585620024fd565b91505062001d27565b62001e9d6003600019620025f1565b851015801562001eb9575062001eb685600019620025f1565b81115b1562001ed95762001ecd85600019620025f1565b62001e859084620025f1565b8285111562001f3b57600062001ef08487620025f1565b9050600062001f00838362002607565b90508060000362001f175784935050505062001d27565b600162001f258288620024fd565b62001f319190620025f1565b9350505062001f97565b8385101562001f9757600062001f528686620025f1565b9050600062001f62838362002607565b90508060000362001f795785935050505062001d27565b62001f858186620025f1565b62001f92906001620024fd565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b0316838360405160240162001fcb9291906200262a565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620020029190620025a2565b600060405180830381855afa9150503d80600081146200203f576040519150601f19603f3d011682016040523d82523d6000602084013e62002044565b606091505b505050505050565b600080516020620129398339815191523b1562002144576040805160008051602062012939833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620020df92916020016200256f565b60408051601f1981840301815290829052620020fb91620025a2565b6000604051808303816000865af19150503d80600081146200213a576040519150601f19603f3d011682016040523d82523d6000602084013e6200213f565b606091505b505050505b6007805461ff001916610100179055565b6137d5806200264f83390190565b6101208062005e2483390190565b610c728062005f4483390190565b6137238062006bb683390190565b6125a3806200a2d983390190565b6110db806200c87c83390190565b613043806200d95783390190565b611f9f806201099a83390190565b6020808252825182820181905260009190848201906040850190845b81811015620022085783516001600160a01b031683529284019291840191600101620021e1565b50909695505050505050565b60005b838110156200223157818101518382015260200162002217565b50506000910152565b600081518084526200225481602086016020860162002214565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200231e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200230757605f19898503018352620022f48486516200223a565b948e01949350918d0191600101620022d5565b505050978a0197945050918801916001016200228f565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620023d657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620023c05783516001600160e01b0319168252928b019260019290920191908b019062002394565b50978a0197955050509187019160010162002356565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200243e57603f198886030184526200242b8583516200223a565b945092850192908501906001016200240c565b5092979650505050505050565b600080600080600080600060e0888a0312156200246757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208284031215620024ab57600080fd5b81516001600160a01b038116811462001d2757600080fd5b600060208284031215620024d657600080fd5b8151801515811462001d2757600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620025135762002513620024e7565b92915050565b600181811c908216806200252e57607f821691505b6020821081036200254f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200256857600080fd5b5051919050565b6001600160e01b03198316815281516000906200259481600485016020870162002214565b919091016004019392505050565b60008251620025b681846020870162002214565b9190910192915050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062001d2760808301846200223a565b81810381811115620025135762002513620024e7565b6000826200262557634e487b7160e01b600052601260045260246000fd5b500690565b6040815260006200263f60408301856200223a565b9050826020830152939250505056fe610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a264697066735822122000d48f1d1b608395c1e578b5d8c959be7d10ae8e90e5c33e6134c2dac3110cf464736f6c63430008130033", + "sourceMap": "361:2110:132:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;530:524:132;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;1060:1409:132:-;;;;;;:::i;:::-;;:::i;:::-;;;6082:25:134;;;6070:2;6055:18;1060:1409:132;5936:177:134;2157:141:72;;;:::i;1819:584:65:-;;;:::i;:::-;;;6283:14:134;;6276:22;6258:41;;6246:2;6231:18;1819:584:65;6118:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;6751:51:134;3476:66:127;;3487:3;;;;;:23;;6724:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;530:524:132:-;573:13;589:15;:20;:51;;625:15;589:51;;;612:10;589:51;573:67;-1:-1:-1;;;;;;;;;;;;650:7:132;658:9;573:67;666:1;658:9;:::i;:::-;650:18;;;;;;;;;;;;;6082:25:134;;6070:2;6055:18;;5936:177;650:18:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;679:13;:11;:13::i;:::-;718:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;703:12:132;:36;;-1:-1:-1;;;;;;703:36:132;-1:-1:-1;;;;;703:36:132;;;;;;;;;749:43;;;-1:-1:-1;;;749:43:132;;;;;7569:51:134;;;;7636:18;;;7629:30;7695:1;7675:18;;;7668:29;-1:-1:-1;;;7713:18:134;;;7706:38;-1:-1:-1;;;;;;;;;;;749:8:132;;;7761:19:134;;749:43:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;834:12:132;;803:3;:45;;-1:-1:-1;;;;;;803:45:132;-1:-1:-1;;;;;834:12:132;;;803:45;;;;;;-1:-1:-1;;;530:524:132:o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1060:1409:132;1264:13;1295:18;1301:3;1306:1;1309:3;1295:5;:18::i;:::-;1289:24;;1329:17;1335:3;1340:1;1343:2;1329:5;:17::i;:::-;1323:23;;1362:20;1368:3;1373:2;1377:4;1362:5;:20::i;:::-;1356:26;;1398:20;1404:3;1409:1;1412:5;1398;:20::i;:::-;1392:26;;1439:21;1445:7;1454:1;1457:2;1439:5;:21::i;:::-;1429:31;;1474:16;1480:1;1483:2;1487;1474:5;:16::i;:::-;1470:20;;1513:37;1519:9;1530:10;1542:7;1513:5;:37::i;:::-;1561:20;;-1:-1:-1;;;1561:20:132;;1571:9;;;1561:20;;;6258:41:134;1501:49:132;;-1:-1:-1;;;;;;;;;;;;1561:9:132;;;6231:18:134;;1561:20:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1591:20:132;;-1:-1:-1;;;1591:20:132;;1601:9;;;1591:20;;;6258:41:134;-1:-1:-1;;;;;;;;;;;1591:9:132;-1:-1:-1;1591:9:132;;-1:-1:-1;6231:18:134;;1591:20:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1630:3:132;;:71;;-1:-1:-1;;;1630:71:132;;;;;8491:25:134;;;8532:18;;;8525:34;;;8575:18;;;8568:34;;;8618:18;;;8611:34;;;8661:19;;;8654:35;;;8705:19;;;8698:35;;;8749:19;;;8742:35;;;-1:-1:-1;;;;;1630:3:132;;;;-1:-1:-1;1630:28:132;;-1:-1:-1;8463:19:134;;1630:71:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1622:79;;2352:48;2372:8;2363:5;:17;;2352:48;;;;;;;;;;;;;-1:-1:-1;;;2352:48:132;;;:10;:48::i;:::-;2410:52;2430:10;2421:5;:19;;2410:52;;;;;;;;;;;;;-1:-1:-1;;;2410:52:132;;;:10;:52::i;:::-;1060:1409;;;;;;;;;:::o;2157:141:72:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;9151:51:134;;;-1:-1:-1;;;9218:18:134;;;9211:34;2196:43:65;;;;;;;;;9124:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;10600:51:134;;;;10667:18;;;10660:30;10726:1;10706:18;;;10699:29;-1:-1:-1;;;10744:18:134;;;10737:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;10792:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;11034:51:134;;;;11101:18;;;11094:30;11160:1;11140:18;;;11133:29;-1:-1:-1;;;11178:18:134;;;11171:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;11226:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;11468:51:134;;;;11535:18;;;11528:30;11594:1;11574:18;;;11567:29;-1:-1:-1;;;11612:18:134;;;11605:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;11660:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;11902:51:134;11969:18;;;11962:30;12028:2;12008:18;;;12001:30;-1:-1:-1;;;12047:18:134;;;12040:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;12099:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;6751:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;6724:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;12341:51:134;;;;12408:18;;;12401:30;12467:2;12447:18;;;12440:30;-1:-1:-1;;;12486:18:134;;;12479:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;12536:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;12778:51:134;;;;12845:18;;;12838:30;12904:1;12884:18;;;12877:29;-1:-1:-1;;;12922:18:134;;;12915:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;12971:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;6751:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;6724:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;13213:51:134;;;;13280:18;;;13273:30;13339:1;13319:18;;;13312:29;-1:-1:-1;;;13357:18:134;;;13350:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;13403:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;13645:51:134;;;;13712:18;;;13705:30;13771:2;13751:18;;;13744:30;-1:-1:-1;;;13790:18:134;;;13783:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;13840:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;6769:32:134;;;6751:51;;6739:2;6724:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;14082:51:134;;;;14149:18;;;14142:30;14208:2;14188:18;;;14181:30;-1:-1:-1;;;14227:18:134;;;14220:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;14282:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;6769:32:134;;;6751:51;;6739:2;6724:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;14524:51:134;;;;14591:18;;;14584:30;14650:2;14630:18;;;14623:30;-1:-1:-1;;;14669:18:134;;;14662:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;14724:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;6751:51:134;;;;2573:3:127;;;;:22;;6724:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;15041:15:134;;;15023:34;;15093:15;;;15088:2;15073:18;;15066:43;15145:15;;;15140:2;15125:18;;15118:43;15197:15;;;15192:2;15177:18;;15170:43;14972:3;14957:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;15436:51:134;;;;15503:18;;;15496:30;15562:2;15542:18;;;15535:30;-1:-1:-1;;;15581:18:134;;;15574:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;15634:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;15920:25:134;;;15981:2;15961:18;;;15954:30;16020:2;16000:18;;;15993:30;-1:-1:-1;;;16039:19:134;;;16032:42;16126:18;;;16119:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;16091:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;2815:190:77:-;2898:14;2933:19;2940:1;2943:3;2948;2933:6;:19::i;:::-;2924:28;;2962:36;;;;;;;;;;;;;;-1:-1:-1;;;2962:36:77;;;2991:6;2962:12;:36::i;:::-;2815:190;;;;;:::o;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;16366:2:134;16348:21;;;16405:2;16385:18;;;16378:30;16444:25;16439:2;16424:18;;16417:53;16502:2;16487:18;;16164:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;1546:1263:77:-;1630:14;1671:3;1664;:10;;1656:85;;;;-1:-1:-1;;;1656:85:77;;16718:2:134;1656:85:77;;;16700:21:134;16757:2;16737:18;;;16730:30;16796:34;16776:18;;;16769:62;16867:32;16847:18;;;16840:60;16917:19;;1656:85:77;;;;;;;;1975:3;1970:1;:8;;:20;;;;;1987:3;1982:1;:8;;1970:20;1966:34;;;-1:-1:-1;1999:1:77;1992:8;;1966:34;2011:12;2026:9;2032:3;2026;:9;:::i;:::-;:13;;2038:1;2026:13;:::i;:::-;2011:28;;2234:1;2229;:6;;:18;;;;;2246:1;2239:4;:8;2229:18;2225:38;;;2256:7;2262:1;2256:3;:7;:::i;:::-;2249:14;;;;;2225:38;2282:15;2296:1;-1:-1:-1;;2282:15:77;:::i;:::-;2277:1;:20;;:46;;;;-1:-1:-1;2308:15:77;2322:1;-1:-1:-1;;2308:15:77;:::i;:::-;2301:4;:22;2277:46;2273:82;;;2339:15;2353:1;-1:-1:-1;;2339:15:77;:::i;:::-;2332:23;;:3;:23;:::i;2273:82::-;2459:3;2455:1;:7;2451:352;;;2478:12;2493:7;2497:3;2493:1;:7;:::i;:::-;2478:22;-1:-1:-1;2514:11:77;2528;2535:4;2478:22;2528:11;:::i;:::-;2514:25;;2557:3;2564:1;2557:8;2553:24;;2574:3;2567:10;;;;;;;2553:24;2612:1;2600:9;2606:3;2600;:9;:::i;:::-;:13;;;;:::i;:::-;2591:22;;2464:160;;2451:352;;;2638:3;2634:1;:7;2630:173;;;2657:12;2672:7;2678:1;2672:3;:7;:::i;:::-;2657:22;-1:-1:-1;2693:11:77;2707;2714:4;2657:22;2707:11;:::i;:::-;2693:25;;2736:3;2743:1;2736:8;2732:24;;2753:3;2746:10;;;;;;;2732:24;2779:9;2785:3;2779;:9;:::i;:::-;:13;;2791:1;2779:13;:::i;:::-;2770:22;;2643:160;;2630:173;1646:1163;1546:1263;;;;;:::o;10096:207::-;10172:11;679:42;-1:-1:-1;;;;;10188:36:77;10272:2;10276;10225:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10225:54:77;;;;;;;;;;;;;;-1:-1:-1;;;;;10225:54:77;-1:-1:-1;;;10225:54:77;;;10188:92;;;10225:54;10188:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10096:207:77:o;2409:432:65:-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;17792:51:134;;;-1:-1:-1;;;17859:18:134;;;17852:34;;;;2712:4:65;17902:18:134;;;17895:34;2489:11:65;;1671:64;2586:43;;17765:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5339:592::-;5452:6;5460;5468;5476;5484;5492;5500;5553:3;5541:9;5532:7;5528:23;5524:33;5521:53;;;5570:1;5567;5560:12;5521:53;-1:-1:-1;;5593:23:134;;;5663:2;5648:18;;5635:32;;-1:-1:-1;5714:2:134;5699:18;;5686:32;;5765:2;5750:18;;5737:32;;-1:-1:-1;5816:3:134;5801:19;;5788:33;;-1:-1:-1;5868:3:134;5853:19;;5840:33;;-1:-1:-1;5920:3:134;5905:19;5892:33;;-1:-1:-1;5339:592:134;-1:-1:-1;5339:592:134:o;6310:290::-;6380:6;6433:2;6421:9;6412:7;6408:23;6404:32;6401:52;;;6449:1;6446;6439:12;6401:52;6475:16;;-1:-1:-1;;;;;6520:31:134;;6510:42;;6500:70;;6566:1;6563;6556:12;6813:277;6880:6;6933:2;6921:9;6912:7;6908:23;6904:32;6901:52;;;6949:1;6946;6939:12;6901:52;6981:9;6975:16;7034:5;7027:13;7020:21;7013:5;7010:32;7000:60;;7056:1;7053;7046:12;7095:127;7156:10;7151:3;7147:20;7144:1;7137:31;7187:4;7184:1;7177:15;7211:4;7208:1;7201:15;7227:125;7292:9;;;7313:10;;;7310:36;;;7326:18;;:::i;:::-;7227:125;;;;:::o;7791:380::-;7870:1;7866:12;;;;7913;;;7934:61;;7988:4;7980:6;7976:17;7966:27;;7934:61;8041:2;8033:6;8030:14;8010:18;8007:38;8004:161;;8087:10;8082:3;8078:20;8075:1;8068:31;8122:4;8119:1;8112:15;8150:4;8147:1;8140:15;8004:161;;7791:380;;;:::o;8788:184::-;8858:6;8911:2;8899:9;8890:7;8886:23;8882:32;8879:52;;;8927:1;8924;8917:12;8879:52;-1:-1:-1;8950:16:134;;8788:184;-1:-1:-1;8788:184:134:o;9256:384::-;-1:-1:-1;;;;;;9441:33:134;;9429:46;;9498:13;;9411:3;;9520:74;9498:13;9583:1;9574:11;;9567:4;9555:17;;9520:74;:::i;:::-;9614:16;;;;9632:1;9610:24;;9256:384;-1:-1:-1;;;9256:384:134:o;9645:287::-;9774:3;9812:6;9806:13;9828:66;9887:6;9882:3;9875:4;9867:6;9863:17;9828:66;:::i;:::-;9910:16;;;;;9645:287;-1:-1:-1;;9645:287:134:o;9937:446::-;10187:2;10176:9;10169:21;10226:1;10221:2;10210:9;10206:18;10199:29;-1:-1:-1;;;10259:2:134;10248:9;10244:18;10237:35;10310:3;10303:4;10292:9;10288:20;10281:33;10150:4;10331:46;10372:3;10361:9;10357:19;10349:6;10331:46;:::i;16947:128::-;17014:9;;;17035:11;;;17032:37;;;17049:18;;:::i;17080:209::-;17112:1;17138;17128:132;;17182:10;17177:3;17173:20;17170:1;17163:31;17217:4;17214:1;17207:15;17245:4;17242:1;17235:15;17128:132;-1:-1:-1;17274:9:134;;17080:209::o;17294:291::-;17471:2;17460:9;17453:21;17434:4;17491:45;17532:2;17521:9;17517:18;17509:6;17491:45;:::i;:::-;17483:53;;17572:6;17567:2;17556:9;17552:18;17545:34;17294:291;;;;;:::o", "linkReferences": {} }, "methodIdentifiers": { @@ -633,7 +633,7 @@ "testAreDeployedContracts()": "00036032", "testfuzzLRFormula(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "9e465592" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"iGC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"iCL\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"TCL\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"TCP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"k\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prevscore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"}],\"name\":\"testfuzzLRFormula\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestLRFormula.t.sol\":\"TestLRFuzz\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/TestLRFormula.t.sol\":{\"keccak256\":\"0x7b4728022fe1ca656b636729a160d485063ac4a93fe2a3e206f1a8fca0143814\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b7d493627d9fc203f0f68ae986fc6141f65b8c02dcdfc0ed21001080214ddfbf\",\"dweb:/ipfs/Qmb4sRhcruMM1C2i8u587iytSwLYbPVgtW97Mr9bfHkJWx\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"iGC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"iCL\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"TCL\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"TCP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"k\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prevscore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penalty\",\"type\":\"uint256\"}],\"name\":\"testfuzzLRFormula\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestLRFormula.t.sol\":\"TestLRFuzz\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/TestLRFormula.t.sol\":{\"keccak256\":\"0x7b4728022fe1ca656b636729a160d485063ac4a93fe2a3e206f1a8fca0143814\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b7d493627d9fc203f0f68ae986fc6141f65b8c02dcdfc0ed21001080214ddfbf\",\"dweb:/ipfs/Qmb4sRhcruMM1C2i8u587iytSwLYbPVgtW97Mr9bfHkJWx\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1319,6 +1319,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1383,6 +1391,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1496,10 +1512,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -2036,10 +2052,10 @@ }, "ast": { "absolutePath": "test/TestLRFormula.t.sol", - "id": 74057, + "id": 74843, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "ILocalReputation": [ 1423 @@ -2048,13 +2064,13 @@ 2915 ], "SampleInteractionPlugin": [ - 7122 + 7873 ], "TestLRFuzz": [ - 74056 + 74842 ], "console": [ - 32435 + 33186 ], "groupState": [ 1229 @@ -2067,12 +2083,12 @@ ] }, "nodeType": "SourceUnit", - "src": "39:2433:119", + "src": "39:2433:132", "nodes": [ { - "id": 73861, + "id": 74647, "nodeType": "PragmaDirective", - "src": "39:23:119", + "src": "39:23:132", "nodes": [], "literals": [ "solidity", @@ -2081,24 +2097,24 @@ ] }, { - "id": 73863, + "id": 74649, "nodeType": "ImportDirective", - "src": "64:48:119", + "src": "64:48:132", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 74057, - "sourceUnit": 70241, + "scope": 74843, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 73862, + "id": 74648, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:119", + "referencedDeclaration": 71026, + "src": "72:11:132", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2107,24 +2123,24 @@ "unitAlias": "" }, { - "id": 73865, + "id": 74651, "nodeType": "ImportDirective", - "src": "114:65:119", + "src": "114:65:132", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 74057, + "scope": 74843, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 73864, + "id": 74650, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "122:15:119", + "src": "122:15:132", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2133,37 +2149,37 @@ "unitAlias": "" }, { - "id": 73866, + "id": 74652, "nodeType": "ImportDirective", - "src": "180:43:119", + "src": "180:43:132", "nodes": [], "absolutePath": "contracts/ILocalReputation.sol", "file": "../contracts/ILocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 74057, + "scope": 74843, "sourceUnit": 1424, "symbolAliases": [], "unitAlias": "" }, { - "id": 73868, + "id": 74654, "nodeType": "ImportDirective", - "src": "224:102:119", + "src": "224:102:132", "nodes": [], "absolutePath": "contracts/plugins/interactions/SampleInteractionPlugin.sol", "file": "../contracts/plugins/interactions/SampleInteractionPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 74057, - "sourceUnit": 7123, + "scope": 74843, + "sourceUnit": 7874, "symbolAliases": [ { "foreign": { - "id": 73867, + "id": 74653, "name": "SampleInteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7122, - "src": "232:23:119", + "referencedDeclaration": 7873, + "src": "232:23:132", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2172,33 +2188,33 @@ "unitAlias": "" }, { - "id": 73869, + "id": 74655, "nodeType": "ImportDirective", - "src": "328:31:119", + "src": "328:31:132", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 74057, - "sourceUnit": 32436, + "scope": 74843, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 74056, + "id": 74842, "nodeType": "ContractDefinition", - "src": "361:2110:119", + "src": "361:2110:132", "nodes": [ { - "id": 73874, + "id": 74660, "nodeType": "VariableDeclaration", - "src": "402:28:119", + "src": "402:28:132", "nodes": [], "constant": false, "mutability": "mutable", "name": "LocalRepAlgo", - "nameLocation": "418:12:119", - "scope": 74056, + "nameLocation": "418:12:132", + "scope": 74842, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2206,20 +2222,20 @@ "typeString": "contract LocalReputation" }, "typeName": { - "id": 73873, + "id": 74659, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73872, + "id": 74658, "name": "LocalReputation", "nameLocations": [ - "402:15:119" + "402:15:132" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "402:15:119" + "src": "402:15:132" }, "referencedDeclaration": 2915, - "src": "402:15:119", + "src": "402:15:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2228,53 +2244,53 @@ "visibility": "internal" }, { - "id": 73877, + "id": 74663, "nodeType": "VariableDeclaration", - "src": "436:41:119", + "src": "436:41:132", "nodes": [], "constant": false, "mutability": "mutable", "name": "InteractionPlugin", - "nameLocation": "460:17:119", - "scope": 74056, + "nameLocation": "460:17:132", + "scope": 74842, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 73876, + "id": 74662, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73875, + "id": 74661, "name": "SampleInteractionPlugin", "nameLocations": [ - "436:23:119" + "436:23:132" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "436:23:119" + "referencedDeclaration": 7873, + "src": "436:23:132" }, - "referencedDeclaration": 7122, - "src": "436:23:119", + "referencedDeclaration": 7873, + "src": "436:23:132", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 73879, + "id": 74665, "nodeType": "VariableDeclaration", - "src": "484:20:119", + "src": "484:20:132", "nodes": [], "constant": false, "mutability": "mutable", "name": "taskPluginId", - "nameLocation": "492:12:119", - "scope": 74056, + "nameLocation": "492:12:132", + "scope": 74842, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2282,10 +2298,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73878, + "id": 74664, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "484:7:119", + "src": "484:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2294,15 +2310,15 @@ "visibility": "internal" }, { - "id": 73881, + "id": 74667, "nodeType": "VariableDeclaration", - "src": "510:13:119", + "src": "510:13:132", "nodes": [], "constant": false, "mutability": "mutable", "name": "Admin", - "nameLocation": "518:5:119", - "scope": 74056, + "nameLocation": "518:5:132", + "scope": 74842, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2310,10 +2326,10 @@ "typeString": "address" }, "typeName": { - "id": 73880, + "id": 74666, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:119", + "src": "510:7:132", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2323,30 +2339,30 @@ "visibility": "internal" }, { - "id": 73936, + "id": 74722, "nodeType": "FunctionDefinition", - "src": "530:524:119", + "src": "530:524:132", "nodes": [], "body": { - "id": 73935, + "id": 74721, "nodeType": "Block", - "src": "563:491:119", + "src": "563:491:132", "nodes": [], "statements": [ { "assignments": [ - 73886 + 74672 ], "declarations": [ { "constant": false, - "id": 73886, + "id": 74672, "mutability": "mutable", "name": "time0", - "nameLocation": "581:5:119", + "nameLocation": "581:5:132", "nodeType": "VariableDeclaration", - "scope": 73935, - "src": "573:13:119", + "scope": 74721, + "src": "573:13:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2354,10 +2370,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73885, + "id": 74671, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "573:7:119", + "src": "573:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2366,40 +2382,40 @@ "visibility": "internal" } ], - "id": 73895, + "id": 74681, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73890, + "id": 74676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 73887, + "id": 74673, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "589:5:119", + "src": "589:5:132", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73888, + "id": 74674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "595:9:119", + "memberLocation": "595:9:132", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "589:15:119", + "src": "589:15:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2409,21 +2425,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 73889, + "id": 74675, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "608:1:119", + "src": "608:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "589:20:119", + "src": "589:20:132", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2431,48 +2447,48 @@ }, "falseExpression": { "expression": { - "id": 73892, + "id": 74678, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "625:5:119", + "src": "625:5:132", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 73893, + "id": 74679, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "631:9:119", + "memberLocation": "631:9:132", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "625:15:119", + "src": "625:15:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73894, + "id": 74680, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "589:51:119", + "src": "589:51:132", "trueExpression": { "hexValue": "31363939393939393939", - "id": 73891, + "id": 74677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "612:10:119", + "src": "612:10:132", "typeDescriptions": { "typeIdentifier": "t_rational_1699999999_by_1", "typeString": "int_const 1699999999" @@ -2485,7 +2501,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "573:67:119" + "src": "573:67:132" }, { "expression": { @@ -2495,18 +2511,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 73901, + "id": 74687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 73899, + "id": 74685, "name": "time0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73886, - "src": "658:5:119", + "referencedDeclaration": 74672, + "src": "658:5:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2516,21 +2532,21 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 73900, + "id": 74686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "666:1:119", + "src": "666:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "658:9:119", + "src": "658:9:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2545,33 +2561,33 @@ } ], "expression": { - "id": 73896, + "id": 74682, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "650:2:119", + "referencedDeclaration": 13541, + "src": "650:2:132", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73898, + "id": 74684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "653:4:119", + "memberLocation": "653:4:132", "memberName": "warp", "nodeType": "MemberAccess", - "referencedDeclaration": 23906, - "src": "650:7:119", + "referencedDeclaration": 24657, + "src": "650:7:132", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 73902, + "id": 74688, "isConstant": false, "isLValue": false, "isPure": false, @@ -2580,16 +2596,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "650:18:119", + "src": "650:18:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73903, + "id": 74689, "nodeType": "ExpressionStatement", - "src": "650:18:119" + "src": "650:18:132" }, { "expression": { @@ -2597,33 +2613,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 73904, + "id": 74690, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "679:5:119", + "src": "679:5:132", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_TestLRFuzz_$74056_$", + "typeIdentifier": "t_type$_t_super$_TestLRFuzz_$74842_$", "typeString": "type(contract super TestLRFuzz)" } }, - "id": 73906, + "id": 74692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "685:5:119", + "memberLocation": "685:5:132", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "679:11:119", + "referencedDeclaration": 70929, + "src": "679:11:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 73907, + "id": 74693, "isConstant": false, "isLValue": false, "isPure": false, @@ -2632,31 +2648,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "679:13:119", + "src": "679:13:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73908, + "id": 74694, "nodeType": "ExpressionStatement", - "src": "679:13:119" + "src": "679:13:132" }, { "expression": { - "id": 73914, + "id": 74700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73909, + "id": 74695, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73874, - "src": "703:12:119", + "referencedDeclaration": 74660, + "src": "703:12:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2668,39 +2684,39 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 73912, + "id": 74698, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "718:19:119", + "src": "718:19:132", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LocalReputation_$2915_$", "typeString": "function () returns (contract LocalReputation)" }, "typeName": { - "id": 73911, + "id": 74697, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 73910, + "id": 74696, "name": "LocalReputation", "nameLocations": [ - "722:15:119" + "722:15:132" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "722:15:119" + "src": "722:15:132" }, "referencedDeclaration": 2915, - "src": "722:15:119", + "src": "722:15:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } } }, - "id": 73913, + "id": 74699, "isConstant": false, "isLValue": false, "isPure": false, @@ -2709,22 +2725,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "718:21:119", + "src": "718:21:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "src": "703:36:119", + "src": "703:36:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 73915, + "id": 74701, "nodeType": "ExpressionStatement", - "src": "703:36:119" + "src": "703:36:132" }, { "expression": { @@ -2732,12 +2748,12 @@ { "arguments": [ { - "id": 73921, + "id": 74707, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73874, - "src": "766:12:119", + "referencedDeclaration": 74660, + "src": "766:12:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2751,26 +2767,26 @@ "typeString": "contract LocalReputation" } ], - "id": 73920, + "id": 74706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "758:7:119", + "src": "758:7:132", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73919, + "id": 74705, "name": "address", "nodeType": "ElementaryTypeName", - "src": "758:7:119", + "src": "758:7:132", "typeDescriptions": {} } }, - "id": 73922, + "id": 74708, "isConstant": false, "isLValue": false, "isPure": false, @@ -2779,7 +2795,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "758:21:119", + "src": "758:21:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2788,14 +2804,14 @@ }, { "hexValue": "4c6f63616c526570", - "id": 73923, + "id": 74709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "781:10:119", + "src": "781:10:132", "typeDescriptions": { "typeIdentifier": "t_stringliteral_74a11e5e5ccd92d929e0c2fad99603e46f36685fdae0c11877d61c7e6dc67689", "typeString": "literal_string \"LocalRep\"" @@ -2815,33 +2831,33 @@ } ], "expression": { - "id": 73916, + "id": 74702, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "749:2:119", + "referencedDeclaration": 13541, + "src": "749:2:132", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 73918, + "id": 74704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "752:5:119", + "memberLocation": "752:5:132", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "749:8:119", + "referencedDeclaration": 23909, + "src": "749:8:132", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 73924, + "id": 74710, "isConstant": false, "isLValue": false, "isPure": false, @@ -2850,31 +2866,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "749:43:119", + "src": "749:43:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 73925, + "id": 74711, "nodeType": "ExpressionStatement", - "src": "749:43:119" + "src": "749:43:132" }, { "expression": { - "id": 73933, + "id": 74719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73926, + "id": 74712, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "803:3:119", + "referencedDeclaration": 70567, + "src": "803:3:132", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" @@ -2887,12 +2903,12 @@ { "arguments": [ { - "id": 73930, + "id": 74716, "name": "LocalRepAlgo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73874, - "src": "834:12:119", + "referencedDeclaration": 74660, + "src": "834:12:132", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -2906,26 +2922,26 @@ "typeString": "contract LocalReputation" } ], - "id": 73929, + "id": 74715, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "826:7:119", + "src": "826:7:132", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 73928, + "id": 74714, "name": "address", "nodeType": "ElementaryTypeName", - "src": "826:7:119", + "src": "826:7:132", "typeDescriptions": {} } }, - "id": 73931, + "id": 74717, "isConstant": false, "isLValue": false, "isPure": false, @@ -2934,7 +2950,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "826:21:119", + "src": "826:21:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2949,18 +2965,18 @@ "typeString": "address" } ], - "id": 73927, + "id": 74713, "name": "ILocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1423, - "src": "809:16:119", + "src": "809:16:132", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILocalReputation_$1423_$", "typeString": "type(contract ILocalReputation)" } }, - "id": 73932, + "id": 74718, "isConstant": false, "isLValue": false, "isPure": false, @@ -2969,82 +2985,82 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "809:39:119", + "src": "809:39:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "src": "803:45:119", + "src": "803:45:132", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 73934, + "id": 74720, "nodeType": "ExpressionStatement", - "src": "803:45:119" + "src": "803:45:132" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "539:5:119", + "nameLocation": "539:5:132", "overrides": { - "id": 73883, + "id": 74669, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "554:8:119" + "src": "554:8:132" }, "parameters": { - "id": 73882, + "id": 74668, "nodeType": "ParameterList", "parameters": [], - "src": "544:2:119" + "src": "544:2:132" }, "returnParameters": { - "id": 73884, + "id": 74670, "nodeType": "ParameterList", "parameters": [], - "src": "563:0:119" + "src": "563:0:132" }, - "scope": 74056, + "scope": 74842, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 74055, + "id": 74841, "nodeType": "FunctionDefinition", - "src": "1060:1409:119", + "src": "1060:1409:132", "nodes": [], "body": { - "id": 74054, + "id": 74840, "nodeType": "Block", - "src": "1279:1190:119", + "src": "1279:1190:132", "nodes": [], "statements": [ { "expression": { - "id": 73961, + "id": 74747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73955, + "id": 74741, "name": "iGC", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73938, - "src": "1289:3:119", + "referencedDeclaration": 74724, + "src": "1289:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3055,12 +3071,12 @@ "rightHandSide": { "arguments": [ { - "id": 73957, + "id": 74743, "name": "iGC", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73938, - "src": "1301:3:119", + "referencedDeclaration": 74724, + "src": "1301:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3068,14 +3084,14 @@ }, { "hexValue": "31", - "id": 73958, + "id": 74744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1306:1:119", + "src": "1306:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3084,14 +3100,14 @@ }, { "hexValue": "373030", - "id": 73959, + "id": 74745, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1309:3:119", + "src": "1309:3:132", "typeDescriptions": { "typeIdentifier": "t_rational_700_by_1", "typeString": "int_const 700" @@ -3114,21 +3130,21 @@ "typeString": "int_const 700" } ], - "id": 73956, + "id": 74742, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1295:5:119", + "referencedDeclaration": 22730, + "src": "1295:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 73960, + "id": 74746, "isConstant": false, "isLValue": false, "isPure": false, @@ -3137,37 +3153,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1295:18:119", + "src": "1295:18:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1289:24:119", + "src": "1289:24:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73962, + "id": 74748, "nodeType": "ExpressionStatement", - "src": "1289:24:119" + "src": "1289:24:132" }, { "expression": { - "id": 73969, + "id": 74755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73963, + "id": 74749, "name": "iCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73940, - "src": "1323:3:119", + "referencedDeclaration": 74726, + "src": "1323:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3178,12 +3194,12 @@ "rightHandSide": { "arguments": [ { - "id": 73965, + "id": 74751, "name": "iCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73940, - "src": "1335:3:119", + "referencedDeclaration": 74726, + "src": "1335:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3191,14 +3207,14 @@ }, { "hexValue": "31", - "id": 73966, + "id": 74752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1340:1:119", + "src": "1340:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3207,14 +3223,14 @@ }, { "hexValue": "3130", - "id": 73967, + "id": 74753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1343:2:119", + "src": "1343:2:132", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" @@ -3237,21 +3253,21 @@ "typeString": "int_const 10" } ], - "id": 73964, + "id": 74750, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1329:5:119", + "referencedDeclaration": 22730, + "src": "1329:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 73968, + "id": 74754, "isConstant": false, "isLValue": false, "isPure": false, @@ -3260,37 +3276,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1329:17:119", + "src": "1329:17:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1323:23:119", + "src": "1323:23:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73970, + "id": 74756, "nodeType": "ExpressionStatement", - "src": "1323:23:119" + "src": "1323:23:132" }, { "expression": { - "id": 73977, + "id": 74763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73971, + "id": 74757, "name": "TCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73942, - "src": "1356:3:119", + "referencedDeclaration": 74728, + "src": "1356:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3301,12 +3317,12 @@ "rightHandSide": { "arguments": [ { - "id": 73973, + "id": 74759, "name": "TCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73942, - "src": "1368:3:119", + "referencedDeclaration": 74728, + "src": "1368:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3314,14 +3330,14 @@ }, { "hexValue": "3130", - "id": 73974, + "id": 74760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1373:2:119", + "src": "1373:2:132", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" @@ -3330,14 +3346,14 @@ }, { "hexValue": "33303030", - "id": 73975, + "id": 74761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1377:4:119", + "src": "1377:4:132", "typeDescriptions": { "typeIdentifier": "t_rational_3000_by_1", "typeString": "int_const 3000" @@ -3360,21 +3376,21 @@ "typeString": "int_const 3000" } ], - "id": 73972, + "id": 74758, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1362:5:119", + "referencedDeclaration": 22730, + "src": "1362:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 73976, + "id": 74762, "isConstant": false, "isLValue": false, "isPure": false, @@ -3383,37 +3399,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1362:20:119", + "src": "1362:20:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1356:26:119", + "src": "1356:26:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73978, + "id": 74764, "nodeType": "ExpressionStatement", - "src": "1356:26:119" + "src": "1356:26:132" }, { "expression": { - "id": 73985, + "id": 74771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73979, + "id": 74765, "name": "TCP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73944, - "src": "1392:3:119", + "referencedDeclaration": 74730, + "src": "1392:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3424,12 +3440,12 @@ "rightHandSide": { "arguments": [ { - "id": 73981, + "id": 74767, "name": "TCP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73944, - "src": "1404:3:119", + "referencedDeclaration": 74730, + "src": "1404:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3437,14 +3453,14 @@ }, { "hexValue": "32", - "id": 73982, + "id": 74768, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1409:1:119", + "src": "1409:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -3453,14 +3469,14 @@ }, { "hexValue": "3730303030", - "id": 73983, + "id": 74769, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1412:5:119", + "src": "1412:5:132", "typeDescriptions": { "typeIdentifier": "t_rational_70000_by_1", "typeString": "int_const 70000" @@ -3483,21 +3499,21 @@ "typeString": "int_const 70000" } ], - "id": 73980, + "id": 74766, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1398:5:119", + "referencedDeclaration": 22730, + "src": "1398:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 73984, + "id": 74770, "isConstant": false, "isLValue": false, "isPure": false, @@ -3506,37 +3522,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1398:20:119", + "src": "1398:20:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1392:26:119", + "src": "1392:26:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73986, + "id": 74772, "nodeType": "ExpressionStatement", - "src": "1392:26:119" + "src": "1392:26:132" }, { "expression": { - "id": 73993, + "id": 74779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73987, + "id": 74773, "name": "penalty", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73950, - "src": "1429:7:119", + "referencedDeclaration": 74736, + "src": "1429:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3547,12 +3563,12 @@ "rightHandSide": { "arguments": [ { - "id": 73989, + "id": 74775, "name": "penalty", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73950, - "src": "1445:7:119", + "referencedDeclaration": 74736, + "src": "1445:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3560,14 +3576,14 @@ }, { "hexValue": "32", - "id": 73990, + "id": 74776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:119", + "src": "1454:1:132", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -3576,14 +3592,14 @@ }, { "hexValue": "3430", - "id": 73991, + "id": 74777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1457:2:119", + "src": "1457:2:132", "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", "typeString": "int_const 40" @@ -3606,21 +3622,21 @@ "typeString": "int_const 40" } ], - "id": 73988, + "id": 74774, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1439:5:119", + "referencedDeclaration": 22730, + "src": "1439:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 73992, + "id": 74778, "isConstant": false, "isLValue": false, "isPure": false, @@ -3629,37 +3645,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1439:21:119", + "src": "1439:21:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1429:31:119", + "src": "1429:31:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 73994, + "id": 74780, "nodeType": "ExpressionStatement", - "src": "1429:31:119" + "src": "1429:31:132" }, { "expression": { - "id": 74001, + "id": 74787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 73995, + "id": 74781, "name": "k", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73946, - "src": "1470:1:119", + "referencedDeclaration": 74732, + "src": "1470:1:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3670,12 +3686,12 @@ "rightHandSide": { "arguments": [ { - "id": 73997, + "id": 74783, "name": "k", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73946, - "src": "1480:1:119", + "referencedDeclaration": 74732, + "src": "1480:1:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3683,14 +3699,14 @@ }, { "hexValue": "3330", - "id": 73998, + "id": 74784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1483:2:119", + "src": "1483:2:132", "typeDescriptions": { "typeIdentifier": "t_rational_30_by_1", "typeString": "int_const 30" @@ -3699,14 +3715,14 @@ }, { "hexValue": "3430", - "id": 73999, + "id": 74785, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1487:2:119", + "src": "1487:2:132", "typeDescriptions": { "typeIdentifier": "t_rational_40_by_1", "typeString": "int_const 40" @@ -3729,21 +3745,21 @@ "typeString": "int_const 40" } ], - "id": 73996, + "id": 74782, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1474:5:119", + "referencedDeclaration": 22730, + "src": "1474:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 74000, + "id": 74786, "isConstant": false, "isLValue": false, "isPure": false, @@ -3752,37 +3768,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1474:16:119", + "src": "1474:16:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1470:20:119", + "src": "1470:20:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74002, + "id": 74788, "nodeType": "ExpressionStatement", - "src": "1470:20:119" + "src": "1470:20:132" }, { "expression": { - "id": 74009, + "id": 74795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74003, + "id": 74789, "name": "prevscore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73948, - "src": "1501:9:119", + "referencedDeclaration": 74734, + "src": "1501:9:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3793,12 +3809,12 @@ "rightHandSide": { "arguments": [ { - "id": 74005, + "id": 74791, "name": "prevscore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73948, - "src": "1519:9:119", + "referencedDeclaration": 74734, + "src": "1519:9:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3806,14 +3822,14 @@ }, { "hexValue": "302e3031", - "id": 74006, + "id": 74792, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1530:10:119", + "src": "1530:10:132", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_10000000000000000_by_1", @@ -3823,14 +3839,14 @@ }, { "hexValue": "39", - "id": 74007, + "id": 74793, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1542:7:119", + "src": "1542:7:132", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_9000000000000000000_by_1", @@ -3854,21 +3870,21 @@ "typeString": "int_const 9000000000000000000" } ], - "id": 74004, + "id": 74790, "name": "bound", "nodeType": "Identifier", "overloadedDeclarations": [ - 21979, - 22129 + 22730, + 22880 ], - "referencedDeclaration": 21979, - "src": "1513:5:119", + "referencedDeclaration": 22730, + "src": "1513:5:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) view returns (uint256)" } }, - "id": 74008, + "id": 74794, "isConstant": false, "isLValue": false, "isPure": false, @@ -3877,22 +3893,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1513:37:119", + "src": "1513:37:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1501:49:119", + "src": "1501:49:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74010, + "id": 74796, "nodeType": "ExpressionStatement", - "src": "1501:49:119" + "src": "1501:49:132" }, { "expression": { @@ -3902,18 +3918,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 74016, + "id": 74802, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 74014, + "id": 74800, "name": "iCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73940, - "src": "1571:3:119", + "referencedDeclaration": 74726, + "src": "1571:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3922,18 +3938,18 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 74015, + "id": 74801, "name": "TCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73942, - "src": "1577:3:119", + "referencedDeclaration": 74728, + "src": "1577:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1571:9:119", + "src": "1571:9:132", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3948,33 +3964,33 @@ } ], "expression": { - "id": 74011, + "id": 74797, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1561:2:119", + "referencedDeclaration": 13541, + "src": "1561:2:132", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74013, + "id": 74799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1564:6:119", + "memberLocation": "1564:6:132", "memberName": "assume", "nodeType": "MemberAccess", - "referencedDeclaration": 23836, - "src": "1561:9:119", + "referencedDeclaration": 24587, + "src": "1561:9:132", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure external" } }, - "id": 74017, + "id": 74803, "isConstant": false, "isLValue": false, "isPure": false, @@ -3983,16 +3999,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1561:20:119", + "src": "1561:20:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74018, + "id": 74804, "nodeType": "ExpressionStatement", - "src": "1561:20:119" + "src": "1561:20:132" }, { "expression": { @@ -4002,18 +4018,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 74024, + "id": 74810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 74022, + "id": 74808, "name": "iGC", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73938, - "src": "1601:3:119", + "referencedDeclaration": 74724, + "src": "1601:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4022,18 +4038,18 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 74023, + "id": 74809, "name": "TCP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73944, - "src": "1607:3:119", + "referencedDeclaration": 74730, + "src": "1607:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1601:9:119", + "src": "1601:9:132", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4048,33 +4064,33 @@ } ], "expression": { - "id": 74019, + "id": 74805, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1591:2:119", + "referencedDeclaration": 13541, + "src": "1591:2:132", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74021, + "id": 74807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1594:6:119", + "memberLocation": "1594:6:132", "memberName": "assume", "nodeType": "MemberAccess", - "referencedDeclaration": 23836, - "src": "1591:9:119", + "referencedDeclaration": 24587, + "src": "1591:9:132", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure external" } }, - "id": 74025, + "id": 74811, "isConstant": false, "isLValue": false, "isPure": false, @@ -4083,31 +4099,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1591:20:119", + "src": "1591:20:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74026, + "id": 74812, "nodeType": "ExpressionStatement", - "src": "1591:20:119" + "src": "1591:20:132" }, { "expression": { - "id": 74038, + "id": 74824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74027, + "id": 74813, "name": "score", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73953, - "src": "1622:5:119", + "referencedDeclaration": 74739, + "src": "1622:5:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4118,84 +4134,84 @@ "rightHandSide": { "arguments": [ { - "id": 74030, + "id": 74816, "name": "iGC", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73938, - "src": "1659:3:119", + "referencedDeclaration": 74724, + "src": "1659:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74031, + "id": 74817, "name": "iCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73940, - "src": "1664:3:119", + "referencedDeclaration": 74726, + "src": "1664:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74032, + "id": 74818, "name": "TCL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73942, - "src": "1669:3:119", + "referencedDeclaration": 74728, + "src": "1669:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74033, + "id": 74819, "name": "TCP", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73944, - "src": "1674:3:119", + "referencedDeclaration": 74730, + "src": "1674:3:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74034, + "id": 74820, "name": "k", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73946, - "src": "1679:1:119", + "referencedDeclaration": 74732, + "src": "1679:1:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74035, + "id": 74821, "name": "prevscore", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73948, - "src": "1682:9:119", + "referencedDeclaration": 74734, + "src": "1682:9:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 74036, + "id": 74822, "name": "penalty", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73950, - "src": "1693:7:119", + "referencedDeclaration": 74736, + "src": "1693:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4234,33 +4250,33 @@ } ], "expression": { - "id": 74028, + "id": 74814, "name": "iLR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69781, - "src": "1630:3:119", + "referencedDeclaration": 70567, + "src": "1630:3:132", "typeDescriptions": { "typeIdentifier": "t_contract$_ILocalReputation_$1423", "typeString": "contract ILocalReputation" } }, - "id": 74029, + "id": 74815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1634:24:119", + "memberLocation": "1634:24:132", "memberName": "calculateLocalReputation", "nodeType": "MemberAccess", "referencedDeclaration": 1398, - "src": "1630:28:119", + "src": "1630:28:132", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256) pure external returns (uint256)" } }, - "id": 74037, + "id": 74823, "isConstant": false, "isLValue": false, "isPure": false, @@ -4269,22 +4285,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1630:71:119", + "src": "1630:71:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1622:79:119", + "src": "1622:79:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74039, + "id": 74825, "nodeType": "ExpressionStatement", - "src": "1622:79:119" + "src": "1622:79:132" }, { "documentation": "@dev implement conditional CI profile skip", @@ -4295,18 +4311,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 74043, + "id": 74829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 74041, + "id": 74827, "name": "score", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73953, - "src": "2363:5:119", + "referencedDeclaration": 74739, + "src": "2363:5:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4316,14 +4332,14 @@ "operator": "<=", "rightExpression": { "hexValue": "3130", - "id": 74042, + "id": 74828, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2372:8:119", + "src": "2372:8:132", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_10000000000000000000_by_1", @@ -4331,7 +4347,7 @@ }, "value": "10" }, - "src": "2363:17:119", + "src": "2363:17:132", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4339,14 +4355,14 @@ }, { "hexValue": "6578706563746564206d6178203130", - "id": 74044, + "id": 74830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2382:17:119", + "src": "2382:17:132", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d061f3606caacb93a93133cd54d5d97311aa6509ea49bf8cb98ee280b18bfdfe", "typeString": "literal_string \"expected max 10\"" @@ -4365,21 +4381,21 @@ "typeString": "literal_string \"expected max 10\"" } ], - "id": 74040, + "id": 74826, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2352:10:119", + "referencedDeclaration": 11481, + "src": "2352:10:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 74045, + "id": 74831, "isConstant": false, "isLValue": false, "isPure": false, @@ -4388,16 +4404,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2352:48:119", + "src": "2352:48:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74046, + "id": 74832, "nodeType": "ExpressionStatement", - "src": "2352:48:119" + "src": "2352:48:132" }, { "expression": { @@ -4407,18 +4423,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 74050, + "id": 74836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 74048, + "id": 74834, "name": "score", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73953, - "src": "2421:5:119", + "referencedDeclaration": 74739, + "src": "2421:5:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4428,14 +4444,14 @@ "operator": ">=", "rightExpression": { "hexValue": "302e3031", - "id": 74049, + "id": 74835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2430:10:119", + "src": "2430:10:132", "subdenomination": "ether", "typeDescriptions": { "typeIdentifier": "t_rational_10000000000000000_by_1", @@ -4443,7 +4459,7 @@ }, "value": "0.01" }, - "src": "2421:19:119", + "src": "2421:19:132", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4451,14 +4467,14 @@ }, { "hexValue": "6578706563746564206d696e20302e3031", - "id": 74051, + "id": 74837, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2442:19:119", + "src": "2442:19:132", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fe72baf7719d6926e80a94cd87bd1624121678f5ac108481ab5a116dec5cd756", "typeString": "literal_string \"expected min 0.01\"" @@ -4477,21 +4493,21 @@ "typeString": "literal_string \"expected min 0.01\"" } ], - "id": 74047, + "id": 74833, "name": "assertTrue", "nodeType": "Identifier", "overloadedDeclarations": [ - 10709, - 10730 + 11460, + 11481 ], - "referencedDeclaration": 10730, - "src": "2410:10:119", + "referencedDeclaration": 11481, + "src": "2410:10:132", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory)" } }, - "id": 74052, + "id": 74838, "isConstant": false, "isLValue": false, "isPure": false, @@ -4500,16 +4516,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2410:52:119", + "src": "2410:52:132", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74053, + "id": 74839, "nodeType": "ExpressionStatement", - "src": "2410:52:119" + "src": "2410:52:132" } ] }, @@ -4518,20 +4534,20 @@ "kind": "function", "modifiers": [], "name": "testfuzzLRFormula", - "nameLocation": "1069:17:119", + "nameLocation": "1069:17:132", "parameters": { - "id": 73951, + "id": 74737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 73938, + "id": 74724, "mutability": "mutable", "name": "iGC", - "nameLocation": "1104:3:119", + "nameLocation": "1104:3:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1096:11:119", + "scope": 74841, + "src": "1096:11:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4539,10 +4555,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73937, + "id": 74723, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1096:7:119", + "src": "1096:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4552,13 +4568,13 @@ }, { "constant": false, - "id": 73940, + "id": 74726, "mutability": "mutable", "name": "iCL", - "nameLocation": "1125:3:119", + "nameLocation": "1125:3:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1117:11:119", + "scope": 74841, + "src": "1117:11:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4566,10 +4582,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73939, + "id": 74725, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1117:7:119", + "src": "1117:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4579,13 +4595,13 @@ }, { "constant": false, - "id": 73942, + "id": 74728, "mutability": "mutable", "name": "TCL", - "nameLocation": "1146:3:119", + "nameLocation": "1146:3:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1138:11:119", + "scope": 74841, + "src": "1138:11:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4593,10 +4609,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73941, + "id": 74727, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1138:7:119", + "src": "1138:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4606,13 +4622,13 @@ }, { "constant": false, - "id": 73944, + "id": 74730, "mutability": "mutable", "name": "TCP", - "nameLocation": "1167:3:119", + "nameLocation": "1167:3:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1159:11:119", + "scope": 74841, + "src": "1159:11:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4620,10 +4636,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73943, + "id": 74729, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1159:7:119", + "src": "1159:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4633,13 +4649,13 @@ }, { "constant": false, - "id": 73946, + "id": 74732, "mutability": "mutable", "name": "k", - "nameLocation": "1188:1:119", + "nameLocation": "1188:1:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1180:9:119", + "scope": 74841, + "src": "1180:9:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4647,10 +4663,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73945, + "id": 74731, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1180:7:119", + "src": "1180:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4660,13 +4676,13 @@ }, { "constant": false, - "id": 73948, + "id": 74734, "mutability": "mutable", "name": "prevscore", - "nameLocation": "1207:9:119", + "nameLocation": "1207:9:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1199:17:119", + "scope": 74841, + "src": "1199:17:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4674,10 +4690,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73947, + "id": 74733, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1199:7:119", + "src": "1199:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4687,13 +4703,13 @@ }, { "constant": false, - "id": 73950, + "id": 74736, "mutability": "mutable", "name": "penalty", - "nameLocation": "1234:7:119", + "nameLocation": "1234:7:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1226:15:119", + "scope": 74841, + "src": "1226:15:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4701,10 +4717,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73949, + "id": 74735, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1226:7:119", + "src": "1226:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4713,21 +4729,21 @@ "visibility": "internal" } ], - "src": "1086:161:119" + "src": "1086:161:132" }, "returnParameters": { - "id": 73954, + "id": 74740, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 73953, + "id": 74739, "mutability": "mutable", "name": "score", - "nameLocation": "1272:5:119", + "nameLocation": "1272:5:132", "nodeType": "VariableDeclaration", - "scope": 74055, - "src": "1264:13:119", + "scope": 74841, + "src": "1264:13:132", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4735,10 +4751,10 @@ "typeString": "uint256" }, "typeName": { - "id": 73952, + "id": 74738, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1264:7:119", + "src": "1264:7:132", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4747,9 +4763,9 @@ "visibility": "internal" } ], - "src": "1263:15:119" + "src": "1263:15:132" }, - "scope": 74056, + "scope": 74842, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -4759,54 +4775,54 @@ "baseContracts": [ { "baseName": { - "id": 73870, + "id": 74656, "name": "DeploysInit", "nameLocations": [ - "384:11:119" + "384:11:132" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "384:11:119" + "referencedDeclaration": 71026, + "src": "384:11:132" }, - "id": 73871, + "id": 74657, "nodeType": "InheritanceSpecifier", - "src": "384:11:119" + "src": "384:11:132" } ], "canonicalName": "TestLRFuzz", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 74056, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 74842, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "TestLRFuzz", - "nameLocation": "370:10:119", - "scope": 74057, + "nameLocation": "370:10:132", + "scope": 74843, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 119 + "id": 132 } \ No newline at end of file diff --git a/out/TestModuleLess.t.sol/ModuleSkipTemp.json b/out/TestModuleLess.t.sol/ModuleSkipTemp.json index 23ee646e..e8d799dc 100644 --- a/out/TestModuleLess.t.sol/ModuleSkipTemp.json +++ b/out/TestModuleLess.t.sol/ModuleSkipTemp.json @@ -573,13 +573,13 @@ } ], "bytecode": { - "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201366880620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001085760003560e01c806366d9a9a011620000a3578063b5508aa9116200006e578063b5508aa914620001b8578063ba414fa614620001c2578063e20c9f7114620001dd578063fa7626d414620001e757600080fd5b806366d9a9a0146200017c57806385226c811462000195578063916a17c614620001ae578063ab2e124b146200015e57600080fd5b80632ade388011620000e45780632ade3880146200014557806333383306146200015e5780633e5e3c2314620001685780633f7286f4146200017257600080fd5b8062036032146200010d5780630a9254e414620001195780631ed7831c1462000123575b600080fd5b62000117620001f5565b005b6200011762000589565b6200012d62000f38565b6040516200013c919062002648565b60405180910390f35b6200014f62000f9c565b6040516200013c9190620026eb565b62000117620010ea565b6200012d620012a4565b6200012d62001306565b6200018662001368565b6040516200013c9190620027b1565b6200019f62001452565b6040516200013c919062002868565b620001866200152c565b6200019f62001616565b620001cc620016f0565b60405190151581526020016200013c565b6200012d6200181d565b600754620001cc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200023f9160016001600160a01b039091163b11906200187f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200028a9160026001600160a01b039091163b11906200187f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002d49160046001600160a01b039091163b11906200187f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200031e9160056001600160a01b039091163b11906200187f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003679160066001600160a01b039091163b11906200187f565b601e54602454604080516341dcea9160e01b815290516200040d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620028ce565b6001600160a01b0316146040518060600160405280602881526020016201360b602891396200187f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004c392919091169063adcee6e390602401602060405180830381865afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062002900565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200187f565b6200058760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c9190620028ce565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200187f565b565b62000593620018cd565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692506200061e9150620025ca565b6001600160a01b039091168152602001604051809103906000f0801580156200064b573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260076044820152660706c7567696e360cc1b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200074057600080fd5b505af115801562000755573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620007769150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620007a3573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3160c81b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200082a57600080fd5b505af11580156200083f573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620008ce9150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620008fb573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600760448201526638363ab3b4b71960c91b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200098257600080fd5b505af115801562000997573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b158015620009f057600080fd5b505af115801562000a05573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000a269150620025ca565b6001600160a01b039091168152602001604051809103906000f08015801562000a53573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3360c81b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562000ada57600080fd5b505af115801562000aef573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260609250600080516020620135eb833981519152915063ca669fa790602401600060405180830381600087803b15801562000b4b57600080fd5b505af115801562000b60573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000ba39290911690600090600190879060040162002961565b6020604051808303816000875af115801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be99190620029e9565b602c5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000c4157600080fd5b505af115801562000c56573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000c999290911690600090600190879060040162002a03565b6020604051808303816000875af115801562000cb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cdf9190620029e9565b602d55604080516002808252606082018352909160208301908036833701905050905060018160008151811062000d1a5762000d1a62002a72565b60200260200101818152505060028160018151811062000d3e5762000d3e62002a72565b602090810291909101015260255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000df69290911690600090600190879060040162002961565b6020604051808303816000875af115801562000e16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e3c9190620029e9565b602e5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000e9457600080fd5b505af115801562000ea9573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000eec9290911690600390600190879060040162002a88565b6020604051808303816000875af115801562000f0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f329190620029e9565b602f5550565b6060601480548060200260200160405190810160405280929190818152602001828054801562000f9257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000f73575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620010e157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010c9578382906000526020600020018054620010359062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620010639062002afd565b8015620010b45780601f106200108857610100808354040283529160200191620010b4565b820191906000526020600020905b8154815290600101906020018083116200109657829003601f168201915b50505050508152602001906001019062001013565b50505050815250508152602001906001019062000fc0565b50505050905090565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b1580156200113f57600080fd5b505af115801562001154573d6000803e3d6000fd5b5050601e54603154602d54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b158015620011ad57600080fd5b505af1158015620011c2573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200121b57600080fd5b505af115801562001230573d6000803e3d6000fd5b5050601e54603254602e54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b1580156200128957600080fd5b505af11580156200129e573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200143957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013fa5790505b505050505081525050815260200190600101906200138c565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620010e1578382906000526020600020018054620014989062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620014c69062002afd565b8015620015175780601f10620014eb5761010080835404028352916020019162001517565b820191906000526020600020905b815481529060010190602001808311620014f957829003601f168201915b50505050508152602001906001019062001476565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015fd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015be5790505b5050505050815250508152602001906001019062001550565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620010e15783829060005260206000200180546200165c9062002afd565b80601f01602080910402602001604051908101604052809291908181526020018280546200168a9062002afd565b8015620016db5780601f10620016af57610100808354040283529160200191620016db565b820191906000526020600020905b815481529060010190602001808311620016bd57829003601f168201915b5050505050815260200190600101906200163a565b600754600090610100900460ff1615620017135750600754610100900460ff1690565b6000600080516020620135eb8339815191523b15620018185760408051600080516020620135eb833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200179a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b39565b60408051601f1981840301815290829052620017b69162002b6c565b6000604051808303816000865af19150503d8060008114620017f5576040519150601f19603f3d011682016040523d82523d6000602084013e620017fa565b606091505b509150508080602001905181019062001814919062002900565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b81620018c9577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018b6919062002b8a565b60405180910390a1620018c98262002446565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200195e57600080fd5b505af115801562001973573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620135eb833981519152925063c657c7189150608401600060405180830381600087803b15801562001a0857600080fd5b505af115801562001a1d573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620135eb833981519152925063c657c7189150608401600060405180830381600087803b15801562001ab257600080fd5b505af115801562001ac7573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001b6857600080fd5b505af115801562001b7d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620135eb83398151915292506306447d569150602401600060405180830381600087803b15801562001bd657600080fd5b505af115801562001beb573d6000803e3d6000fd5b5050505060405162001bfd90620025d8565b604051809103906000f08015801562001c1a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001ca457600080fd5b505af115801562001cb9573d6000803e3d6000fd5b5050505060405162001ccb90620025e6565b604051809103906000f08015801562001ce8573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001d7157600080fd5b505af115801562001d86573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001dd457600080fd5b505af115801562001de9573d6000803e3d6000fd5b5050505060405162001dfb90620025f4565b604051809103906000f08015801562001e18573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001e9e57600080fd5b505af115801562001eb3573d6000803e3d6000fd5b5050505060405162001ec59062002602565b604051809103906000f08015801562001ee2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001f6c57600080fd5b505af115801562001f81573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fa2915062002610565b6001600160a01b039091168152602001604051809103906000f08015801562001fcf573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200205e57600080fd5b505af115801562002073573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200209491506200261e565b6001600160a01b039091168152602001604051809103906000f080158015620020c1573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200215057600080fd5b505af115801562002165573d6000803e3d6000fd5b5050505060405162002177906200262c565b604051809103906000f08015801562002194573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620021f457600080fd5b505af115801562002209573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200223a906200263a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200227f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200230c57600080fd5b505af115801562002321573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200239d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c39190620028ce565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620135eb833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200242a57600080fd5b505af11580156200243f573d6000803e3d6000fd5b5050505050565b80620024be577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024ac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620024be620024c1565b50565b600080516020620135eb8339815191523b15620025b95760408051600080516020620135eb833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002554929160200162002b39565b60408051601f1981840301815290829052620025709162002b6c565b6000604051808303816000865af19150503d8060008114620025af576040519150601f19603f3d011682016040523d82523d6000602084013e620025b4565b606091505b505050505b6007805461ff001916610100179055565b6109268062002bbc83390190565b61012080620034e283390190565b610c72806200360283390190565b613723806200427483390190565b6123c2806200799783390190565b6110db8062009d5983390190565b613043806200ae3483390190565b6137d5806200de7783390190565b611f9f806201164c83390190565b6020808252825182820181905260009190848201906040850190845b818110156200268b5783516001600160a01b03168352928401929184019160010162002664565b50909695505050505050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620027a157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200278a57605f1989850301835262002777848651620026bd565b948e01949350918d019160010162002758565b505050978a01979450509188019160010162002712565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200285957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028435783516001600160e01b0319168252928b019260019290920191908b019062002817565b50978a01979550505091870191600101620027d9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028c157603f19888603018452620028ae858351620026bd565b945092850192908501906001016200288f565b5092979650505050505050565b600060208284031215620028e157600080fd5b81516001600160a01b0381168114620028f957600080fd5b9392505050565b6000602082840312156200291357600080fd5b81518015158114620028f957600080fd5b600081518084526020808501945080840160005b83811015620029565781518752958201959082019060010162002938565b509495945050505050565b60018060a01b038516815260a06020820152602e60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e60c08201526d32b2b21036b7b232b930ba34b7b760911b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b979650505050505050565b600060208284031215620029fc57600080fd5b5051919050565b60018060a01b038516815260a06020820152601a60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461203200000000000060c0820152836040820152821515606082015260e06080820152600062002a6860e083018462002924565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b038516815260a06020820152602660a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206e6f742064757060c0820152656c696361746560d01b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b600181811c9082168062002b1257607f821691505b60208210810362002b3357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002b5e81600485016020870162002697565b919091016004019392505050565b6000825162002b8081846020870162002697565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620028f96080830184620026bd56fe608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220c0bff6f14a1813f5b47c1697e885e6c22ca905600f216fa9a6d82569986f2d1564736f6c63430008130033", - "sourceMap": "298:2288:120:-:0;;;1572:26:52;;;1594:4;-1:-1:-1;;1572:26:52;;;;;;;;3126:44:56;;;;;;;;;;;1133:70:114;;;-1:-1:-1;;;;;;1133:70:114;;;;;298:2288:120;;;;;;;;;;;;;;;;", + "object": "0x608060405260078054600160ff199182168117909255600b80549091169091179055602580546001600160a01b03191673ce2595302eeb80cf8c4ea3f3a3f713309f617e8617905534801561005357600080fd5b506201384980620000656000396000f3fe60806040523480156200001157600080fd5b5060043610620001085760003560e01c806366d9a9a011620000a3578063b5508aa9116200006e578063b5508aa914620001b8578063ba414fa614620001c2578063e20c9f7114620001dd578063fa7626d414620001e757600080fd5b806366d9a9a0146200017c57806385226c811462000195578063916a17c614620001ae578063ab2e124b146200015e57600080fd5b80632ade388011620000e45780632ade3880146200014557806333383306146200015e5780633e5e3c2314620001685780633f7286f4146200017257600080fd5b8062036032146200010d5780630a9254e414620001195780631ed7831c1462000123575b600080fd5b62000117620001f5565b005b6200011762000589565b6200012d62000f38565b6040516200013c919062002648565b60405180910390f35b6200014f62000f9c565b6040516200013c9190620026eb565b62000117620010ea565b6200012d620012a4565b6200012d62001306565b6200018662001368565b6040516200013c9190620027b1565b6200019f62001452565b6040516200013c919062002868565b620001866200152c565b6200019f62001616565b620001cc620016f0565b60405190151581526020016200013c565b6200012d6200181d565b600754620001cc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200023f9160016001600160a01b039091163b11906200187f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200028a9160026001600160a01b039091163b11906200187f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002d49160046001600160a01b039091163b11906200187f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200031e9160056001600160a01b039091163b11906200187f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003679160066001600160a01b039091163b11906200187f565b601e54602454604080516341dcea9160e01b815290516200040d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620028ce565b6001600160a01b031614604051806060016040528060288152602001620137ec602891396200187f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004c392919091169063adcee6e390602401602060405180830381865afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062002900565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200187f565b6200058760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c9190620028ce565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200187f565b565b62000593620018cd565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692506200061e9150620025ca565b6001600160a01b039091168152602001604051809103906000f0801580156200064b573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260076044820152660706c7567696e360cc1b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200074057600080fd5b505af115801562000755573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620007769150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620007a3573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3160c81b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200082a57600080fd5b505af11580156200083f573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620008ce9150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620008fb573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600760448201526638363ab3b4b71960c91b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200098257600080fd5b505af115801562000997573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b158015620009f057600080fd5b505af115801562000a05573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000a269150620025ca565b6001600160a01b039091168152602001604051809103906000f08015801562000a53573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3360c81b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562000ada57600080fd5b505af115801562000aef573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260609250600080516020620137cc833981519152915063ca669fa790602401600060405180830381600087803b15801562000b4b57600080fd5b505af115801562000b60573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000ba39290911690600090600190879060040162002961565b6020604051808303816000875af115801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be99190620029e9565b602c5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000c4157600080fd5b505af115801562000c56573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000c999290911690600090600190879060040162002a03565b6020604051808303816000875af115801562000cb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cdf9190620029e9565b602d55604080516002808252606082018352909160208301908036833701905050905060018160008151811062000d1a5762000d1a62002a72565b60200260200101818152505060028160018151811062000d3e5762000d3e62002a72565b602090810291909101015260255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000df69290911690600090600190879060040162002961565b6020604051808303816000875af115801562000e16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e3c9190620029e9565b602e5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000e9457600080fd5b505af115801562000ea9573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000eec9290911690600390600190879060040162002a88565b6020604051808303816000875af115801562000f0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f329190620029e9565b602f5550565b6060601480548060200260200160405190810160405280929190818152602001828054801562000f9257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000f73575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620010e157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010c9578382906000526020600020018054620010359062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620010639062002afd565b8015620010b45780601f106200108857610100808354040283529160200191620010b4565b820191906000526020600020905b8154815290600101906020018083116200109657829003601f168201915b50505050508152602001906001019062001013565b50505050815250508152602001906001019062000fc0565b50505050905090565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b1580156200113f57600080fd5b505af115801562001154573d6000803e3d6000fd5b5050601e54603154602d54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b158015620011ad57600080fd5b505af1158015620011c2573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200121b57600080fd5b505af115801562001230573d6000803e3d6000fd5b5050601e54603254602e54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b1580156200128957600080fd5b505af11580156200129e573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200143957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013fa5790505b505050505081525050815260200190600101906200138c565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620010e1578382906000526020600020018054620014989062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620014c69062002afd565b8015620015175780601f10620014eb5761010080835404028352916020019162001517565b820191906000526020600020905b815481529060010190602001808311620014f957829003601f168201915b50505050508152602001906001019062001476565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015fd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015be5790505b5050505050815250508152602001906001019062001550565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620010e15783829060005260206000200180546200165c9062002afd565b80601f01602080910402602001604051908101604052809291908181526020018280546200168a9062002afd565b8015620016db5780601f10620016af57610100808354040283529160200191620016db565b820191906000526020600020905b815481529060010190602001808311620016bd57829003601f168201915b5050505050815260200190600101906200163a565b600754600090610100900460ff1615620017135750600754610100900460ff1690565b6000600080516020620137cc8339815191523b15620018185760408051600080516020620137cc833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200179a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b39565b60408051601f1981840301815290829052620017b69162002b6c565b6000604051808303816000865af19150503d8060008114620017f5576040519150601f19603f3d011682016040523d82523d6000602084013e620017fa565b606091505b509150508080602001905181019062001814919062002900565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b81620018c9577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018b6919062002b8a565b60405180910390a1620018c98262002446565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200195e57600080fd5b505af115801562001973573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620137cc833981519152925063c657c7189150608401600060405180830381600087803b15801562001a0857600080fd5b505af115801562001a1d573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620137cc833981519152925063c657c7189150608401600060405180830381600087803b15801562001ab257600080fd5b505af115801562001ac7573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001b6857600080fd5b505af115801562001b7d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620137cc83398151915292506306447d569150602401600060405180830381600087803b15801562001bd657600080fd5b505af115801562001beb573d6000803e3d6000fd5b5050505060405162001bfd90620025d8565b604051809103906000f08015801562001c1a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001ca457600080fd5b505af115801562001cb9573d6000803e3d6000fd5b5050505060405162001ccb90620025e6565b604051809103906000f08015801562001ce8573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001d7157600080fd5b505af115801562001d86573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001dd457600080fd5b505af115801562001de9573d6000803e3d6000fd5b5050505060405162001dfb90620025f4565b604051809103906000f08015801562001e18573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001e9e57600080fd5b505af115801562001eb3573d6000803e3d6000fd5b5050505060405162001ec59062002602565b604051809103906000f08015801562001ee2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001f6c57600080fd5b505af115801562001f81573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fa2915062002610565b6001600160a01b039091168152602001604051809103906000f08015801562001fcf573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200205e57600080fd5b505af115801562002073573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200209491506200261e565b6001600160a01b039091168152602001604051809103906000f080158015620020c1573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200215057600080fd5b505af115801562002165573d6000803e3d6000fd5b5050505060405162002177906200262c565b604051809103906000f08015801562002194573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620021f457600080fd5b505af115801562002209573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200223a906200263a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200227f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200230c57600080fd5b505af115801562002321573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200239d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c39190620028ce565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620137cc833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200242a57600080fd5b505af11580156200243f573d6000803e3d6000fd5b5050505050565b80620024be577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024ac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620024be620024c1565b50565b600080516020620137cc8339815191523b15620025b95760408051600080516020620137cc833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002554929160200162002b39565b60408051601f1981840301815290829052620025709162002b6c565b6000604051808303816000865af19150503d8060008114620025af576040519150601f19603f3d011682016040523d82523d6000602084013e620025b4565b606091505b505050505b6007805461ff001916610100179055565b6109268062002bbc83390190565b61012080620034e283390190565b610c72806200360283390190565b613723806200427483390190565b6125a3806200799783390190565b6110db8062009f3a83390190565b613043806200b01583390190565b6137d5806200e05883390190565b611f9f806201182d83390190565b6020808252825182820181905260009190848201906040850190845b818110156200268b5783516001600160a01b03168352928401929184019160010162002664565b50909695505050505050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620027a157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200278a57605f1989850301835262002777848651620026bd565b948e01949350918d019160010162002758565b505050978a01979450509188019160010162002712565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200285957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028435783516001600160e01b0319168252928b019260019290920191908b019062002817565b50978a01979550505091870191600101620027d9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028c157603f19888603018452620028ae858351620026bd565b945092850192908501906001016200288f565b5092979650505050505050565b600060208284031215620028e157600080fd5b81516001600160a01b0381168114620028f957600080fd5b9392505050565b6000602082840312156200291357600080fd5b81518015158114620028f957600080fd5b600081518084526020808501945080840160005b83811015620029565781518752958201959082019060010162002938565b509495945050505050565b60018060a01b038516815260a06020820152602e60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e60c08201526d32b2b21036b7b232b930ba34b7b760911b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b979650505050505050565b600060208284031215620029fc57600080fd5b5051919050565b60018060a01b038516815260a06020820152601a60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461203200000000000060c0820152836040820152821515606082015260e06080820152600062002a6860e083018462002924565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b038516815260a06020820152602660a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206e6f742064757060c0820152656c696361746560d01b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b600181811c9082168062002b1257607f821691505b60208210810362002b3357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002b5e81600485016020870162002697565b919091016004019392505050565b6000825162002b8081846020870162002697565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620028f96080830184620026bd56fe608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220d372dc7ae024b7d9b4425c1e065dbba4af095882876749933db1030a1cc3985c64736f6c63430008130033", + "sourceMap": "298:2288:133:-:0;;;1572:26:65;;;1594:4;-1:-1:-1;;1572:26:65;;;;;;;;3126:44:69;;;;;;;;;;;1133:70:127;;;-1:-1:-1;;;;;;1133:70:127;;;;;298:2288:133;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620001085760003560e01c806366d9a9a011620000a3578063b5508aa9116200006e578063b5508aa914620001b8578063ba414fa614620001c2578063e20c9f7114620001dd578063fa7626d414620001e757600080fd5b806366d9a9a0146200017c57806385226c811462000195578063916a17c614620001ae578063ab2e124b146200015e57600080fd5b80632ade388011620000e45780632ade3880146200014557806333383306146200015e5780633e5e3c2314620001685780633f7286f4146200017257600080fd5b8062036032146200010d5780630a9254e414620001195780631ed7831c1462000123575b600080fd5b62000117620001f5565b005b6200011762000589565b6200012d62000f38565b6040516200013c919062002648565b60405180910390f35b6200014f62000f9c565b6040516200013c9190620026eb565b62000117620010ea565b6200012d620012a4565b6200012d62001306565b6200018662001368565b6040516200013c9190620027b1565b6200019f62001452565b6040516200013c919062002868565b620001866200152c565b6200019f62001616565b620001cc620016f0565b60405190151581526020016200013c565b6200012d6200181d565b600754620001cc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200023f9160016001600160a01b039091163b11906200187f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200028a9160026001600160a01b039091163b11906200187f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002d49160046001600160a01b039091163b11906200187f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200031e9160056001600160a01b039091163b11906200187f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003679160066001600160a01b039091163b11906200187f565b601e54602454604080516341dcea9160e01b815290516200040d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620028ce565b6001600160a01b0316146040518060600160405280602881526020016201360b602891396200187f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004c392919091169063adcee6e390602401602060405180830381865afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062002900565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200187f565b6200058760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c9190620028ce565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200187f565b565b62000593620018cd565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692506200061e9150620025ca565b6001600160a01b039091168152602001604051809103906000f0801580156200064b573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260076044820152660706c7567696e360cc1b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200074057600080fd5b505af115801562000755573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620007769150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620007a3573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3160c81b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200082a57600080fd5b505af11580156200083f573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620008ce9150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620008fb573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600760448201526638363ab3b4b71960c91b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200098257600080fd5b505af115801562000997573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b158015620009f057600080fd5b505af115801562000a05573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000a269150620025ca565b6001600160a01b039091168152602001604051809103906000f08015801562000a53573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3360c81b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562000ada57600080fd5b505af115801562000aef573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260609250600080516020620135eb833981519152915063ca669fa790602401600060405180830381600087803b15801562000b4b57600080fd5b505af115801562000b60573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000ba39290911690600090600190879060040162002961565b6020604051808303816000875af115801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be99190620029e9565b602c5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000c4157600080fd5b505af115801562000c56573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000c999290911690600090600190879060040162002a03565b6020604051808303816000875af115801562000cb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cdf9190620029e9565b602d55604080516002808252606082018352909160208301908036833701905050905060018160008151811062000d1a5762000d1a62002a72565b60200260200101818152505060028160018151811062000d3e5762000d3e62002a72565b602090810291909101015260255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000df69290911690600090600190879060040162002961565b6020604051808303816000875af115801562000e16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e3c9190620029e9565b602e5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b15801562000e9457600080fd5b505af115801562000ea9573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000eec9290911690600390600190879060040162002a88565b6020604051808303816000875af115801562000f0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f329190620029e9565b602f5550565b6060601480548060200260200160405190810160405280929190818152602001828054801562000f9257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000f73575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620010e157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010c9578382906000526020600020018054620010359062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620010639062002afd565b8015620010b45780601f106200108857610100808354040283529160200191620010b4565b820191906000526020600020905b8154815290600101906020018083116200109657829003601f168201915b50505050508152602001906001019062001013565b50505050815250508152602001906001019062000fc0565b50505050905090565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb8339815191529063ca669fa790602401600060405180830381600087803b1580156200113f57600080fd5b505af115801562001154573d6000803e3d6000fd5b5050601e54603154602d54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b158015620011ad57600080fd5b505af1158015620011c2573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620135eb833981519152925063ca669fa79150602401600060405180830381600087803b1580156200121b57600080fd5b505af115801562001230573d6000803e3d6000fd5b5050601e54603254602e54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b1580156200128957600080fd5b505af11580156200129e573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200143957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013fa5790505b505050505081525050815260200190600101906200138c565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620010e1578382906000526020600020018054620014989062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620014c69062002afd565b8015620015175780601f10620014eb5761010080835404028352916020019162001517565b820191906000526020600020905b815481529060010190602001808311620014f957829003601f168201915b50505050508152602001906001019062001476565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015fd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015be5790505b5050505050815250508152602001906001019062001550565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620010e15783829060005260206000200180546200165c9062002afd565b80601f01602080910402602001604051908101604052809291908181526020018280546200168a9062002afd565b8015620016db5780601f10620016af57610100808354040283529160200191620016db565b820191906000526020600020905b815481529060010190602001808311620016bd57829003601f168201915b5050505050815260200190600101906200163a565b600754600090610100900460ff1615620017135750600754610100900460ff1690565b6000600080516020620135eb8339815191523b15620018185760408051600080516020620135eb833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200179a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b39565b60408051601f1981840301815290829052620017b69162002b6c565b6000604051808303816000865af19150503d8060008114620017f5576040519150601f19603f3d011682016040523d82523d6000602084013e620017fa565b606091505b509150508080602001905181019062001814919062002900565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b81620018c9577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018b6919062002b8a565b60405180910390a1620018c98262002446565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200195e57600080fd5b505af115801562001973573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620135eb833981519152925063c657c7189150608401600060405180830381600087803b15801562001a0857600080fd5b505af115801562001a1d573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620135eb833981519152925063c657c7189150608401600060405180830381600087803b15801562001ab257600080fd5b505af115801562001ac7573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001b6857600080fd5b505af115801562001b7d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620135eb83398151915292506306447d569150602401600060405180830381600087803b15801562001bd657600080fd5b505af115801562001beb573d6000803e3d6000fd5b5050505060405162001bfd90620025d8565b604051809103906000f08015801562001c1a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001ca457600080fd5b505af115801562001cb9573d6000803e3d6000fd5b5050505060405162001ccb90620025e6565b604051809103906000f08015801562001ce8573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001d7157600080fd5b505af115801562001d86573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001dd457600080fd5b505af115801562001de9573d6000803e3d6000fd5b5050505060405162001dfb90620025f4565b604051809103906000f08015801562001e18573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001e9e57600080fd5b505af115801562001eb3573d6000803e3d6000fd5b5050505060405162001ec59062002602565b604051809103906000f08015801562001ee2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b15801562001f6c57600080fd5b505af115801562001f81573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fa2915062002610565b6001600160a01b039091168152602001604051809103906000f08015801562001fcf573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200205e57600080fd5b505af115801562002073573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200209491506200261e565b6001600160a01b039091168152602001604051809103906000f080158015620020c1573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200215057600080fd5b505af115801562002165573d6000803e3d6000fd5b5050505060405162002177906200262c565b604051809103906000f08015801562002194573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620021f457600080fd5b505af115801562002209573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200223a906200263a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200227f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620135eb8339815191529063c657c71890608401600060405180830381600087803b1580156200230c57600080fd5b505af115801562002321573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200239d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c39190620028ce565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620135eb833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200242a57600080fd5b505af11580156200243f573d6000803e3d6000fd5b5050505050565b80620024be577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024ac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620024be620024c1565b50565b600080516020620135eb8339815191523b15620025b95760408051600080516020620135eb833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002554929160200162002b39565b60408051601f1981840301815290829052620025709162002b6c565b6000604051808303816000865af19150503d8060008114620025af576040519150601f19603f3d011682016040523d82523d6000602084013e620025b4565b606091505b505050505b6007805461ff001916610100179055565b6109268062002bbc83390190565b61012080620034e283390190565b610c72806200360283390190565b613723806200427483390190565b6123c2806200799783390190565b6110db8062009d5983390190565b613043806200ae3483390190565b6137d5806200de7783390190565b611f9f806201164c83390190565b6020808252825182820181905260009190848201906040850190845b818110156200268b5783516001600160a01b03168352928401929184019160010162002664565b50909695505050505050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620027a157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200278a57605f1989850301835262002777848651620026bd565b948e01949350918d019160010162002758565b505050978a01979450509188019160010162002712565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200285957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028435783516001600160e01b0319168252928b019260019290920191908b019062002817565b50978a01979550505091870191600101620027d9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028c157603f19888603018452620028ae858351620026bd565b945092850192908501906001016200288f565b5092979650505050505050565b600060208284031215620028e157600080fd5b81516001600160a01b0381168114620028f957600080fd5b9392505050565b6000602082840312156200291357600080fd5b81518015158114620028f957600080fd5b600081518084526020808501945080840160005b83811015620029565781518752958201959082019060010162002938565b509495945050505050565b60018060a01b038516815260a06020820152602e60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e60c08201526d32b2b21036b7b232b930ba34b7b760911b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b979650505050505050565b600060208284031215620029fc57600080fd5b5051919050565b60018060a01b038516815260a06020820152601a60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461203200000000000060c0820152836040820152821515606082015260e06080820152600062002a6860e083018462002924565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b038516815260a06020820152602660a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206e6f742064757060c0820152656c696361746560d01b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b600181811c9082168062002b1257607f821691505b60208210810362002b3357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002b5e81600485016020870162002697565b919091016004019392505050565b6000825162002b8081846020870162002697565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620028f96080830184620026bd56fe608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b506123a2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806368839d281161010f5780639c54df64116100a2578063cd29c71a11610071578063cd29c71a14610405578063d103449c1461041a578063d5f394881461042d578063dbba0d5c1461044057600080fd5b80639c54df64146103a9578063a230c524146103bc578063b5a8a3a1146103df578063be9cd052146103f257600080fd5b806380f55605116100de57806380f5560514610369578063810e8c04146103725780638307bd241461038557806388098e3a1461039857600080fd5b806368839d281461032857806369130c8d1461033b578063704802751461034e5780637c0f6b351461036157600080fd5b806324d7806c1161018757806341dcea911161015657806341dcea91146102f257806359659e90146103055780635c60da1b1461030d5780635daf08ca1461031557600080fd5b806324d7806c1461029f5780632a79c611146102c257806331ae450b146102ca5780633b4da69f146102df57600080fd5b806311aee380116101c357806311aee3801461023a57806314bfd6d01461024c5780631785f53c14610277578063206110db1461028a57600080fd5b806303ffe330146101ea57806310972e90146102125780631130630c14610225575b600080fd5b6101fd6101f8366004611c2f565b610453565b60405190151581526020015b60405180910390f35b6101fd610220366004611c5b565b610587565b610238610233366004611d62565b6105dd565b005b6014545b604051908152602001610209565b61025f61025a366004611c5b565b610621565b6040516001600160a01b039091168152602001610209565b610238610285366004611d9f565b61064b565b61029261076d565b6040516102099190611e13565b6101fd6102ad366004611d9f565b60176020526000908152604090205460ff1681565b60405461023e565b6102d2610846565b6040516102099190611e75565b6102386102ed366004611c2f565b6108a8565b603c5461025f906001600160a01b031681565b61025f6109a5565b61025f6109d8565b61025f610323366004611c5b565b6109e2565b6101fd610336366004611d62565b6109f2565b610238610349366004611c5b565b610a71565b61023861035c366004611d9f565b610aa9565b6102d2610c9e565b61023e60325481565b610238610380366004611d62565b610cfe565b607d5461025f906001600160a01b031681565b600a546001600160a01b031661025f565b6102d26103b7366004611ec2565b610d36565b6101fd6103ca366004611d9f565b60156020526000908152604090205460ff1681565b6102386103ed366004611d9f565b610f33565b610238610400366004611c5b565b6110fd565b61040d611135565b6040516102099190611f74565b610238610428366004611d62565b6111c3565b607c5461025f906001600160a01b031681565b61023861044e366004611f87565b6111fb565b607d546000906001600160a01b031661046e57506001610581565b607d546001600160a01b0316158015906104fc5750607d60009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa9190612010565b155b1561050957506000610581565b607d54604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e9190612010565b90505b92915050565b6000805b603d548110156105d45782603d82815481106105a9576105a9612032565b9060005260206000200154036105c25750600192915050565b806105cc8161205e565b91505061058b565b50600092915050565b3360009081526017602052604090205460ff166106155760405162461bcd60e51b815260040161060c90612077565b60405180910390fd5b61061e816113bc565b50565b6016818154811061063157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661067a5760405162461bcd60e51b815260040161060c90612077565b60005b60165481101561071457816001600160a01b0316601682815481106106a4576106a4612032565b6000918252602090912001546001600160a01b031603610702576000601682815481106106d3576106d3612032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061070c8161205e565b91505061067d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561083d5783829060005260206000200180546107b09061209e565b80601f01602080910402602001604051908101604052809291908181526020018280546107dc9061209e565b80156108295780601f106107fe57610100808354040283529160200191610829565b820191906000526020600020905b81548152906001019060200180831161080c57829003601f168201915b505050505081526020019060010190610791565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561089e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610880575b5050505050905090565b600a546001600160a01b031633146108ef5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190612010565b6109975760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015260640161060c565b6109a18282611437565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b60006109c961156f565b6014818154811061063157600080fd5b6028546000908103610a0657506000919050565b81516020808401919091206000818152602990925260409091205415610a2f5750600192915050565b806028600081548110610a4457610a44612032565b90600052602060002001604051610a5b91906120d8565b6040518091039020036105d45750600192915050565b3360009081526017602052604090205460ff16610aa05760405162461bcd60e51b815260040161060c90612077565b61061e816115a2565b3360009081526017602052604090205460ff16610ad85760405162461bcd60e51b815260040161060c90612077565b6001600160a01b03811660009081526015602052604090205460ff16158015610bcc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e919061214e565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca919061216b565b155b15610c085760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015260640161060c565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610762565b6060601480548060200260200160405190810160405280929190818152602001828054801561089e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610880575050505050905090565b3360009081526017602052604090205460ff16610d2d5760405162461bcd60e51b815260040161060c90612077565b61061e8161172f565b3360009081526017602052604090205460609060ff16610d685760405162461bcd60e51b815260040161060c90612077565b60005b8251811015610f2c5760156000848381518110610d8a57610d8a612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610ddc57828181518110610dc757610dc7612032565b60006020918202929092010152600101610d6b565b60176000848381518110610df257610df2612032565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610f24576016838281518110610e3157610e31612032565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610e8557610e85612032565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ef757610ef7612032565b6020026020010151604051610f1b91906001600160a01b0391909116815260200190565b60405180910390a15b600101610d6b565b5090919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f95919061216b565b600114610fdd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b604482015260640161060c565b607d546001600160a01b031661104357603c546001600160a01b0316331461103e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b604482015260640161060c565b6110db565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a29190612010565b6110db5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015260640161060c565b607d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff1661112c5760405162461bcd60e51b815260040161060c90612077565b61061e8161192f565b601e80546111429061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461116e9061209e565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b3360009081526017602052604090205460ff166111f25760405162461bcd60e51b815260040161060c90612077565b61061e816119b3565b600054610100900460ff161580801561121b5750600054600160ff909116105b806112355750303b158015611235575060005460ff166001145b6112985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060c565b6000805460ff1916600117905580156112bb576000805461ff0019166101001790555b607c80546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561133785611ad9565b600a80546001600160a01b0319166001600160a01b03881617905561135b8361192f565b611364846113bc565b61136d82611b5b565b80156113b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116113fb5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b604482015260640161060c565b601e61140782826121d3565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516107629190611f74565b600a546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b604482015260640161060c565b6001600160a01b03821660009081526015602052604090205460ff16156114da5760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b604482015260640161060c565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b600061156a61159f60017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612293565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611610919061214e565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168391908101906122a6565b5151116116c35760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b604482015260640161060c565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b611738816109f2565b6117775760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b604482015260640161060c565b8051602080830191909120600081815260299092526040909120546028546117a190600190612293565b81146118b25760288054600091906117bb90600190612293565b815481106117cb576117cb612032565b9060005260206000200180546117e09061209e565b80601f016020809104026020016040519081016040528092919081815260200182805461180c9061209e565b80156118595780601f1061182e57610100808354040283529160200191611859565b820191906000526020600020905b81548152906001019060200180831161183c57829003601f168201915b50505050509050600081805190602001209050826029600083815260200190815260200160002081905550816028848154811061189857611898612032565b9060005260206000200190816118ae91906121d3565b5050505b60288054806118c3576118c3612356565b6001900381819060005260206000200160006118df9190611bcc565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611922908590611f74565b60405180910390a1505050565b60008111801561193f5750600b81105b6119805760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161060c565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610762565b8051602082012060285460009015611a1b57600082815260296020526040902054151580611a1257508160286000815481106119f1576119f1612032565b90600052602060002001604051611a0891906120d8565b6040518091039020145b15611a1b575060015b8015611a5e5760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b604482015260640161060c565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611aa984826121d3565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a9836040516119229190611f74565b600081118015611ae95750600481105b611b265760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b604482015260640161060c565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610762565b6001600160a01b038116611baa5760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b604482015260640161060c565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b508054611bd89061209e565b6000825580601f10611be8575050565b601f01602090049060005260206000209081019061061e91905b80821115611c165760008155600101611c02565b5090565b6001600160a01b038116811461061e57600080fd5b60008060408385031215611c4257600080fd5b8235611c4d81611c1a565b946020939093013593505050565b600060208284031215611c6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611cad57611cad611c74565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611cdc57611cdc611c74565b604052919050565b600067ffffffffffffffff821115611cfe57611cfe611c74565b50601f01601f191660200190565b600082601f830112611d1d57600080fd5b8135611d30611d2b82611ce4565b611cb3565b818152846020838601011115611d4557600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611d7457600080fd5b813567ffffffffffffffff811115611d8b57600080fd5b611d9784828501611d0c565b949350505050565b600060208284031215611db157600080fd5b8135611dbc81611c1a565b9392505050565b60005b83811015611dde578181015183820152602001611dc6565b50506000910152565b60008151808452611dff816020860160208601611dc3565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e6857603f19888603018452611e56858351611de7565b94509285019290850190600101611e3a565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611eb65783516001600160a01b031683529284019291840191600101611e91565b50909695505050505050565b60006020808385031215611ed557600080fd5b823567ffffffffffffffff80821115611eed57600080fd5b818501915085601f830112611f0157600080fd5b813581811115611f1357611f13611c74565b8060051b9150611f24848301611cb3565b8181529183018401918481019088841115611f3e57600080fd5b938501935b83851015611f685784359250611f5883611c1a565b8282529385019390850190611f43565b98975050505050505050565b602081526000611dbc6020830184611de7565b60008060008060008060c08789031215611fa057600080fd5b8635611fab81611c1a565b95506020870135611fbb81611c1a565b945060408701359350606087013567ffffffffffffffff811115611fde57600080fd5b611fea89828a01611d0c565b9350506080870135915060a087013561200281611c1a565b809150509295509295509295565b60006020828403121561202257600080fd5b81518015158114611dbc57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161207057612070612048565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c908216806120b257607f821691505b6020821081036120d257634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546120e68161209e565b600182811680156120fe576001811461211357612142565b60ff1984168752821515830287019450612142565b8760005260208060002060005b858110156121395781548a820152908401908201612120565b50505082870194505b50929695505050505050565b60006020828403121561216057600080fd5b8151611dbc81611c1a565b60006020828403121561217d57600080fd5b5051919050565b601f8211156121ce57600081815260208120601f850160051c810160208610156121ab5750805b601f850160051c820191505b818110156121ca578281556001016121b7565b5050505b505050565b815167ffffffffffffffff8111156121ed576121ed611c74565b612201816121fb845461209e565b84612184565b602080601f831160018114612236576000841561221e5750858301515b600019600386901b1c1916600185901b1785556121ca565b600085815260208120601f198616915b8281101561226557888601518255948401946001909101908401612246565b50858210156122835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561058157610581612048565b600060208083850312156122b957600080fd5b825167ffffffffffffffff808211156122d157600080fd5b90840190604082870312156122e557600080fd5b6122ed611c8a565b8251828111156122fc57600080fd5b83019150601f8201871361230f57600080fd5b815161231d611d2b82611ce4565b818152888683860101111561233157600080fd5b61234082878301888701611dc3565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a702eb95e905363546a2d544946818f29988f6c40ac1d1696bf64b0bbbfb265064736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208789b8b2867dc804a70443ccd3876cadb5351189292dec7b4cd81f84b8a3f24464736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220c0bff6f14a1813f5b47c1697e885e6c22ca905600f216fa9a6d82569986f2d1564736f6c63430008130033", - "sourceMap": "298:2288:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:114;;;:::i;:::-;;633:1480:120;;;:::i;2452:134:59:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;2119:231:120:-;;;:::i;3221:133:59:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:52:-;;;:::i;:::-;;;5504:14:121;;5497:22;5479:41;;5467:2;5452:18;1819:584:52;5339:187:121;2304:142:59;;;:::i;1572:26:52:-;;;;;;;;;2912:713:114;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:114;;;;;;3003:1;-1:-1:-1;;;;;2984:3:114;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:114;;;;;;3084:1;-1:-1:-1;;;;;3059:9:114;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:114;;;;;;3160:1;-1:-1:-1;;;;;3141:3:114;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:114;;;;;;3235:1;-1:-1:-1;;;;;3216:3:114;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:114;;;;;;3310:1;-1:-1:-1;;;;;3291:3:114;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:114;;;;3346:93;;-1:-1:-1;;;;;3390:3:114;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:114;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:114;;-1:-1:-1;;;;;3511:2:114;;;3487:27;;;5972:51:121;3476:66:114;;3487:3;;;;;:23;;5945:18:121;;3487:27:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:114;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:114;-1:-1:-1;;;;;3563:17:114;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:114;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:114;;;:10;:66::i;:::-;2912:713::o;633:1480:120:-;676:13;:11;:13::i;:::-;709:2;;700:12;;-1:-1:-1;;;700:12:120;;-1:-1:-1;;;;;709:2:120;;;700:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;700:8:120;;;5945:18:121;;700:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;770:4:120;;734:42;;-1:-1:-1;;;;;770:4:120;;;;-1:-1:-1;734:42:120;;-1:-1:-1;734:42:120;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;734:42:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;722:9:120;:54;;-1:-1:-1;;;;;;722:54:120;-1:-1:-1;;;;;722:54:120;;;;;;;;;786:39;;;-1:-1:-1;;;786:39:120;;;;;6528:51:121;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:121;;;6665:37;-1:-1:-1;;;;;;;;;;;786:8:120;;;6719:19:121;;786:39:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;844:2:120;;835:12;;-1:-1:-1;;;835:12:120;;-1:-1:-1;;;;;844:2:120;;;835:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;835:8:120;-1:-1:-1;835:8:120;;-1:-1:-1;5945:18:121;;835:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:4:120;;869:42;;-1:-1:-1;;;;;905:4:120;;;;-1:-1:-1;869:42:120;;-1:-1:-1;869:42:120;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;869:42:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;857:9:120;:54;;-1:-1:-1;;;;;;857:54:120;-1:-1:-1;;;;;857:54:120;;;;;;;;;921:39;;;-1:-1:-1;;;921:39:120;;;;;6961:51:121;;;;7028:18;;;7021:30;7087:1;7067:18;;;7060:29;-1:-1:-1;;;7105:18:121;;;7098:37;-1:-1:-1;;;;;;;;;;;921:8:120;;;7152:19:121;;921:39:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;979:2:120;;970:12;;-1:-1:-1;;;970:12:120;;-1:-1:-1;;;;;979:2:120;;;970:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;970:8:120;-1:-1:-1;970:8:120;;-1:-1:-1;5945:18:121;;970:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1040:4:120;;1004:42;;-1:-1:-1;;;;;1040:4:120;;;;-1:-1:-1;1004:42:120;;-1:-1:-1;1004:42:120;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;1004:42:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;992:9:120;:54;;-1:-1:-1;;;;;;992:54:120;-1:-1:-1;;;;;992:54:120;;;;;;;;;1056:39;;;-1:-1:-1;;;1056:39:120;;;;;7394:51:121;;;;7461:18;;;7454:30;7520:1;7500:18;;;7493:29;-1:-1:-1;;;7538:18:121;;;7531:37;-1:-1:-1;;;;;;;;;;;1056:8:120;;;7585:19:121;;1056:39:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1114:2:120;;1105:12;;-1:-1:-1;;;1105:12:120;;-1:-1:-1;;;;;1114:2:120;;;1105:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1105:8:120;-1:-1:-1;1105:8:120;;-1:-1:-1;5945:18:121;;1105:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1175:4:120;;1139:42;;-1:-1:-1;;;;;1175:4:120;;;;-1:-1:-1;1139:42:120;;-1:-1:-1;1139:42:120;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;1139:42:120;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:9:120;:54;;-1:-1:-1;;;;;;1127:54:120;-1:-1:-1;;;;;1127:54:120;;;;;;;;;1191:39;;;-1:-1:-1;;;1191:39:120;;;;;7827:51:121;;;;7894:18;;;7887:30;7953:1;7933:18;;;7926:29;-1:-1:-1;;;7971:18:121;;;7964:37;-1:-1:-1;;;;;;;;;;;1191:8:120;;;8018:19:121;;1191:39:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1295:2:120;;1286:12;;-1:-1:-1;;;1286:12:120;;-1:-1:-1;;;;;1295:2:120;;;1286:12;;;5972:51:121;1241:34:120;;-1:-1:-1;;;;;;;;;;;;1286:8:120;-1:-1:-1;1286:8:120;;5945:18:121;;1286:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1330:3:120;;1375:2;;1330:136;;-1:-1:-1;;;1330:136:120;;-1:-1:-1;;;;;1330:3:120;;;;-1:-1:-1;1330:23:120;;-1:-1:-1;1330:136:120;;1375:2;;;;1330:3;;;;1439:17;;1330:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:19;:158;1486:2;;1477:12;;-1:-1:-1;;;1477:12:120;;-1:-1:-1;;;;;1486:2:120;;;1477:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1477:8:120;;;5945:18:121;;1477:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1533:3:120;;1565:2;;1533:94;;-1:-1:-1;;;1533:94:120;;-1:-1:-1;;;;;1533:3:120;;;;-1:-1:-1;1533:23:120;;-1:-1:-1;1533:94:120;;1565:2;;;;1533:3;;;;1609:17;;1533:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1499:19;:128;1658:16;;;1672:1;1658:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1658:16:120;1638:36;;1707:1;1684:17;1702:1;1684:20;;;;;;;;:::i;:::-;;;;;;:24;;;;;1741:1;1718:17;1736:1;1718:20;;;;;;;;:::i;:::-;;;;;;;;;;:24;1762:2;;1753:12;;-1:-1:-1;;;1753:12:120;;-1:-1:-1;;;;;1762:2:120;;;1753:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1753:8:120;;;5945:18:121;;1753:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1797:3:120;;1842:2;;1797:136;;-1:-1:-1;;;1797:136:120;;-1:-1:-1;;;;;1797:3:120;;;;-1:-1:-1;1797:23:120;;-1:-1:-1;1797:136:120;;1842:2;;;;1797:3;;;;1906:17;;1797:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1775:19;:158;1953:2;;1944:12;;-1:-1:-1;;;1944:12:120;;-1:-1:-1;;;;;1953:2:120;;;1944:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1944:8:120;;;5945:18:121;;1944:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2000:3:120;;2032:2;;2000:106;;-1:-1:-1;;;2000:106:120;;-1:-1:-1;;;;;2000:3:120;;;;-1:-1:-1;2000:23:120;;-1:-1:-1;2000:106:120;;2032:2;;;;2079:1;;2000:3;;2088:17;;2000:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1966:19;:140;-1:-1:-1;633:1480:120:o;2452:134:59:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:59;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2119:231:120:-;2180:2;;2171:12;;-1:-1:-1;;;2171:12:120;;-1:-1:-1;;;;;2180:2:120;;;2171:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;2171:8:120;;;5945:18:121;;2171:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2193:3:120;;2220:9;;2232:19;;2193:59;;-1:-1:-1;;;2193:59:120;;-1:-1:-1;;;;;2220:9:120;;;2193:59;;;12019:51:121;12086:18;;;12079:34;;;;2193:3:120;;;-1:-1:-1;2193:18:120;;-1:-1:-1;11992:18:121;;2193:59:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2271:2:120;;2262:12;;-1:-1:-1;;;2262:12:120;;-1:-1:-1;;;;;2271:2:120;;;2262:12;;;5972:51:121;-1:-1:-1;;;;;;;;;;;2262:8:120;-1:-1:-1;2262:8:120;;-1:-1:-1;5945:18:121;;2262:12:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2284:3:120;;2311:9;;2323:19;;2284:59;;-1:-1:-1;;;2284:59:120;;-1:-1:-1;;;;;2311:9:120;;;2284:59;;;12019:51:121;12086:18;;;12079:34;;;;2284:3:120;;;-1:-1:-1;2284:18:120;;-1:-1:-1;11992:18:121;;2284:59:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2119:231::o;3221:133:59:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:59;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:59;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:52;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:52;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:52;;;12019:51:121;;;-1:-1:-1;;;12086:18:121;;;12079:34;2196:43:52;;;;;;;;;11992:18:121;;;2196:43:52;;;-1:-1:-1;;1671:64:52;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:52;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:52:o;2304:142:59:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:59;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:52:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:114:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:114;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:114;;;;;13747:51:121;;;;13814:18;;;13807:30;13873:1;13853:18;;;13846:29;-1:-1:-1;;;13891:18:121;;;13884:38;-1:-1:-1;;;;;;;;;;;1430:8:114;;;13939:19:121;;1430:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:114;:53;;-1:-1:-1;;;;;;1474:53:114;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:114;;;;;14181:51:121;;;;14248:18;;;14241:30;14307:1;14287:18;;;14280:29;-1:-1:-1;;;14325:18:121;;;14318:38;-1:-1:-1;;;;;;;;;;;1537:8:114;-1:-1:-1;1537:8:114;;-1:-1:-1;14373:19:121;;1537:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:114;:53;;-1:-1:-1;;;;;;1581:53:114;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:114;;;;;14615:51:121;;;;14682:18;;;14675:30;14741:1;14721:18;;;14714:29;-1:-1:-1;;;14759:18:121;;;14752:38;-1:-1:-1;;;;;;;;;;;1644:8:114;-1:-1:-1;1644:8:114;;-1:-1:-1;14807:19:121;;1644:33:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:114;:66;;-1:-1:-1;;;;;;1688:66:114;;;;;-1:-1:-1;;1781:2:114;;1764:37;;;-1:-1:-1;;;1764:37:114;;-1:-1:-1;;;;;1781:2:114;;;1764:37;;;15049:51:121;15116:18;;;15109:30;15175:2;15155:18;;;15148:30;-1:-1:-1;;;15194:18:121;;;15187:42;-1:-1:-1;;;;;;;;;;;1764:8:114;;;15246:19:121;;1764:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:114;;1812:17;;-1:-1:-1;;;1812:17:114;;-1:-1:-1;;;;;1826:2:114;;;1812:17;;;5972:51:121;-1:-1:-1;;;;;;;;;;;1812:13:114;-1:-1:-1;1812:13:114;;-1:-1:-1;5945:18:121;;1812:17:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:114;:29;;-1:-1:-1;;;;;;1840:29:114;-1:-1:-1;;;;;1840:29:114;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:114;;;;;15488:51:121;;;;15555:18;;;15548:30;15614:2;15594:18;;;15587:30;-1:-1:-1;;;15633:18:121;;;15626:40;-1:-1:-1;;;;;;;;;;;1879:8:114;;;15683:19:121;;1879:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:114;:44;;-1:-1:-1;;;;;;1932:44:114;-1:-1:-1;;;;;1932:44:114;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:114;;;;;15925:51:121;;;;15992:18;;;15985:30;16051:1;16031:18;;;16024:29;-1:-1:-1;;;16069:18:121;;;16062:39;-1:-1:-1;;;;;;;;;;;1986:8:114;;;16118:19:121;;1986:37:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:114;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:114;;-1:-1:-1;;;;;2055:2:114;;;2034:24;;;5972:51:121;2034:5:114;;;-1:-1:-1;2034:20:114;;-1:-1:-1;5945:18:121;;2034:24:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:114;:34;;-1:-1:-1;;;;;;2069:34:114;-1:-1:-1;;;;;2069:34:114;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:114;;;;;16360:51:121;;;;16427:18;;;16420:30;16486:1;16466:18;;;16459:29;-1:-1:-1;;;16504:18:121;;;16497:36;-1:-1:-1;;;;;;;;;;;2113:8:114;;;16550:19:121;;2113:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:114;:35;;-1:-1:-1;;;;;;2156:35:114;-1:-1:-1;;;;;2156:35:114;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:114;;;;;16792:51:121;;;;16859:18;;;16852:30;16918:2;16898:18;;;16891:30;-1:-1:-1;;;16937:18:121;;;16930:40;-1:-1:-1;;;;;;;;;;;2201:8:114;;;16987:19:121;;2201:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:114;;2284:34;;-1:-1:-1;;;;;2311:5:114;;;;-1:-1:-1;2284:34:114;;-1:-1:-1;2284:34:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2284:34:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:114;:66;;-1:-1:-1;;;;;;2254:66:114;-1:-1:-1;;;;;2254:66:114;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:114;;;;;17229:51:121;;;;17296:18;;;17289:30;17355:2;17335:18;;;17328:30;-1:-1:-1;;;17374:18:121;;;17367:45;-1:-1:-1;;;;;;;;;;;2330:8:114;;;17429:19:121;;2330:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:114;;2412:32;;-1:-1:-1;;;;;2439:3:114;;;;-1:-1:-1;2412:32:114;;-1:-1:-1;2412:32:114;:::i;:::-;-1:-1:-1;;;;;5990:32:121;;;5972:51;;5960:2;5945:18;2412:32:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:114;:64;;-1:-1:-1;;;;;;2382:64:114;-1:-1:-1;;;;;2382:64:114;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:114;;;;;17671:51:121;;;;17738:18;;;17731:30;17797:2;17777:18;;;17770:30;-1:-1:-1;;;17816:18:121;;;17809:45;-1:-1:-1;;;;;;;;;;;2456:8:114;;;17871:19:121;;2456:41:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:114;:54;;-1:-1:-1;;;;;;2508:54:114;-1:-1:-1;;;;;2508:54:114;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:114;;;;;5972:51:121;;;;2573:3:114;;;;:22;;5945:18:121;;2573:36:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:114;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:114;;;;-1:-1:-1;2702:9:114;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;18188:15:121;;;18170:34;;18240:15;;;18235:2;18220:18;;18213:43;18292:15;;;18287:2;18272:18;;18265:43;18344:15;;;18339:2;18324:18;;18317:43;18119:3;18104:19;2648:79:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:114;:109;;-1:-1:-1;;;;;;2620:109:114;-1:-1:-1;;;;;2620:109:114;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:114;;;;;18583:51:121;;;;18650:18;;;18643:30;18709:2;18689:18;;;18682:30;-1:-1:-1;;;18728:18:121;;;18721:43;-1:-1:-1;;;;;;;;;;;2739:8:114;;;18781:19:121;;2739:39:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:114;;:35;;-1:-1:-1;;;2808:35:114;;:3;:35;;;19067:25:121;;;19128:2;19108:18;;;19101:30;19167:2;19147:18;;;19140:30;-1:-1:-1;;;19186:19:121;;;19179:42;19273:18;;;19266:34;2789:16:114;;-1:-1:-1;;;;;;2808:3:114;;;;-1:-1:-1;2808:14:114;;19238:19:121;;2808:35:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:114;-1:-1:-1;;;;;2853:22:114;;;;;2885:14;;;-1:-1:-1;;;2885:14:114;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:114;;;:14;;;;;-1:-1:-1;;2885:14:114;;;;;;;;-1:-1:-1;2885:12:114;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;3262:157:52:-;3322:9;3317:96;;3352:30;;;;;19513:2:121;19495:21;;;19552:2;19532:18;;;19525:30;19591:25;19586:2;19571:18;;19564:53;19649:2;19634:18;;19311:347;3352:30:52;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:52;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:52;;;19865:51:121;;;-1:-1:-1;;;19932:18:121;;;19925:34;;;;2712:4:52;19975:18:121;;;19968:34;2489:11:52;;1671:64;2586:43;;19838:18:121;;2652:67:52;;;-1:-1:-1;;2652:67:52;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:52;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:52;2820:7;:14;;-1:-1:-1;;2820:14:52;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:121:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:121;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:121;;14:658;-1:-1:-1;;;;;;14:658:121:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:121;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:121;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:121:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:121;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:121;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:121;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:121;;;;2837:6;-1:-1:-1;;2866:15:121;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:121;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:121:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:121;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:121;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:121;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:121;;;;4412:5;-1:-1:-1;;;4440:15:121;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:121;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:121:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:121;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:121;;4531:803;-1:-1:-1;;;;;;;4531:803:121:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:121;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:121:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;8048:435;8101:3;8139:5;8133:12;8166:6;8161:3;8154:19;8192:4;8221:2;8216:3;8212:12;8205:19;;8258:2;8251:5;8247:14;8279:1;8289:169;8303:6;8300:1;8297:13;8289:169;;;8364:13;;8352:26;;8398:12;;;;8433:15;;;;8325:1;8318:9;8289:169;;;-1:-1:-1;8474:3:121;;8048:435;-1:-1:-1;;;;;8048:435:121:o;8488:864::-;8899:1;8895;8890:3;8886:11;8882:19;8874:6;8870:32;8859:9;8852:51;8939:3;8934:2;8923:9;8919:18;8912:31;8980:2;8974:3;8963:9;8959:19;8952:31;9020:34;9014:3;9003:9;8999:19;8992:63;-1:-1:-1;;;9086:3:121;9075:9;9071:19;9064:45;8833:4;9128:3;9167:6;9162:2;9151:9;9147:18;9140:34;9224:6;9217:14;9210:22;9205:2;9194:9;9190:18;9183:50;9270:2;9264:3;9253:9;9249:19;9242:31;9290:56;9342:2;9331:9;9327:18;9319:6;9290:56;:::i;:::-;9282:64;8488:864;-1:-1:-1;;;;;;;8488:864:121:o;9357:184::-;9427:6;9480:2;9468:9;9459:7;9455:23;9451:32;9448:52;;;9496:1;9493;9486:12;9448:52;-1:-1:-1;9519:16:121;;9357:184;-1:-1:-1;9357:184:121:o;9546:784::-;9957:1;9953;9948:3;9944:11;9940:19;9932:6;9928:32;9917:9;9910:51;9997:3;9992:2;9981:9;9977:18;9970:31;10038:2;10032:3;10021:9;10017:19;10010:31;10078:28;10072:3;10061:9;10057:19;10050:57;10143:6;10138:2;10127:9;10123:18;10116:34;10200:6;10193:14;10186:22;10181:2;10170:9;10166:18;10159:50;10246:3;10240;10229:9;10225:19;10218:32;9891:4;10267:57;10319:3;10308:9;10304:19;10296:6;10267:57;:::i;:::-;10259:65;9546:784;-1:-1:-1;;;;;;9546:784:121:o;10467:127::-;10528:10;10523:3;10519:20;10516:1;10509:31;10559:4;10556:1;10549:15;10583:4;10580:1;10573:15;10599:856;11010:1;11006;11001:3;10997:11;10993:19;10985:6;10981:32;10970:9;10963:51;11050:3;11045:2;11034:9;11030:18;11023:31;11091:2;11085:3;11074:9;11070:19;11063:31;11131:34;11125:3;11114:9;11110:19;11103:63;-1:-1:-1;;;11197:3:121;11186:9;11182:19;11175:37;10944:4;11231:3;11270:6;11265:2;11254:9;11250:18;11243:34;11327:6;11320:14;11313:22;11308:2;11297:9;11293:18;11286:50;11373:2;11367:3;11356:9;11352:19;11345:31;11393:56;11445:2;11434:9;11430:18;11422:6;11393:56;:::i;11460:380::-;11539:1;11535:12;;;;11582;;;11603:61;;11657:4;11649:6;11645:17;11635:27;;11603:61;11710:2;11702:6;11699:14;11679:18;11676:38;11673:161;;11756:10;11751:3;11747:20;11744:1;11737:31;11791:4;11788:1;11781:15;11819:4;11816:1;11809:15;11673:161;;11460:380;;;:::o;12403:384::-;-1:-1:-1;;;;;;12588:33:121;;12576:46;;12645:13;;12558:3;;12667:74;12645:13;12730:1;12721:11;;12714:4;12702:17;;12667:74;:::i;:::-;12761:16;;;;12779:1;12757:24;;12403:384;-1:-1:-1;;;12403:384:121:o;12792:287::-;12921:3;12959:6;12953:13;12975:66;13034:6;13029:3;13022:4;13014:6;13010:17;12975:66;:::i;:::-;13057:16;;;;;12792:287;-1:-1:-1;;12792:287:121:o;13084:446::-;13334:2;13323:9;13316:21;13373:1;13368:2;13357:9;13353:18;13346:29;-1:-1:-1;;;13406:2:121;13395:9;13391:18;13384:35;13457:3;13450:4;13439:9;13435:20;13428:33;13297:4;13478:46;13519:3;13508:9;13504:19;13496:6;13478:46;:::i", + "object": "0x60806040523480156200001157600080fd5b5060043610620001085760003560e01c806366d9a9a011620000a3578063b5508aa9116200006e578063b5508aa914620001b8578063ba414fa614620001c2578063e20c9f7114620001dd578063fa7626d414620001e757600080fd5b806366d9a9a0146200017c57806385226c811462000195578063916a17c614620001ae578063ab2e124b146200015e57600080fd5b80632ade388011620000e45780632ade3880146200014557806333383306146200015e5780633e5e3c2314620001685780633f7286f4146200017257600080fd5b8062036032146200010d5780630a9254e414620001195780631ed7831c1462000123575b600080fd5b62000117620001f5565b005b6200011762000589565b6200012d62000f38565b6040516200013c919062002648565b60405180910390f35b6200014f62000f9c565b6040516200013c9190620026eb565b62000117620010ea565b6200012d620012a4565b6200012d62001306565b6200018662001368565b6040516200013c9190620027b1565b6200019f62001452565b6040516200013c919062002868565b620001866200152c565b6200019f62001616565b620001cc620016f0565b60405190151581526020016200013c565b6200012d6200181d565b600754620001cc9060ff1681565b601c54604080518082019091526015815274195e1c1958dd1959081852510818dbdb9d1c9858dd605a1b60208201526200023f9160016001600160a01b039091163b11906200187f565b602154604080518082019091526016815275195e1c1958dd195908139bdd984818dbdb9d1c9858dd60521b60208201526200028a9160026001600160a01b039091163b11906200187f565b601f54604080518082019091526015815274195e1c1958dd1959081253548818dbdb9d1c9858dd605a1b6020820152620002d49160046001600160a01b039091163b11906200187f565b601e54604080518082019091526015815274195e1c1958dd1959081254148818dbdb9d1c9858dd605a1b60208201526200031e9160056001600160a01b039091163b11906200187f565b601d54604080518082019091526014815273195e1c1958dd19590812539498dbdb9d1c9858dd60621b6020820152620003679160066001600160a01b039091163b11906200187f565b601e54602454604080516341dcea9160e01b815290516200040d936001600160a01b039081169316916341dcea9191600480830192602092919082900301816000875af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620028ce565b6001600160a01b031614604051806060016040528060288152602001620137ec602891396200187f565b601f5460255460405163adcee6e360e01b81526001600160a01b039182166004820152620004c392919091169063adcee6e390602401602060405180830381865afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062002900565b6040518060400160405280601781526020017f6465706c6f796572206e6f74206d61696e7461696e65720000000000000000008152506200187f565b6200058760006001600160a01b0316601e60009054906101000a90046001600160a01b03166001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c9190620028ce565b6001600160a01b03161415604051806040016040528060118152602001701b9bc81314881859191c995cdcc81cd95d607a1b8152506200187f565b565b62000593620018cd565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506024546040516001600160a01b0390911692506200061e9150620025ca565b6001600160a01b039091168152602001604051809103906000f0801580156200064b573d6000803e3d6000fd5b50603080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260076044820152660706c7567696e360cc1b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200074057600080fd5b505af115801562000755573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620007769150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620007a3573d6000803e3d6000fd5b50603180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3160c81b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200082a57600080fd5b505af11580156200083f573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50506024546040516001600160a01b039091169250620008ce9150620025ca565b6001600160a01b039091168152602001604051809103906000f080158015620008fb573d6000803e3d6000fd5b50603280546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600760448201526638363ab3b4b71960c91b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200098257600080fd5b505af115801562000997573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b158015620009f057600080fd5b505af115801562000a05573d6000803e3d6000fd5b50506024546040516001600160a01b03909116925062000a269150620025ca565b6001600160a01b039091168152602001604051809103906000f08015801562000a53573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526007604482015266706c7567696e3360c81b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562000ada57600080fd5b505af115801562000aef573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b03909116600482015260609250600080516020620137cc833981519152915063ca669fa790602401600060405180830381600087803b15801562000b4b57600080fd5b505af115801562000b60573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000ba39290911690600090600190879060040162002961565b6020604051808303816000875af115801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be99190620029e9565b602c5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000c4157600080fd5b505af115801562000c56573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000c999290911690600090600190879060040162002a03565b6020604051808303816000875af115801562000cb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cdf9190620029e9565b602d55604080516002808252606082018352909160208301908036833701905050905060018160008151811062000d1a5762000d1a62002a72565b60200260200101818152505060028160018151811062000d3e5762000d3e62002a72565b602090810291909101015260255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000df69290911690600090600190879060040162002961565b6020604051808303816000875af115801562000e16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e3c9190620029e9565b602e5560255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b15801562000e9457600080fd5b505af115801562000ea9573d6000803e3d6000fd5b5050601e54602654604051631a104a5d60e11b81526001600160a01b03928316945063342094ba935062000eec9290911690600390600190879060040162002a88565b6020604051808303816000875af115801562000f0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f329190620029e9565b602f5550565b6060601480548060200260200160405190810160405280929190818152602001828054801562000f9257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000f73575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620010e157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010c9578382906000526020600020018054620010359062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620010639062002afd565b8015620010b45780601f106200108857610100808354040283529160200191620010b4565b820191906000526020600020905b8154815290600101906020018083116200109657829003601f168201915b50505050508152602001906001019062001013565b50505050815250508152602001906001019062000fc0565b50505050905090565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc8339815191529063ca669fa790602401600060405180830381600087803b1580156200113f57600080fd5b505af115801562001154573d6000803e3d6000fd5b5050601e54603154602d54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b158015620011ad57600080fd5b505af1158015620011c2573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620137cc833981519152925063ca669fa79150602401600060405180830381600087803b1580156200121b57600080fd5b505af115801562001230573d6000803e3d6000fd5b5050601e54603254602e54604051634d4547c960e01b81526001600160a01b039283166004820152602481019190915291169250634d4547c99150604401600060405180830381600087803b1580156200128957600080fd5b505af11580156200129e573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200143957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620013fa5790505b505050505081525050815260200190600101906200138c565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620010e1578382906000526020600020018054620014989062002afd565b80601f0160208091040260200160405190810160405280929190818152602001828054620014c69062002afd565b8015620015175780601f10620014eb5761010080835404028352916020019162001517565b820191906000526020600020905b815481529060010190602001808311620014f957829003601f168201915b50505050508152602001906001019062001476565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620010e15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620015fd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620015be5790505b5050505050815250508152602001906001019062001550565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620010e15783829060005260206000200180546200165c9062002afd565b80601f01602080910402602001604051908101604052809291908181526020018280546200168a9062002afd565b8015620016db5780601f10620016af57610100808354040283529160200191620016db565b820191906000526020600020905b815481529060010190602001808311620016bd57829003601f168201915b5050505050815260200190600101906200163a565b600754600090610100900460ff1615620017135750600754610100900460ff1690565b6000600080516020620137cc8339815191523b15620018185760408051600080516020620137cc833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200179a917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002b39565b60408051601f1981840301815290829052620017b69162002b6c565b6000604051808303816000865af19150503d8060008114620017f5576040519150601f19603f3d011682016040523d82523d6000602084013e620017fa565b606091505b509150508080602001905181019062001814919062002900565b9150505b919050565b6060601380548060200260200160405190810160405280929190818152602001828054801562000f92576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f73575050505050905090565b81620018c9577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620018b6919062002b8a565b60405180910390a1620018c98262002446565b5050565b602680546001600160a01b03191673d680e9fb33b46b72e1431246e586a1e54c926f7f908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743160c01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200195e57600080fd5b505af115801562001973573d6000803e3d6000fd5b5050602780546001600160a01b03191673fb6d53e0055ca93e9df6601274adc7cbc6b3355d908117909155604080516318caf8e360e31b815260048101929092526024820152600860448201526720b1b1b7bab73a1960c11b6064820152600080516020620137cc833981519152925063c657c7189150608401600060405180830381600087803b15801562001a0857600080fd5b505af115801562001a1d573d6000803e3d6000fd5b5050602880546001600160a01b031916730e7a138cc688ad94feca95f19d0c36b5254348ef908117909155604080516318caf8e360e31b81526004810192909252602482015260086044820152674163636f756e743360c01b6064820152600080516020620137cc833981519152925063c657c7189150608401600060405180830381600087803b15801562001ab257600080fd5b505af115801562001ac7573d6000803e3d6000fd5b5050602980546001600160a01b03191673d2cbb3deabf70790abc8861f34d515b5f8af87741790555050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600c60448201526b1058d8dbdd5b9d0d17dbdd5d60a21b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001b6857600080fd5b505af115801562001b7d573d6000803e3d6000fd5b50506025546040516303223eab60e11b81526001600160a01b039091166004820152600080516020620137cc83398151915292506306447d569150602401600060405180830381600087803b15801562001bd657600080fd5b505af115801562001beb573d6000803e3d6000fd5b5050505060405162001bfd90620025d8565b604051809103906000f08015801562001c1a573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694c656761637944414f4960b01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001ca457600080fd5b505af115801562001cb9573d6000803e3d6000fd5b5050505060405162001ccb90620025e6565b604051809103906000f08015801562001ce8573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526009604482015268185b1b1bdddb1a5cdd60ba1b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001d7157600080fd5b505af115801562001d86573d6000803e3d6000fd5b5050602354602554604051637c74376760e11b81526001600160a01b0391821660048201529116925063f8e86ece9150602401600060405180830381600087803b15801562001dd457600080fd5b505af115801562001de9573d6000803e3d6000fd5b5050505060405162001dfb90620025f4565b604051809103906000f08015801562001e18573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600660448201526541757449444960d01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001e9e57600080fd5b505af115801562001eb3573d6000803e3d6000fd5b5050505060405162001ec59062002602565b604051809103906000f08015801562001ee2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600a6044820152694e6f76614c6f6769634960b01b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b15801562001f6c57600080fd5b505af115801562001f81573d6000803e3d6000fd5b50506023546040516001600160a01b03909116925062001fa2915062002610565b6001600160a01b039091168152602001604051809103906000f08015801562001fcf573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e4d6f64756c6552656769737472794960881b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200205e57600080fd5b505af115801562002073573d6000803e3d6000fd5b5050601f546040516001600160a01b0390911692506200209491506200261e565b6001600160a01b039091168152602001604051809103906000f080158015620020c1573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600f60448201526e506c7567696e52656769737472794960881b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200215057600080fd5b505af115801562002165573d6000803e3d6000fd5b5050505060405162002177906200262c565b604051809103906000f08015801562002194573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316908117909155601e5460405163a9810f4560e01b815260048101929092529091169063a9810f4590602401600060405180830381600087803b158015620021f457600080fd5b505af115801562002209573d6000803e3d6000fd5b5050601c54602154601e5460405161303995506001600160a01b0393841694509183169216906200223a906200263a565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f0801580156200227f573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600d60448201526c4e6f766152656769737472794960981b6064820152600080516020620137cc8339815191529063c657c71890608401600060405180830381600087803b1580156200230c57600080fd5b505af115801562002321573d6000803e3d6000fd5b5050601d54604051635e570be160e11b815260016004820181905260606024830152600b60648301526a1b595d1859185d1850d25160aa1b60848301526044820152600093506001600160a01b03909116915063bcae17c29060a4016020604051808303816000875af11580156200239d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c39190620028ce565b602480546001600160a01b0319166001600160a01b038316179055604080516390c5013b60e01b81529051919250600080516020620137cc833981519152916390c5013b9160048082019260009290919082900301818387803b1580156200242a57600080fd5b505af11580156200243f573d6000803e3d6000fd5b5050505050565b80620024be577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620024ac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620024be620024c1565b50565b600080516020620137cc8339815191523b15620025b95760408051600080516020620137cc833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002554929160200162002b39565b60408051601f1981840301815290829052620025709162002b6c565b6000604051808303816000865af19150503d8060008114620025af576040519150601f19603f3d011682016040523d82523d6000602084013e620025b4565b606091505b505050505b6007805461ff001916610100179055565b6109268062002bbc83390190565b61012080620034e283390190565b610c72806200360283390190565b613723806200427483390190565b6125a3806200799783390190565b6110db8062009f3a83390190565b613043806200b01583390190565b6137d5806200e05883390190565b611f9f806201182d83390190565b6020808252825182820181905260009190848201906040850190845b818110156200268b5783516001600160a01b03168352928401929184019160010162002664565b50909695505050505050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620027a157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200278a57605f1989850301835262002777848651620026bd565b948e01949350918d019160010162002758565b505050978a01979450509188019160010162002712565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200285957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620028435783516001600160e01b0319168252928b019260019290920191908b019062002817565b50978a01979550505091870191600101620027d9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028c157603f19888603018452620028ae858351620026bd565b945092850192908501906001016200288f565b5092979650505050505050565b600060208284031215620028e157600080fd5b81516001600160a01b0381168114620028f957600080fd5b9392505050565b6000602082840312156200291357600080fd5b81518015158114620028f957600080fd5b600081518084526020808501945080840160005b83811015620029565781518752958201959082019060010162002938565b509495945050505050565b60018060a01b038516815260a06020820152602e60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e60c08201526d32b2b21036b7b232b930ba34b7b760911b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b979650505050505050565b600060208284031215620029fc57600080fd5b5051919050565b60018060a01b038516815260a06020820152601a60a08201527f6f776e657220636f6e74726f6c6564206d65746164617461203200000000000060c0820152836040820152821515606082015260e06080820152600062002a6860e083018462002924565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60018060a01b038516815260a06020820152602660a08201527f6f776e657220636f6e74726f6c6564206d65746164617461206e6f742064757060c0820152656c696361746560d01b60e082015260006101008560408401528415156060840152806080840152620029de8184018562002924565b600181811c9082168062002b1257607f821691505b60208210810362002b3357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062002b5e81600485016020870162002697565b919091016004019392505050565b6000825162002b8081846020870162002697565b9190910192915050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000620028f96080830184620026bd56fe608060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610238565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bc9190610238565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af1158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a9190610238565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb9190610238565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b15801561021357600080fd5b505af1158015610227573d6000803e3d6000fd5b505060016008555061026892505050565b60006020828403121561024a57600080fd5b81516001600160a01b038116811461026157600080fd5b9392505050565b6106af806102776000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101b9578063a3c9eb43146101c2578063ab440d65146101d5578063d5f39488146101e857600080fd5b806386d113c01461018f57806389f12ed9146101a05780638da5cb5b146101b157600080fd5b806341dcea91116100c857806341dcea911461013d5780634b749e9b1461016d57806366bea03e1461017e5780638381f58a1461018657600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd3660046104d8565b6101f9565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b6005546001600160a01b0316610155565b61012f610258565b61012f60085481565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b6101556102de565b61012f60035481565b61012f6101d0366004610507565b610359565b6101026101e33660046105d0565b6103e1565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102535760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b6000600854600161026991906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661028b3390565b6040518463ffffffff1660e01b81526004016102a99392919061061b565b600060405180830381600087803b1580156102c357600080fd5b505af11580156102d7573d6000803e3d6000fd5b5050505090565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015610330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610354919061065c565b905090565b6000600854600161036a91906105f4565b600881905590506005546001600160a01b0316633ad3b04160003661038c3390565b6040518463ffffffff1660e01b81526004016103aa9392919061061b565b600060405180830381600087803b1580156103c457600080fd5b505af11580156103d8573d6000803e3d6000fd5b50505050919050565b6006546001600160a01b0316336001600160a01b03161461041557604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061065c565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b6000602082840312156104ea57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561051957600080fd5b813567ffffffffffffffff8082111561053157600080fd5b818401915084601f83011261054557600080fd5b813581811115610557576105576104f1565b604051601f8201601f19908116603f0116810190838211818310171561057f5761057f6104f1565b8160405282815287602084870101111561059857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b03811681146105cd57600080fd5b50565b6000602082840312156105e257600080fd5b81356105ed816105b8565b9392505050565b8082018082111561061557634e487b7160e01b600052601160045260246000fd5b92915050565b6040815282604082015282846060830137600060608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b60006020828403121561066e57600080fd5b81516105ed816105b856fea2646970667358221220e71d976f1b54bab489c2e1c48a3c1586abe53dfa52881bd8e3a300422c44d90f64736f6c63430008130033608060405234801561001057600080fd5b50610100806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a230c524146037578063ca6d56dc14606b575b600080fd5b60576042366004609c565b60006020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b609a6076366004609c565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b005b60006020828403121560ad57600080fd5b81356001600160a01b038116811460c357600080fd5b939250505056fea2646970667358221220411bdeec0fc0fe3e8c821e69091c1a4037db7d2974b69872637eb4496c3df94d64736f6c63430008130033608060405234801561001057600080fd5b50336000908152602081905260409020805460ff19166001179055610c388061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063745d6bff11610071578063745d6bff14610144578063846be7ed14610157578063974b15211461016a578063babcc53914610196578063f31264bb146101c2578063f8e86ece1461020357600080fd5b80632f54bf6e146100ae578063519cecce146100e65780635da93d7e146100fb5780637065cb481461010e57806370dd8d2e14610121575b600080fd5b6100d16100bc366004610ace565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f96100f4366004610b06565b610216565b005b6100f9610109366004610ace565b6104ee565b6100f961011c366004610ace565b6105e3565b6100d161012f366004610ace565b60016020526000908152604090205460ff1681565b6100d1610152366004610ace565b6106a9565b6100f9610165366004610b06565b610711565b6100d1610178366004610ace565b6001600160a01b031660009081526020819052604090205460ff1690565b6100d16101a4366004610ace565b6001600160a01b031660009081526001602052604090205460ff1690565b6101eb6101d0366004610ace565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b6100f9610211366004610ace565b610948565b6000356001600160e01b031916637c74376760e11b14801561024757503360009081526001602052604090205460ff165b156103a157336000908152600260205260409020546001600160a01b0316156102835760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836102a28385610bcb565b815181106102b2576102b2610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610286576001806000846102ed8386610bcb565b815181106102fd576102fd610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b8261035c600184610bcb565b8151811061036c5761036c610bec565b602002602001015160405161039091906001600160a01b0391909116815260200190565b60405180910390a1610286565b5050565b3360009081526020819052604090205460ff166103d15760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d576001908101906000836103f08385610bcb565b8151811061040057610400610bec565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166103d45760018060008461043b8386610bcb565b8151811061044b5761044b610bec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790557fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b826104aa600184610bcb565b815181106104ba576104ba610bec565b60200260200101516040516104de91906001600160a01b0391909116815260200190565b60405180910390a16103d4565b50565b6000356001600160e01b031916637c74376760e11b14801561051f57503360009081526001602052604090205460ff165b156105b357336000908152600260205260409020546001600160a01b03161561055b5760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61491015b60405180910390a150565b3360009081526020819052604090205460ff1661055b5760405163e087598d60e01b815260040160405180910390fd5b6000356001600160e01b031916637c74376760e11b14801561061457503360009081526001602052604090205460ff165b1561067957336000908152600260205260409020546001600160a01b0316156106505760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff81161560ff19909116179055565b3360009081526020819052604090205460ff166106505760405163e087598d60e01b815260040160405180910390fd5b6001600160a01b03811660009081526020819052604081205460ff168061070b57506001600160a01b03821660009081526001602052604090205460ff16801561070b57506001600160a01b0382811660009081526002602052604090205416155b92915050565b6000356001600160e01b031916637c74376760e11b14801561074257503360009081526001602052604090205460ff165b1561084b57336000908152600260205260409020546001600160a01b03161561077e5760405163b1e153ab60e01b815260040160405180910390fd5b60005b815181101561039d576000600160008484815181106107a2576107a2610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061081a5761081a610bec565b602002602001015160405161083e91906001600160a01b0391909116815260200190565b60405180910390a1610781565b3360009081526020819052604090205460ff1661087b5760405163e087598d60e01b815260040160405180910390fd5b60005b815181101561039d5760006001600084848151811061089f5761089f610bec565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190507f29beb8aae77ba82cbb9d5a13ac9153539286534ddea0dc0a0aa61c484585a61482828151811061091757610917610bec565b602002602001015160405161093b91906001600160a01b0391909116815260200190565b60405180910390a161087e565b6000356001600160e01b031916637c74376760e11b14801561097957503360009081526001602052604090205460ff165b15610a8257336000908152600260205260409020546001600160a01b0316156109b55760405163b1e153ab60e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff166104eb576001600160a01b0381166000908152600160208181526040808420805460ff191690931790925533835282905290205460ff16610a49576001600160a01b0381166000818152600260205260408082208054336001600160a01b031991821681179092559083529120805490911690911790555b6040516001600160a01b03821681527fa29fd8e8b328183429f81e3acc10dc14196777efa4ccd23165f71d4dd027ac1b906020016105a8565b3360009081526020819052604090205460ff166109b55760405163e087598d60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ac957600080fd5b919050565b600060208284031215610ae057600080fd5b610ae982610ab2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610b1957600080fd5b823567ffffffffffffffff80821115610b3157600080fd5b818501915085601f830112610b4557600080fd5b813581811115610b5757610b57610af0565b8060051b604051601f19603f83011681018181108582111715610b7c57610b7c610af0565b604052918252848201925083810185019188831115610b9a57600080fd5b938501935b82851015610bbf57610bb085610ab2565b84529385019392850192610b9f565b98975050505050505050565b8181038181111561070b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122023666e1c3f6f4feea5cd62d4e3425587f97fb200b4366b69091c93ac9d35bf8e64736f6c63430008130033608060405234801561001057600080fd5b50613703806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063c4d66de8116100ad578063e985e9c51161007c578063e985e9c514610547578063f359d86314610583578063f547773c14610596578063fa320285146105ca578063ff69a391146105dd57600080fd5b8063c4d66de8146104fd578063c87b56dd14610510578063ce1b815f14610523578063da24e8b81461053457600080fd5b806396259c66116100e957806396259c66146103f8578063a22cb465146104c4578063a5b58784146104d7578063b88d4fde146104ea57600080fd5b806370a08231146103a157806372e4c149146103b457806379389510146103c757806395d89b41146103f057600080fd5b806342842e0e11610192578063572b6c0511610161578063572b6c05146103255780635bc4ffdf146103475780636352211e1461035a5780636dc5cc061461036d57600080fd5b806342842e0e146102d65780634a198119146102e95780634e51ea39146102ff57806351cff8d91461031257600080fd5b80631130630c116101ce5780631130630c1461027d57806323b872dd14610290578063241cc208146102a35780632ca62cd5146102c357600080fd5b806301ffc9a71461020057806306fdde0314610228578063081812fc1461023d578063095ea7b314610268575b600080fd5b61021361020e366004612ab7565b6105fd565b60405190151581526020015b60405180910390f35b61023061064f565b60405161021f9190612b24565b61025061024b366004612b37565b6106e1565b6040516001600160a01b03909116815260200161021f565b61027b610276366004612b75565b610708565b005b61027b61028b366004612ba1565b610834565b61027b61029e366004612c12565b61090f565b6102b66102b1366004612c53565b610947565b60405161021f9190612c70565b6102b66102d1366004612c53565b6109e5565b61027b6102e4366004612c12565b610c5c565b6102f1610c77565b60405190815260200161021f565b61025061030d366004612d7a565b610c87565b61027b610320366004612c53565b610cc0565b610213610333366004612c53565b6000546001600160a01b0391821691161490565b61027b610355366004612dae565b610e10565b610250610368366004612b37565b6113cc565b61025061037b366004612d7a565b805160208183018101805160cf825292820191909301209152546001600160a01b031681565b6102f16103af366004612c53565b61142c565b61027b6103c2366004612ba1565b6114b2565b6102f16103d5366004612c53565b6001600160a01b0316600090815260cc602052604090205490565b61023061156c565b610486610406366004612e39565b60408051608080820183526000808352602080840182905283850182905260609384018290526001600160a01b03968716825260ca81528482209587168252948552839020835191820184528054909516815260018501549381019390935260028401549183019190915260039092015460ff1615159181019190915290565b60405161021f919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61027b6104d2366004612e80565b61157b565b61027b6104e5366004612eae565b611591565b61027b6104f8366004612ee7565b611ab6565b61027b61050b366004612c53565b611af5565b61023061051e366004612b37565b611c77565b6000546001600160a01b0316610250565b6102f1610542366004612c53565b611d87565b610213610555366004612e39565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61027b610591366004612b75565b611e84565b6102506105a4366004612d7a565b805160208183018101805160cd825292820191909301209152546001600160a01b031681565b6102306105d8366004612b37565b61203a565b6105f06105eb366004612f89565b6120d4565b60405161021f9190613039565b60006001600160e01b031982166380ac58cd60e01b148061062e57506001600160e01b03198216635b5e139f60e01b145b8061064957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461065e90613071565b80601f016020809104026020016040519081016040528092919081815260200182805461068a90613071565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b5050505050905090565b60006106ec8261222a565b506000908152606960205260409020546001600160a01b031690565b6000610713826113cc565b9050806001600160a01b0316836001600160a01b0316036107855760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661079761228c565b6001600160a01b031614806107b357506107b38161055561228c565b6108255760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161077c565b61082f8383612296565b505050565b61083f6103af61228c565b60011461085e5760405162461bcd60e51b815260040161077c906130ab565b600060cc600061086c61228c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506108cf8184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061230492505050565b7f8b20b7ba7012e3c6dd7eebc0edcd0b48b7b1baaefa3edd31c7c9fe460037840181848460405161090293929190613100565b60405180910390a1505050565b61092061091a61228c565b82612397565b61093c5760405162461bcd60e51b815260040161077c90613136565b61082f838383612415565b60606109528261142c565b6001146109715760405162461bcd60e51b815260040161077c906130ab565b6001600160a01b038216600090815260cb6020908152604091829020805483518184028101840190945280845290918301828280156109d957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109bb575b50505050509050919050565b6060600080836001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a509190810190613184565b9250600083516001600160401b03811115610a6d57610a6d612cbd565b604051908082528060200260200182016040528015610a96578160200160208202803683370190505b5090505b8351831015610b615760ca6000858581518110610ab957610ab961321d565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120938916815292905290206003015460ff1615610b4a57838381518110610b0b57610b0b61321d565b6020026020010151818481518110610b2557610b2561321d565b60200260200101906001600160a01b031690816001600160a01b031681525050610b56565b610b5382613249565b91505b826001019250610a9a565b60009250818451610b729190613262565b6001600160401b03811115610b8957610b89612cbd565b604051908082528060200260200182016040528015610bb2578160200160208202803683370190505b509350600091505b8051831015610c545760006001600160a01b0316818481518110610be057610be061321d565b60200260200101516001600160a01b031614610c4957808381518110610c0857610c0861321d565b6020026020010151848381518110610c2257610c2261321d565b60200260200101906001600160a01b031690816001600160a01b0316815250508160010191505b826001019250610bba565b505050919050565b61082f83838360405180602001604052806000815250611ab6565b6000610c8260c95490565b905090565b600060cd610c948361245d565b604051610ca19190613275565b908152604051908190036020019020546001600160a01b031692915050565b60ca6000610ccc61228c565b6001600160a01b039081168252602080830193909352604091820160009081209185168152925290206003015460ff16610d3e5760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600060ca6000610d4c61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292528120600301805460ff19169215159290921790915560ca81610d9361228c565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020600201557fa1bb6a1161e67eed91355570b58f001eb7071b21d785264e36afcee01d92a8b081610dea61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6011855110610e6c5760405162461bcd60e51b815260206004820152602260248201527f557365726e616d65206d757374206265206d6178203136206368617261637465604482015261727360f01b606482015260840161077c565b600083118015610e7c5750600483105b610ec85760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b600082118015610ed85750600b82105b610ef45760405162461bcd60e51b815260040161077c90613291565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b610f4a6103af61228c565b15610fbd5760405162461bcd60e51b815260206004820152603a60248201527f41757449443a20546865726520697320417574494420616c726561647920726560448201527f676973746572656420666f72207468697320616464726573732e000000000000606482015260840161077c565b60006001600160a01b031660cd86604051610fd89190613275565b908152604051908190036020019020546001600160a01b03161461103e5760405162461bcd60e51b815260206004820152601e60248201527f41757449443a20557365726e616d6520616c72656164792074616b656e210000604482015260640161077c565b806001600160a01b03166303ffe33061105561228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c491906132dd565b6111105760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b600061111b8661245d565b9050600061112860c95490565b905061113b61113561228c565b826124d0565b6111458187612304565b604080516080810182526001600160a01b0385168152602081018790529081018590526001606082015260ca600061117b61228c565b6001600160a01b0390811682526020808301939093526040918201600090812088831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906111f361228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292812090920180546001600160a01b031916918616919091179055819060cc9061124661228c565b6001600160a01b0316815260208101919091526040016000205561126861228c565b60cd836040516112789190613275565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556112b560c980546001019055565b826001600160a01b0316633b4da69f6112cc61228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101889052604401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b505050507fd18d4718c9d3e995ccc3faf448a66e5aae275643957aecfff839ae445574e5d361135561228c565b604080516001600160a01b039092168252602082018490520160405180910390a17f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb26858634836113a061228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050505050565b6000818152606760205260408120546001600160a01b0316806106495760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b60006001600160a01b0382166114965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161077c565b506001600160a01b031660009081526068602052604090205490565b600060cc60006114c061228c565b6001600160a01b03168152602080820192909252604090810160009081205480825260ce909352209091506114f6838583613348565b506114ff61228c565b60cf8484604051611511929190613408565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fd751b525f83cb4458bf789d0f717631f3a26d5c70a81ea922690f3cf09f3e6df90600090a1505050565b60606066805461065e90613071565b61158d61158661228c565b83836124ea565b5050565b6000831180156115a15750600483105b6115ed5760405162461bcd60e51b815260206004820152601c60248201527f526f6c65206d757374206265206265747765656e203120616e64203300000000604482015260640161077c565b6000821180156115fd5750600b82105b6116195760405162461bcd60e51b815260040161077c90613291565b6001600160a01b0381166116645760405162461bcd60e51b815260206004820152601260248201527141757449443a204d697373696e672044414f60701b604482015260640161077c565b61166f6103af61228c565b60011461168e5760405162461bcd60e51b815260040161077c906130ab565b600060cb600061169c61228c565b6001600160a01b03166001600160a01b0316815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561171057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116f2575b5050505050905060005b81518110156117af57826001600160a01b031682828151811061173f5761173f61321d565b60200260200101516001600160a01b03160361179d5760405162461bcd60e51b815260206004820152601760248201527f41757449443a20416c72656164792061206d656d626572000000000000000000604482015260640161077c565b806117a781613249565b91505061171a565b50816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118129190613418565b8310156118315760405162461bcd60e51b815260040161077c90613431565b816001600160a01b03166303ffe33061184861228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b791906132dd565b6119035760405162461bcd60e51b815260206004820181905260248201527f41757449443a204e6f742061206d656d626572206f6620746869732044414f21604482015260640161077c565b604080516080810182526001600160a01b0384168152602081018690529081018490526001606082015260ca600061193961228c565b6001600160a01b0390811682526020808301939093526040918201600090812087831682528452828120855181546001600160a01b03191693169290921782559284015160018201559083015160028201556060909201516003909201805460ff19169215159290921790915560cb906119b161228c565b6001600160a01b03908116825260208083019390935260409091016000908120805460018101825590825292902090910180546001600160a01b0319169184169182179055633b4da69f611a0361228c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101879052604401600060405180830381600087803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505050507f19c2cee09470d9f5934cb6d3839371932a4999f4d3ab1423e43465bb2685863482611a8d61228c565b604080516001600160a01b0393841681529290911660208301520160405180910390a150505050565b611ac7611ac161228c565b83612397565b611ae35760405162461bcd60e51b815260040161077c90613136565b611aef84848484612415565b50505050565b600054600160a81b900460ff1615808015611b1d57506000546001600160a01b90910460ff16105b80611b3e5750303b158015611b3e5750600054600160a01b900460ff166001145b611ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161077c565b6000805460ff60a01b1916600160a01b1790558015611bce576000805460ff60a81b1916600160a81b1790555b611c1060405180604001604052806005815260200164105d5d125160da1b8152506040518060400160405280600381526020016210555560ea1b8152506125b8565b600080546001600160a01b0319166001600160a01b038416179055801561158d576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6060611c828261222a565b60008281526097602052604081208054611c9b90613071565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc790613071565b8015611d145780601f10611ce957610100808354040283529160200191611d14565b820191906000526020600020905b815481529060010190602001808311611cf757829003601f168201915b505050505090506000611d3260408051602081019091526000815290565b90508051600003611d44575092915050565b815115611d76578082604051602001611d5e92919061347e565b60405160208183030381529060405292505050919050565b611d7f846125eb565b949350505050565b6001600160a01b038116600090815260cb6020908152604080832080548251818502810185019093528083528493830182828015611dee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd0575b505050505090506000805b8251811015611e7c576001600160a01b038516600090815260ca602052604081208451909190859084908110611e3157611e3161321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206002015482611e6891906134ad565b915080611e7481613249565b915050611df9565b509392505050565b60ca6000611e9061228c565b6001600160a01b039081168252602080830193909352604091820160009081209186168152925290206003015460ff16611f025760405162461bcd60e51b815260206004820152601360248201527220baba24a21d102737ba10309036b2b6b132b960691b604482015260640161077c565b600081118015611f125750600b81105b611f2e5760405162461bcd60e51b815260040161077c90613291565b816001600160a01b0316632a79c6116040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f909190613418565b811015611faf5760405162461bcd60e51b815260040161077c90613431565b8060ca6000611fbc61228c565b6001600160a01b03908116825260208083019390935260409182016000908120918716815292529020600201557fd79a2f47c1c734f8660476261fe14c54bb4b004e21643d70f34e76f590df70ba8261201361228c565b604080516001600160a01b0393841681529290911660208301528101839052606001611c6b565b60ce602052600090815260409020805461205390613071565b80601f016020809104026020016040519081016040528092919081815260200182805461207f90613071565b80156120cc5780601f106120a1576101008083540402835291602001916120cc565b820191906000526020600020905b8154815290600101906020018083116120af57829003601f168201915b505050505081565b60606000835160000361214a57826001600160a01b0316637c0f6b356040518163ffffffff1660e01b8152600401600060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121479190810190613184565b93505b83516001600160401b0381111561216357612163612cbd565b60405190808252806020026020018201604052801561218c578160200160208202803683370190505b5091505b83518110156122235760ca60008583815181106121af576121af61321d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020600201548282815181106122105761221061321d565b6020908102919091010152600101612190565b5092915050565b6000818152606760205260409020546001600160a01b03166122895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161077c565b50565b6000610c8261265f565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122cb826113cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152606760205260409020546001600160a01b031661237f5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161077c565b600082815260976020526040902061082f82826134c0565b6000806123a3836113cc565b9050806001600160a01b0316846001600160a01b031614806123ea57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80611d7f5750836001600160a01b0316612403846106e1565b6001600160a01b031614949350505050565b60405162461bcd60e51b815260206004820152601e60248201527f41757449443a204175744944207472616e736665722064697361626c65640000604482015260640161077c565b60608160005b8151811015612223576124958282815181106124815761248161321d565b01602001516001600160f81b031916612693565b8282815181106124a7576124a761321d565b60200101906001600160f81b031916908160001a905350806124c881613249565b915050612463565b61158d8282604051806020016040528060008152506126e2565b816001600160a01b0316836001600160a01b03160361254b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161077c565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054600160a81b900460ff166125e15760405162461bcd60e51b815260040161077c9061357f565b61158d8282612715565b60606125f68261222a565b600061260d60408051602081019091526000815290565b9050600081511161262d5760405180602001604052806000815250612658565b8061263784612757565b60405160200161264892919061347e565b6040516020818303038152906040525b9392505050565b60006014361080159061267c57506000546001600160a01b031633145b1561268e575060131936013560601c90565b503390565b6000604160f81b6001600160f81b03198316108015906126c15750602d60f91b6001600160f81b0319831611155b156126de576126d560f883901c60206135ca565b60f81b92915050565b5090565b6126ec8383612857565b6126f96000848484612999565b61082f5760405162461bcd60e51b815260040161077c906135e3565b600054600160a81b900460ff1661273e5760405162461bcd60e51b815260040161077c9061357f565b606561274a83826134c0565b50606661082f82826134c0565b60608160000361277e5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156127a8578061279281613249565b91506127a19050600a8361364b565b9150612782565b6000816001600160401b038111156127c2576127c2612cbd565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b5090505b8415611d7f57612801600183613262565b915061280e600a8661365f565b6128199060306134ad565b60f81b81838151811061282e5761282e61321d565b60200101906001600160f81b031916908160001a905350612850600a8661364b565b94506127f0565b6001600160a01b0382166128ad5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161077c565b6000818152606760205260409020546001600160a01b0316156129125760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161077c565b6001600160a01b038216600090815260686020526040812080546001929061293b9084906134ad565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612a9657836001600160a01b031663150b7a026129c261228c565b8786866040518563ffffffff1660e01b81526004016129e49493929190613673565b6020604051808303816000875af1925050508015612a1f575060408051601f3d908101601f19168201909252612a1c918101906136b0565b60015b612a7c573d808015612a4d576040519150601f19603f3d011682016040523d82523d6000602084013e612a52565b606091505b508051600003612a745760405162461bcd60e51b815260040161077c906135e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d7f565b506001949350505050565b6001600160e01b03198116811461228957600080fd5b600060208284031215612ac957600080fd5b813561265881612aa1565b60005b83811015612aef578181015183820152602001612ad7565b50506000910152565b60008151808452612b10816020860160208601612ad4565b601f01601f19169290920160200192915050565b6020815260006126586020830184612af8565b600060208284031215612b4957600080fd5b5035919050565b6001600160a01b038116811461228957600080fd5b8035612b7081612b50565b919050565b60008060408385031215612b8857600080fd5b8235612b9381612b50565b946020939093013593505050565b60008060208385031215612bb457600080fd5b82356001600160401b0380821115612bcb57600080fd5b818501915085601f830112612bdf57600080fd5b813581811115612bee57600080fd5b866020828501011115612c0057600080fd5b60209290920196919550909350505050565b600080600060608486031215612c2757600080fd5b8335612c3281612b50565b92506020840135612c4281612b50565b929592945050506040919091013590565b600060208284031215612c6557600080fd5b813561265881612b50565b6020808252825182820181905260009190848201906040850190845b81811015612cb15783516001600160a01b031683529284019291840191600101612c8c565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612cfb57612cfb612cbd565b604052919050565b60006001600160401b03831115612d1c57612d1c612cbd565b612d2f601f8401601f1916602001612cd3565b9050828152838383011115612d4357600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6b57600080fd5b61265883833560208501612d03565b600060208284031215612d8c57600080fd5b81356001600160401b03811115612da257600080fd5b611d7f84828501612d5a565b600080600080600060a08688031215612dc657600080fd5b85356001600160401b0380821115612ddd57600080fd5b612de989838a01612d5a565b96506020880135915080821115612dff57600080fd5b50612e0c88828901612d5a565b94505060408601359250606086013591506080860135612e2b81612b50565b809150509295509295909350565b60008060408385031215612e4c57600080fd5b8235612e5781612b50565b91506020830135612e6781612b50565b809150509250929050565b801515811461228957600080fd5b60008060408385031215612e9357600080fd5b8235612e9e81612b50565b91506020830135612e6781612e72565b600080600060608486031215612ec357600080fd5b83359250602084013591506040840135612edc81612b50565b809150509250925092565b60008060008060808587031215612efd57600080fd5b8435612f0881612b50565b93506020850135612f1881612b50565b92506040850135915060608501356001600160401b03811115612f3a57600080fd5b8501601f81018713612f4b57600080fd5b612f5a87823560208401612d03565b91505092959194509250565b60006001600160401b03821115612f7f57612f7f612cbd565b5060051b60200190565b60008060408385031215612f9c57600080fd5b82356001600160401b03811115612fb257600080fd5b8301601f81018513612fc357600080fd5b80356020612fd8612fd383612f66565b612cd3565b82815260059290921b83018101918181019088841115612ff757600080fd5b938201935b8385101561301e57843561300f81612b50565b82529382019390820190612ffc565b955061302d9050868201612b65565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612cb157835183529284019291840191600101613055565b600181811c9082168061308557607f821691505b6020821081036130a557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526035908201527f41757449443a205468657265206973206e6f20417574494420726567697374656040820152743932b2103337b9103a3434b99030b2323932b9b99760591b606082015260800190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000602080838503121561319757600080fd5b82516001600160401b038111156131ad57600080fd5b8301601f810185136131be57600080fd5b80516131cc612fd382612f66565b81815260059190911b820183019083810190878311156131eb57600080fd5b928401925b8284101561321257835161320381612b50565b825292840192908401906131f0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161325b5761325b613233565b5060010190565b8181038181111561064957610649613233565b60008251613287818460208701612ad4565b9190910192915050565b6020808252602c908201527f41757449443a20436f6d6d69746d656e742073686f756c64206265206265747760408201526b065656e203120616e642031360a41b606082015260800190565b6000602082840312156132ef57600080fd5b815161265881612e72565b601f82111561082f57600081815260208120601f850160051c810160208610156133215750805b601f850160051c820191505b818110156133405782815560010161332d565b505050505050565b6001600160401b0383111561335f5761335f612cbd565b6133738361336d8354613071565b836132fa565b6000601f8411600181146133a7576000851561338f5750838201355b600019600387901b1c1916600186901b178355613401565b600083815260209020601f19861690835b828110156133d857868501358255602094850194600190920191016133b8565b50868210156133f55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8183823760009101908152919050565b60006020828403121561342a57600080fd5b5051919050565b6020808252602d908201527f436f6d6d69746d656e74206c6f776572207468616e207468652044414f73206d60408201526c1a5b8818dbdb5b5a5d1b595b9d609a1b606082015260800190565b60008351613490818460208801612ad4565b8351908301906134a4818360208801612ad4565b01949350505050565b8082018082111561064957610649613233565b81516001600160401b038111156134d9576134d9612cbd565b6134ed816134e78454613071565b846132fa565b602080601f831160018114613522576000841561350a5750858301515b600019600386901b1c1916600185901b178555613340565b600085815260208120601f198616915b8281101561355157888601518255948401946001909101908401613532565b508582101561356f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60ff818116838216019081111561064957610649613233565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261365a5761365a613635565b500490565b60008261366e5761366e613635565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136a690830184612af8565b9695505050505050565b6000602082840312156136c257600080fd5b815161265881612aa156fea264697066735822122094d2588c4dc0eee1364c8d62348d2056ad4ff9854fa849bfc255a6881692c0fa64736f6c63430008130033608060405234801561001057600080fd5b50612583806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372d4d23d1161013b578063a230c524116100b8578063cd29c71a1161007c578063cd29c71a146104d5578063d103449c146104ea578063d5f39488146104fd578063dbba0d5c14610510578063f619e1831461052357600080fd5b8063a230c5241461047c578063a2bb6f481461049f578063b5a8a3a1146104a7578063bdffd282146104ba578063be9cd052146104c257600080fd5b80638307bd24116100ff5780638307bd241461043557806384e4dbb91461044857806388098e3a146104505780639023ef95146104615780639c54df641461046957600080fd5b806372d4d23d146103eb5780637c0f6b35146103fe5780637fbaa03b1461040657806380f5560514610419578063810e8c041461042257600080fd5b806331ae450b116101c95780635daf08ca1161018d5780635daf08ca1461039757806367d48f66146103aa57806368839d28146103b257806369130c8d146103c557806370480275146103d857600080fd5b806331ae450b1461034c5780633b4da69f1461036157806341dcea911461037457806359659e90146103875780635c60da1b1461038f57600080fd5b806314bfd6d01161021057806314bfd6d0146102ce5780631785f53c146102f9578063206110db1461030c57806324d7806c146103215780632a79c6111461034457600080fd5b806303ffe3301461024d5780630e4b22851461027557806310972e90146102945780631130630c146102a757806311aee380146102bc575b600080fd5b61026061025b366004611dc8565b610543565b60405190151581526020015b60405180910390f35b604a546102829060ff1681565b60405160ff909116815260200161026c565b6102606102a2366004611df4565b610677565b6102ba6102b5366004611efb565b6106cd565b005b6014545b60405190815260200161026c565b6102e16102dc366004611df4565b610711565b6040516001600160a01b03909116815260200161026c565b6102ba610307366004611f38565b61073b565b61031461085d565b60405161026c9190611fac565b61026061032f366004611f38565b60176020526000908152604090205460ff1681565b6040546102c0565b610354610936565b60405161026c919061200e565b6102ba61036f366004611dc8565b610998565b603c546102e1906001600160a01b031681565b6102e1610a95565b6102e1610ac8565b6102e16103a5366004611df4565b610ad2565b610282600281565b6102606103c0366004611efb565b610ae2565b6102ba6103d3366004611df4565b610b61565b6102ba6103e6366004611f38565b610b99565b6102ba6103f936600461206c565b610d8e565b610354610d98565b6102ba610414366004612088565b610df8565b6102c060325481565b6102ba610430366004611efb565b610e01565b6087546102e1906001600160a01b031681565b610282600581565b600a546001600160a01b03166102e1565b610282600381565b6103546104773660046120a3565b610e39565b61026061048a366004611f38565b60156020526000908152604090205460ff1681565b610282600481565b6102ba6104b5366004611f38565b611039565b610282600181565b6102ba6104d0366004611df4565b611203565b6104dd61123b565b60405161026c9190612155565b6102ba6104f8366004611efb565b6112c9565b6086546102e1906001600160a01b031681565b6102ba61051e366004612168565b611301565b6102c0610531366004612088565b604b6020526000908152604090205481565b6087546000906001600160a01b031661055e57506001610671565b6087546001600160a01b0316158015906105ec5750608760009054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906121f1565b155b156105f957506000610671565b608754604051634f2b51c760e01b81526001600160a01b0385811660048301526024820185905290911690634f2b51c790604401602060405180830381865afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e91906121f1565b90505b92915050565b6000805b603d548110156106c45782603d828154811061069957610699612213565b9060005260206000200154036106b25750600192915050565b806106bc8161223f565b91505061067b565b50600092915050565b3360009081526017602052604090205460ff166107055760405162461bcd60e51b81526004016106fc90612258565b60405180910390fd5b61070e816114c2565b50565b6016818154811061072157600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526017602052604090205460ff1661076a5760405162461bcd60e51b81526004016106fc90612258565b60005b60165481101561080457816001600160a01b03166016828154811061079457610794612213565b6000918252602090912001546001600160a01b0316036107f2576000601682815481106107c3576107c3612213565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806107fc8161223f565b91505061076d565b506001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527ffa8ae95b9a4f666c3b5f27d11b5c2b9fe1045279f674e7a78ca8b087cba3802591015b60405180910390a150565b60606028805480602002602001604051908101604052809291908181526020016000905b8282101561092d5783829060005260206000200180546108a09061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546108cc9061227f565b80156109195780601f106108ee57610100808354040283529160200191610919565b820191906000526020600020905b8154815290600101906020018083116108fc57829003601f168201915b505050505081526020019060010190610881565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610970575b5050505050905090565b600a546001600160a01b031633146109df5760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b604051623ffe3360e41b81526001600160a01b03831660048201526024810182905230906303ffe33090604401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d91906121f1565b610a875760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b60448201526064016106fc565b610a91828261153d565b5050565b60007fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d515b546001600160a01b0316919050565b6000610ab9611675565b6014818154811061072157600080fd5b6028546000908103610af657506000919050565b81516020808401919091206000818152602990925260409091205415610b1f5750600192915050565b806028600081548110610b3457610b34612213565b90600052602060002001604051610b4b91906122b9565b6040518091039020036106c45750600192915050565b3360009081526017602052604090205460ff16610b905760405162461bcd60e51b81526004016106fc90612258565b61070e816116a8565b3360009081526017602052604090205460ff16610bc85760405162461bcd60e51b81526004016106fc90612258565b6001600160a01b03811660009081526015602052604090205460ff16158015610cbc5750306001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061232f565b6040516328e26caf60e11b81526001600160a01b03838116600483015291909116906351c4d95e90602401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061234c565b155b15610cf85760405162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b60448201526064016106fc565b6001600160a01b0381166000818152601760209081526040808320805460ff191660019081179091556016805491820181559093527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428990920180546001600160a01b0319168417905590519182527fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec9101610852565b610a918282611835565b6060601480548060200260200160405190810160405280929190818152602001828054801561098e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610970575050505050905090565b61070e81611854565b3360009081526017602052604090205460ff16610e305760405162461bcd60e51b81526004016106fc90612258565b61070e81611897565b3360009081526017602052604090205460609060ff16610e6b5760405162461bcd60e51b81526004016106fc90612258565b60005b825181101561102f5760156000848381518110610e8d57610e8d612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16610edf57828181518110610eca57610eca612213565b60006020918202929092010152600101610e6e565b60176000848381518110610ef557610ef5612213565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611027576016838281518110610f3457610f34612213565b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091601791869085908110610f8857610f88612213565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa06b993f17e63959ef40ec8755fc98020c50e9d2794ce5fc0886a7792a9fbaec838281518110610ffa57610ffa612213565b602002602001015160405161101e91906001600160a01b0391909116815260200190565b60405180910390a15b600101610e6e565b829150505b919050565b806001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b919061234c565b6001146110e35760405162461bcd60e51b815260206004820152601660248201527527b7363c9027b73137b0b93234b7339028363ab3b4b760511b60448201526064016106fc565b6087546001600160a01b031661114957603c546001600160a01b031633146111445760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920506c7567696e20526567697374727960601b60448201526064016106fc565b6111e1565b604051630935e01b60e21b815233600482015230906324d7806c90602401602060405180830381865afa158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a891906121f1565b6111e15760405162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b60448201526064016106fc565b608780546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526017602052604090205460ff166112325760405162461bcd60e51b81526004016106fc90612258565b61070e81611a97565b601e80546112489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546112749061227f565b80156112c15780601f10611296576101008083540402835291602001916112c1565b820191906000526020600020905b8154815290600101906020018083116112a457829003601f168201915b505050505081565b3360009081526017602052604090205460ff166112f85760405162461bcd60e51b81526004016106fc90612258565b61070e81611b1b565b600054610100900460ff16158080156113215750600054600160ff909116105b8061133b5750303b15801561133b575060005460ff166001145b61139e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106fc565b6000805460ff1916600117905580156113c1576000805461ff0019166101001790555b608680546001600160a01b0389166001600160a01b031991821681179092556000828152601760205260408120805460ff191660019081179091556016805491820181559091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289018054909116909117905561143d85611c41565b600a80546001600160a01b0319166001600160a01b03881617905561146183611a97565b61146a846114c2565b61147382611cc3565b80156114b9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60008151116115015760405162461bcd60e51b815260206004820152600b60248201526a1a5b9d985b1a59081d5c9b60aa1b60448201526064016106fc565b601e61150d82826123b4565b507f48674fffb03fee00a113cc146f3aa94a9720a4cb3839fbb855c436859d39a977816040516108529190612155565b600a546001600160a01b031633146115845760405162461bcd60e51b815260206004820152600a60248201526913db9b1e48105d5d125160b21b60448201526064016106fc565b6001600160a01b03821660009081526015602052604090205460ff16156115e05760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c90309036b2b6b132b960811b60448201526064016106fc565b6001600160a01b038216600081815260156020526040808220805460ff1916600190811790915560148054918201815583527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690931790925590517f94d9b0a056867efca93631b338c7fde3befc3f54db36b90b8456b069385c30be9190a15050565b905090565b60006116706116a560017f9cd0ce681e2068367bc5a81f4d9ba398e81f54e5133fd5d82ceb0f48c38d7239612474565b90565b603c5460408051631055995d60e31b815290516000926001600160a01b0316916382accae89160048083019260209291908290030181865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611716919061232f565b6040516339076b2160e11b8152600481018490529091506000906001600160a01b0383169063720ed64290602401600060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117899190810190612487565b5151116117c95760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206d6f64756c6560901b60448201526064016106fc565b603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3018290556040518281527fc1866ccaad33ac161f17d9db7a528f0c819a376e1cad17ba2d5c9b49a7eba2cd9060200160405180910390a15050565b61183e82611d34565b60ff9091166000908152604b6020526040902055565b604a5460ff161561187857604051632eb2d90160e11b815260040160405180910390fd5b61188181611d34565b604a805460ff191660ff92909216919091179055565b6118a081610ae2565b6118df5760405162461bcd60e51b815260206004820152601060248201526f1d5c9b08191bd95cdb9d08195e1a5cdd60821b60448201526064016106fc565b80516020808301919091206000818152602990925260409091205460285461190990600190612474565b8114611a1a57602880546000919061192390600190612474565b8154811061193357611933612213565b9060005260206000200180546119489061227f565b80601f01602080910402602001604051908101604052809291908181526020018280546119749061227f565b80156119c15780601f10611996576101008083540402835291602001916119c1565b820191906000526020600020905b8154815290600101906020018083116119a457829003601f168201915b505050505090506000818051906020012090508260296000838152602001908152602001600020819055508160288481548110611a0057611a00612213565b906000526020600020019081611a1691906123b4565b5050505b6028805480611a2b57611a2b612537565b600190038181906000526020600020016000611a479190611d65565b905560008281526029602052604080822091909155517f906b87aebf1e5cc40a1cebd6811c88addf04309f8c8ce71c7d6449d343e4ad0990611a8a908590612155565b60405180910390a1505050565b600081118015611aa75750600b81105b611ae85760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016106fc565b6040818155518181527fb65d029b8a6c07cb00888825aac545b9b5c5c022683357f9d1ea8abf06dfdb4690602001610852565b8051602082012060285460009015611b8357600082815260296020526040902054151580611b7a5750816028600081548110611b5957611b59612213565b90600052602060002001604051611b7091906122b9565b6040518091039020145b15611b83575060015b8015611bc65760405162461bcd60e51b815260206004820152601260248201527175726c20616c72656164792065786973747360701b60448201526064016106fc565b602880546000848152602960205260408120829055600182018355919091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab501611c1184826123b4565b507f21d5cca3f840791ade736f51501810c14b8b01791ac4357713ed763ccbbaf3a983604051611a8a9190612155565b600081118015611c515750600481105b611c8e5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081b585c9ad95d60921b60448201526064016106fc565b60328190556040518181527fed3f3ef79c893a1a183c59258a18224fe4f9dee870f486fce68ad3d3f26bff7090602001610852565b6001600160a01b038116611d125760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420706c7567696e526567697374727960501b60448201526064016106fc565b603c80546001600160a01b0319166001600160a01b0392909216919091179055565b60058160ff161180611d47575060ff8116155b1561070e57604051630dc9539d60e31b815260040160405180910390fd5b508054611d719061227f565b6000825580601f10611d81575050565b601f01602090049060005260206000209081019061070e91905b80821115611daf5760008155600101611d9b565b5090565b6001600160a01b038116811461070e57600080fd5b60008060408385031215611ddb57600080fd5b8235611de681611db3565b946020939093013593505050565b600060208284031215611e0657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611e4657611e46611e0d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e7557611e75611e0d565b604052919050565b600067ffffffffffffffff821115611e9757611e97611e0d565b50601f01601f191660200190565b600082601f830112611eb657600080fd5b8135611ec9611ec482611e7d565b611e4c565b818152846020838601011115611ede57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611f0d57600080fd5b813567ffffffffffffffff811115611f2457600080fd5b611f3084828501611ea5565b949350505050565b600060208284031215611f4a57600080fd5b8135611f5581611db3565b9392505050565b60005b83811015611f77578181015183820152602001611f5f565b50506000910152565b60008151808452611f98816020860160208601611f5c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561200157603f19888603018452611fef858351611f80565b94509285019290850190600101611fd3565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561204f5783516001600160a01b03168352928401929184019160010161202a565b50909695505050505050565b803560ff8116811461103457600080fd5b6000806040838503121561207f57600080fd5b611de68361205b565b60006020828403121561209a57600080fd5b611f558261205b565b600060208083850312156120b657600080fd5b823567ffffffffffffffff808211156120ce57600080fd5b818501915085601f8301126120e257600080fd5b8135818111156120f4576120f4611e0d565b8060051b9150612105848301611e4c565b818152918301840191848101908884111561211f57600080fd5b938501935b83851015612149578435925061213983611db3565b8282529385019390850190612124565b98975050505050505050565b602081526000611f556020830184611f80565b60008060008060008060c0878903121561218157600080fd5b863561218c81611db3565b9550602087013561219c81611db3565b945060408701359350606087013567ffffffffffffffff8111156121bf57600080fd5b6121cb89828a01611ea5565b9350506080870135915060a08701356121e381611db3565b809150509295509295509295565b60006020828403121561220357600080fd5b81518015158114611f5557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161225157612251612229565b5060010190565b6020808252600d908201526c4e6f7420616e2061646d696e2160981b604082015260600190565b600181811c9082168061229357607f821691505b6020821081036122b357634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546122c78161227f565b600182811680156122df57600181146122f457612323565b60ff1984168752821515830287019450612323565b8760005260208060002060005b8581101561231a5781548a820152908401908201612301565b50505082870194505b50929695505050505050565b60006020828403121561234157600080fd5b8151611f5581611db3565b60006020828403121561235e57600080fd5b5051919050565b601f8211156123af57600081815260208120601f850160051c8101602086101561238c5750805b601f850160051c820191505b818110156123ab57828155600101612398565b5050505b505050565b815167ffffffffffffffff8111156123ce576123ce611e0d565b6123e2816123dc845461227f565b84612365565b602080601f83116001811461241757600084156123ff5750858301515b600019600386901b1c1916600185901b1785556123ab565b600085815260208120601f198616915b8281101561244657888601518255948401946001909101908401612427565b50858210156124645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111561067157610671612229565b6000602080838503121561249a57600080fd5b825167ffffffffffffffff808211156124b257600080fd5b90840190604082870312156124c657600080fd5b6124ce611e23565b8251828111156124dd57600080fd5b83019150601f820187136124f057600080fd5b81516124fe611ec482611e7d565b818152888683860101111561251257600080fd5b61252182878301888701611f5c565b8252509183015192820192909252949350505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212205761d28ca7ca59023724783f1259ec37e0f345e50b518373804e382d75337dc564736f6c6343000813003360806040523480156200001157600080fd5b50604051620010db380380620010db833981016040819052620000349162000268565b6200003f3362000218565b6200004a3362000218565b600280546001600160a01b0319166001600160a01b038316178155604080516080810182526004918101918252636e6f6e6560e01b60608201529081526000602082018190526001805480820182559152815191927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6910201908190620000d290826200033f565b50602082015181600101555050600160405180604001604052806040518060800160405280604281526020016200109960429139815260016020918201819052835490810184556000938452922081519192600202019081906200013790826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001057604291398152600260209182018190528354600181018555600094855291909320825192939190910201908190620001a090826200033f565b506020820151816001015550506001604051806040016040528060405180608001604052806042815260200162001015604291398152600360209182015282546001810184556000938452922081519192600202019081906200020490826200033f565b50602082015181600101555050506200040b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c557607f821691505b602082108103620002e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033a57600081815260208120601f850160051c81016020861015620003155750805b601f850160051c820191505b81811015620003365782815560010162000321565b5050505b505050565b81516001600160401b038111156200035b576200035b6200029a565b62000373816200036c8454620002b0565b84620002ec565b602080601f831160018114620003ab5760008415620003925750858301515b600019600386901b1c1916600185901b17855562000336565b600085815260208120601f198616915b82811015620003dc57888601518255948401946001909101908401620003bb565b5085821015620003fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bfa806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638fe86b3f116100665780638fe86b3f14610139578063adcee6e31461014c578063c13981371461016f578063d36ac27c14610184578063f2fde38b1461019557600080fd5b8063664bff0d146100a3578063715018a6146100c9578063720ed642146100d357806381b2248a146100f35780638da5cb5b14610114575b600080fd5b6100b66100b136600461078f565b6101a8565b6040519081526020015b60405180910390f35b6100d16102a4565b005b6100e66100e13660046107d1565b6102b8565b6040516100c09190610859565b6101066101013660046107d1565b61039c565b6040516100c0929190610873565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b6100d1610147366004610895565b610458565b61015f61015a3660046108e1565b610499565b60405190151581526020016100c0565b610177610528565b6040516100c0919061090a565b6002546001600160a01b0316610121565b6100d16101a33660046108e1565b610623565b60006101b261069c565b816101f25760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642075726960a81b60448201526064015b60405180910390fd5b600180546040805160606020601f8801819004028201810183529181018681529293929091829190889088908190850183828082843760009201829052509385525050506020918201859052835460018101855593815220815191926002020190819061025f9082610a0b565b506020918201516001909101556040518281527f74e253944c73b5e634175a60d5ef4a7af301f3b0148e2dd3527edfd0329108f6910160405180910390a19392505050565b6102ac61069c565b6102b660006106f6565b565b604080518082019091526060815260006020820152600182815481106102e0576102e0610acb565b906000526020600020906002020160405180604001604052908160008201805461030990610982565b80601f016020809104026020016040519081016040528092919081815260200182805461033590610982565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b505050505081526020016001820154815250509050919050565b600181815481106103ac57600080fd5b90600052602060002090600202016000915090508060000180546103cf90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546103fb90610982565b80156104485780601f1061041d57610100808354040283529160200191610448565b820191906000526020600020905b81548152906001019060200180831161042b57829003601f168201915b5050505050908060010154905082565b61046061069c565b81816001858154811061047557610475610acb565b90600052602060002090600202016000019182610493929190610ae1565b50505050565b6002546000906001600160a01b03166104b457506000919050565b60025460405163974b152160e01b81526001600160a01b0384811660048301529091169063974b152190602401602060405180830381865afa1580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190610ba2565b92915050565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561061a578382906000526020600020906002020160405180604001604052908160008201805461057f90610982565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90610982565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081526020016001820154815250508152602001906001019061054c565b50505050905090565b61062b61069c565b6001600160a01b0381166106905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101e9565b610699816106f6565b50565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075857600080fd5b50813567ffffffffffffffff81111561077057600080fd5b60208301915083602082850101111561078857600080fd5b9250929050565b600080602083850312156107a257600080fd5b823567ffffffffffffffff8111156107b957600080fd5b6107c585828601610746565b90969095509350505050565b6000602082840312156107e357600080fd5b5035919050565b6000815180845260005b81811015610810576020818501810151868301820152016107f4565b506000602082860101526020601f19601f83011685010191505092915050565b600081516040845261084560408501826107ea565b602093840151949093019390935250919050565b60208152600061086c6020830184610830565b9392505050565b60408152600061088660408301856107ea565b90508260208301529392505050565b6000806000604084860312156108aa57600080fd5b83359250602084013567ffffffffffffffff8111156108c857600080fd5b6108d486828701610746565b9497909650939450505050565b6000602082840312156108f357600080fd5b81356001600160a01b038116811461086c57600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561095f57603f1988860301845261094d858351610830565b94509285019290850190600101610931565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061099657607f821691505b6020821081036109b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a2561096c565b610a3981610a338454610982565b846109bc565b602080601f831160018114610a6e5760008415610a565750858301515b600019600386901b1c1916600185901b178555610a02565b600085815260208120601f198616915b82811015610a9d57888601518255948401946001909101908401610a7e565b5085821015610abb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b67ffffffffffffffff831115610af957610af961096c565b610b0d83610b078354610982565b836109bc565b6000601f841160018114610b415760008515610b295750838201355b600019600387901b1c1916600186901b178355610b9b565b600083815260209020601f19861690835b82811015610b725786850135825560209485019460019092019101610b52565b5086821015610b8f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215610bb457600080fd5b8151801515811461086c57600080fdfea2646970667358221220eaebe4a1478f0d5d4e3cce76d1f32eeb89096f0ea33f16b47fd5034463c6256664736f6c63430008130033697066733a2f2f6261666b726569656737647770687334353534673732366b616c7635657a3232686435356b33626b73657061367272766f6e366766346d75706579697066733a2f2f6261666b7265696878637a366579746d66366c6d356f7971656536376a756a78657075637a6c34326c77326f726c6673773679647335676d343669697066733a2f2f6261666b72656961327369346e68716a6478673534337a377070356b63687678346175776d37676e353477667466613276796b666b6a633470706560806040526001600b553480156200001657600080fd5b506040516200304338038062003043833981016040819052620000399162000143565b604080518082018252600a8082526920baba1028363ab3b4b760b11b60208084018290528451808601909552918452908301529060006200007b83826200021a565b5060016200008a82826200021a565b505050620000a7620000a1620000ed60201b60201c565b620000f1565b6001600855600c8054336001600160a01b03199182168117909255600d80548216909217909155600e80549091166001600160a01b0392909216919091179055620002e6565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200015657600080fd5b81516001600160a01b03811681146200016e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612d4d80620002f66000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063d5aff65f116100b6578063e985e9c51161007a578063e985e9c51461078e578063f0b7832a146107ae578063f1418ee9146107ce578063f2fde38b146107ff578063f61db7401461081f578063f7d975771461083f57600080fd5b8063d5aff65f14610653578063d9973726146106b2578063e07208c4146106d2578063e60a955d146106e8578063e832df911461070857600080fd5b8063a89ae4ba116100fd578063a89ae4ba146105b3578063a9810f45146105d3578063b88d4fde146105f3578063c87b56dd14610613578063d436d0ef1461063357600080fd5b8063715018a61461053457806382accae8146105495780638da5cb5b1461056957806395d89b411461057e578063a22cb4651461059357600080fd5b8063342094ba116101c75780634d4547c91161018b5780634d4547c91461049557806351c4d95e146104a8578063587f6b35146104de5780636352211e146104f457806370a082311461051457600080fd5b8063342094ba146103ff57806337ea532d1461041f578063422d96c41461043557806342842e0e146104555780634c69c00f1461047557600080fd5b8063235883e31161020e578063235883e31461033757806323b872dd1461035757806326b6ee9e1461037757806328077c1a146103975780632b948c39146103d257600080fd5b806301ffc9a71461024b57806306fdde031461028057806307d29188146102a2578063081812fc146102dd578063095ea7b314610315575b600080fd5b34801561025757600080fd5b5061026b610266366004612495565b61085f565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956108b1565b6040516102779190612502565b3480156102ae57600080fd5b506102cf6102bd36600461252a565b60126020526000908152604090205481565b604051908152602001610277565b3480156102e957600080fd5b506102fd6102f8366004612547565b610943565b6040516001600160a01b039091168152602001610277565b34801561032157600080fd5b50610335610330366004612560565b61096a565b005b34801561034357600080fd5b506102fd61035236600461252a565b610a84565b34801561036357600080fd5b5061033561037236600461258c565b610aa6565b34801561038357600080fd5b5061033561039236600461268c565b610ad7565b3480156103a357600080fd5b5061026b6103b2366004612560565b601360209081526000928352604080842090915290825290205460ff1681565b3480156103de57600080fd5b506103f26103ed36600461252a565b610af7565b60405161027791906126d3565b34801561040b57600080fd5b506102cf61041a366004612725565b610b63565b34801561042b57600080fd5b506102cf600a5481565b34801561044157600080fd5b506103f2610450366004612547565b610d40565b34801561046157600080fd5b5061033561047036600461258c565b610da3565b34801561048157600080fd5b5061033561049036600461252a565b610dbe565b6103356104a3366004612560565b610de8565b3480156104b457600080fd5b506102cf6104c336600461252a565b6001600160a01b031660009081526012602052604090205490565b3480156104ea57600080fd5b506102cf60095481565b34801561050057600080fd5b506102fd61050f366004612547565b6114ec565b34801561052057600080fd5b506102cf61052f36600461252a565b61154c565b34801561054057600080fd5b506103356115d2565b34801561055557600080fd5b50600e546102fd906001600160a01b031681565b34801561057557600080fd5b506102fd6115e6565b34801561058a57600080fd5b506102956115ff565b34801561059f57600080fd5b506103356105ae366004612823565b61160e565b3480156105bf57600080fd5b50600d546102fd906001600160a01b031681565b3480156105df57600080fd5b506103356105ee36600461252a565b61161d565b3480156105ff57600080fd5b5061033561060e36600461285c565b61168e565b34801561061f57600080fd5b5061029561062e366004612547565b6116c6565b34801561063f57600080fd5b5061033561064e36600461252a565b6117d6565b34801561065f57600080fd5b5061069361066e366004612547565b601160205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610277565b3480156106be57600080fd5b506103356106cd366004612547565b611800565b3480156106de57600080fd5b506102cf600b5481565b3480156106f457600080fd5b506103356107033660046128dc565b61180d565b34801561071457600080fd5b5061076a610723366004612547565b604080518082019091526000808252602082015250600090815260116020908152604091829020825180840190935280546001600160a01b03168352600101549082015290565b6040805182516001600160a01b031681526020928301519281019290925201610277565b34801561079a57600080fd5b5061026b6107a9366004612901565b611897565b3480156107ba57600080fd5b50600f546102fd906001600160a01b031681565b3480156107da57600080fd5b506107ee6107e9366004612547565b6118c5565b60405161027795949392919061292f565b34801561080b57600080fd5b5061033561081a36600461252a565b61198f565b34801561082b57600080fd5b50600c546102fd906001600160a01b031681565b34801561084b57600080fd5b5061033561085a366004612971565b611a08565b60006001600160e01b031982166380ac58cd60e01b148061089057506001600160e01b03198216635b5e139f60e01b145b806108ab57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546108c090612993565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612993565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600061094e82611a79565b506000908152600460205260409020546001600160a01b031690565b6000610975826114ec565b9050806001600160a01b0316836001600160a01b0316036109e75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a035750610a038133611897565b610a755760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016109de565b610a7f8383611ad8565b505050565b6001600160a01b0381166000908152601260205260408120546108ab906114ec565b610ab03382611b46565b610acc5760405162461bcd60e51b81526004016109de906129cd565b610a7f838383611ba4565b610adf611d40565b6000828152601060205260409020610a7f8282612a69565b6001600160a01b038116600090815260146020908152604091829020805483518184028101840190945280845260609392830182828015610b5757602002820191906000526020600020905b815481526020019060010190808311610b43575b50505050509050919050565b6000610b6d611d40565b6000855111610bbe5760405162461bcd60e51b815260206004820152601a60248201527f4155543a204d657461646174612055524920697320656d70747900000000000060448201526064016109de565b8280610bc8575083155b610c225760405162461bcd60e51b815260206004820152602560248201527f4155543a2053686f756c642062652066726565206966206e6f74207374616e64604482015264616c6f6e6560d81b60648201526084016109de565b60098054906000610c3283612b3f565b90915550506009546040805160c08101825287815260208082018890526001600160a01b038a168284015260016060830152861515608083015260a082018690526000848152601090915291909120815192935090918190610c949082612a69565b5060208281015160018301556040830151600283018054606086015160808701511515600160a81b0260ff60a81b19911515600160a01b026001600160a81b03199093166001600160a01b0390951694909417919091171691909117905560a08301518051610d09926003850192019061241f565b50506040518291507fcbbaf67d68fba51d618db755cf99150d3acd7bad449961ed3118fc81a21e23eb90600090a295945050505050565b600081815260106020908152604091829020600301805483518184028101840190945280845260609392830182828015610b575760200282019190600052602060002090815481526020019060010190808311610b435750505050509050919050565b610a7f8383836040518060200160405280600081525061168e565b610dc6611d40565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600260085403610e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109de565b60026008819055506000826001600160a01b03166389f12ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612b58565b604051630935e01b60e21b81523360048201529091506001600160a01b038216906324d7806c90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190612b75565b1515600114610f515760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064016109de565b600082815260106020526040808220815160c08101909252805482908290610f7890612993565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612993565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b5050509183525050600182015460208083019190915260028301546001600160a01b03811660408085019190915260ff600160a01b8304811615156060860152600160a81b9092049091161515608084015260038401805482518185028101850190935280835260a090940193919290919083018282801561109257602002820191906000526020600020905b81548152602001906001019080831161107e575b505050505081525050905080608001516110e45760405162461bcd60e51b815260206004820152601360248201527263616e2774206265207374616e64616c6f6e6560681b60448201526064016109de565b80602001513410156111385760405162461bcd60e51b815260206004820152601c60248201527f4155543a20496e73756666696369656e7420707269636520706169640000000060448201526064016109de565b6001600160a01b038216600090815260136020908152604080832086845290915290205460ff16156111ba5760405162461bcd60e51b815260206004820152602560248201527f4155543a20506c7567696e20616c726561647920696e7374616c6c6564206f6e604482015264206e6f766160d81b60648201526084016109de565b6001600160a01b03821660009081526013602090815260408083208684529091528120805460ff191660011790556111f28433611d9f565b6001600160a01b03841660009081526014602090815260408220805460018101825590835281832001839055600b549085015192935090916103e89161123791612b92565b6112419190612bbf565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561127c573d6000803e3d6000fd5b5060408301516000906001600160a01b03166112988334612bd3565b604051600081818185875af1925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50509050806113225760405162461bcd60e51b815260206004820152601560248201527415985b1d59481d1c985b9cd9995c8819985a5b1959605a1b60448201526064016109de565b846001600160a01b031686847f561de58a0a6386fe4dc1556ab9cc4034ba90dfea72337f203d0f0a774aff142c60405160405180910390a4600083815260116020908152604080832080546001600160a01b0319166001600160a01b038c169081179091558084526012909252918290208590559051621526e560e51b8152600481018590526302a4dca090602401600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b50505050866001600160a01b031663a1308f276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612be6565b6001036114a85760405163b5a8a3a160e01b81526001600160a01b03888116600483015286169063b5a8a3a190602401600060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050505b6040516001600160a01b0388169084907f91a697a20a7603d919a673d889a6263bca15841c5b84791bea2091bcefff95a890600090a3505060016008555050505050565b6000818152600260205260408120546001600160a01b0316806108ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b60006001600160a01b0382166115b65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109de565b506001600160a01b031660009081526003602052604090205490565b6115da611d40565b6115e46000611e81565b565b60006115fa6007546001600160a01b031690565b905090565b6060600180546108c090612993565b611619338383611ed3565b5050565b611625611d40565b600f54604080516001600160a01b03808516825290921660208301527f5306ce2f8e36872437fa0825af321e9ff5ac117d48c602f520dace01c1ac1324910160405180910390a1600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6116983383611b46565b6116b45760405162461bcd60e51b81526004016109de906129cd565b6116c084848484611fa1565b50505050565b60606116d182611a79565b600082815260066020526040812080546116ea90612993565b80601f016020809104026020016040519081016040528092919081815260200182805461171690612993565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b50505050509050600061178160408051602081019091526000815290565b90508051600003611793575092915050565b8151156117c55780826040516020016117ad929190612bff565b60405160208183030381529060405292505050919050565b6117ce84611fd4565b949350505050565b6117de611d40565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b611808611d40565b600b55565b600082815260106020526040902060028101546001600160a01b031633146118775760405162461bcd60e51b815260206004820181905260248201527f4155543a204f6e6c792063726561746f722063616e207365742061637469766560448201526064016109de565b6002018054911515600160a01b0260ff60a01b1990921691909117905550565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6010602052600090815260409020805481906118e090612993565b80601f016020809104026020016040519081016040528092919081815260200182805461190c90612993565b80156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b50505060018401546002909401549293926001600160a01b038116925060ff600160a01b820481169250600160a81b9091041685565b611997611d40565b6001600160a01b0381166119fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109de565b611a0581611e81565b50565b600082815260106020526040902060028101546001600160a01b03163314611a725760405162461bcd60e51b815260206004820152601f60248201527f4155543a204f6e6c792063726561746f722063616e207365742070726963650060448201526064016109de565b6001015550565b6000818152600260205260409020546001600160a01b0316611a055760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109de565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b0d826114ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b52836114ec565b9050806001600160a01b0316846001600160a01b03161480611b795750611b798185611897565b806117ce5750836001600160a01b0316611b9284610943565b6001600160a01b031614949350505050565b826001600160a01b0316611bb7826114ec565b6001600160a01b031614611c1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016109de565b6001600160a01b038216611c7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109de565b611c88600082611ad8565b6001600160a01b0383166000908152600360205260408120805460019290611cb1908490612bd3565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cdf908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b33611d496115e6565b6001600160a01b0316146115e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6000828152601060205260408120600a80549083611dbc83612b3f565b9091555050600a5460008181526011602052604090206001018590559150611de48383612048565b611e7a82826000018054611df790612993565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2390612993565b8015611e705780601f10611e4557610100808354040283529160200191611e70565b820191906000526020600020905b815481529060010190602001808311611e5357829003601f168201915b505050505061218a565b5092915050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611f345760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611fac848484611ba4565b611fb88484848461221d565b6116c05760405162461bcd60e51b81526004016109de90612c41565b6060611fdf82611a79565b6000611ff660408051602081019091526000815290565b905060008151116120165760405180602001604052806000815250612041565b806120208461231e565b604051602001612031929190612bff565b6040516020818303038152906040525b9392505050565b6001600160a01b03821661209e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600260205260409020546001600160a01b0316156121035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b6001600160a01b038216600090815260036020526040812080546001929061212c908490612c2e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b03166122055760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016109de565b6000828152600660205260409020610a7f8282612a69565b60006001600160a01b0384163b1561231357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612261903390899088908890600401612c93565b6020604051808303816000875af192505050801561229c575060408051601f3d908101601f1916820190925261229991810190612cd0565b60015b6122f9573d8080156122ca576040519150601f19603f3d011682016040523d82523d6000602084013e6122cf565b606091505b5080516000036122f15760405162461bcd60e51b81526004016109de90612c41565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506117ce565b506001949350505050565b6060816000036123455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561236f578061235981612b3f565b91506123689050600a83612bbf565b9150612349565b60008167ffffffffffffffff81111561238a5761238a6125cd565b6040519080825280601f01601f1916602001820160405280156123b4576020820181803683370190505b5090505b84156117ce576123c9600183612bd3565b91506123d6600a86612ced565b6123e1906030612c2e565b60f81b8183815181106123f6576123f6612d01565b60200101906001600160f81b031916908160001a905350612418600a86612bbf565b94506123b8565b82805482825590600052602060002090810192821561245a579160200282015b8281111561245a57825182559160200191906001019061243f565b5061246692915061246a565b5090565b5b80821115612466576000815560010161246b565b6001600160e01b031981168114611a0557600080fd5b6000602082840312156124a757600080fd5b81356120418161247f565b60005b838110156124cd5781810151838201526020016124b5565b50506000910152565b600081518084526124ee8160208601602086016124b2565b601f01601f19169290920160200192915050565b60208152600061204160208301846124d6565b6001600160a01b0381168114611a0557600080fd5b60006020828403121561253c57600080fd5b813561204181612515565b60006020828403121561255957600080fd5b5035919050565b6000806040838503121561257357600080fd5b823561257e81612515565b946020939093013593505050565b6000806000606084860312156125a157600080fd5b83356125ac81612515565b925060208401356125bc81612515565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561260c5761260c6125cd565b604052919050565b600067ffffffffffffffff83111561262e5761262e6125cd565b612641601f8401601f19166020016125e3565b905082815283838301111561265557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261267d57600080fd5b61204183833560208501612614565b6000806040838503121561269f57600080fd5b82359150602083013567ffffffffffffffff8111156126bd57600080fd5b6126c98582860161266c565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561270b578351835292840192918401916001016126ef565b50909695505050505050565b8015158114611a0557600080fd5b600080600080600060a0868803121561273d57600080fd5b853561274881612515565b945060208681013567ffffffffffffffff8082111561276657600080fd5b6127728a838b0161266c565b9650604089013595506060890135915061278b82612717565b909350608088013590808211156127a157600080fd5b818901915089601f8301126127b557600080fd5b8135818111156127c7576127c76125cd565b8060051b91506127d88483016125e3565b818152918301840191848101908c8411156127f257600080fd5b938501935b83851015612810578435825293850193908501906127f7565b8096505050505050509295509295909350565b6000806040838503121561283657600080fd5b823561284181612515565b9150602083013561285181612717565b809150509250929050565b6000806000806080858703121561287257600080fd5b843561287d81612515565b9350602085013561288d81612515565b925060408501359150606085013567ffffffffffffffff8111156128b057600080fd5b8501601f810187136128c157600080fd5b6128d087823560208401612614565b91505092959194509250565b600080604083850312156128ef57600080fd5b82359150602083013561285181612717565b6000806040838503121561291457600080fd5b823561291f81612515565b9150602083013561285181612515565b60a08152600061294260a08301886124d6565b6020830196909652506001600160a01b0393909316604084015290151560608301521515608090910152919050565b6000806040838503121561298457600080fd5b50508035926020909101359150565b600181811c908216806129a757607f821691505b6020821081036129c757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f821115610a7f57600081815260208120601f850160051c81016020861015612a425750805b601f850160051c820191505b81811015612a6157828155600101612a4e565b505050505050565b815167ffffffffffffffff811115612a8357612a836125cd565b612a9781612a918454612993565b84612a1b565b602080601f831160018114612acc5760008415612ab45750858301515b600019600386901b1c1916600185901b178555612a61565b600085815260208120601f198616915b82811015612afb57888601518255948401946001909101908401612adc565b5085821015612b195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201612b5157612b51612b29565b5060010190565b600060208284031215612b6a57600080fd5b815161204181612515565b600060208284031215612b8757600080fd5b815161204181612717565b80820281158282048414176108ab576108ab612b29565b634e487b7160e01b600052601260045260246000fd5b600082612bce57612bce612ba9565b500490565b818103818111156108ab576108ab612b29565b600060208284031215612bf857600080fd5b5051919050565b60008351612c118184602088016124b2565b835190830190612c258183602088016124b2565b01949350505050565b808201808211156108ab576108ab612b29565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612cc6908301846124d6565b9695505050505050565b600060208284031215612ce257600080fd5b81516120418161247f565b600082612cfc57612cfc612ba9565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220019c2af59ca2dd1582ee3484d27da4a3fb42e610c8788e5b9a74a26dbab192ab64736f6c63430008130033610100604052601e608052602860a081905260c05262278d0060e05234801561002757600080fd5b5060805160a05160c05160e05161375861007d600039600081816103280152612105015260008181610411015261216f0152600081816103b2015261213d01526000818161017d01526120d101526137586000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80635a53f24a116100c3578063958ee3701161007c578063958ee3701461039a578063bf15e017146103ad578063c4d66de8146103e6578063df3e30f0146103f9578063e5720d9a1461040c578063f1e0fa781461043357600080fd5b80635a53f24a146102ab57806361434c96146102cf5780636e09f59c14610310578063780e78931461032357806386d94e261461035f578063897bf2b61461038757600080fd5b8063318e3d8c11610115578063318e3d8c14610230578063343bce3b1461025057806336f3354e146102705780633ad3b0411461028557806349fc23c814610298578063584f01be146101d857600080fd5b8063083ad23b146101525780630b51806d146101785780630c4378e0146101b257806319d52ebe146101c55780632da9de59146101d8575b600080fd5b610165610160366004612d88565b610453565b6040519081526020015b60405180910390f35b61019f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff909116815260200161016f565b6101656101c0366004612dac565b61092d565b6101656101d3366004612dac565b61094e565b6101eb6101e6366004612dac565b610978565b60405161016f919060006080820190506001600160401b0380845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b61024361023e366004612d88565b610a00565b60405161016f9190612e2c565b61026361025e366004612d88565b610aa9565b60405161016f9190612e3a565b61028361027e366004612fdf565b611138565b005b6102836102933660046130c6565b611451565b6101656102a6366004613148565b611637565b61019f6102b9366004613194565b60036020526000908152604090205461ffff1681565b6102f86102dd366004612d88565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b61026361031e366004612d88565b61181b565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161016f565b61037261036d366004612d88565b611b7c565b6040805192835260208301919091520161016f565b6102836103953660046131ad565b611dd5565b6101656103a8366004613216565b611f8e565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161016f565b6102836103f4366004612d88565b611fab565b610165610407366004612dac565b612457565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b610446610441366004612d88565b612bea565b60405161016f9190613265565b600080610460838461092d565b9050600061046d84610aa9565b5160008381526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a52908604831698840198909852969093049092169482019490945261012084015282519151939450919261057e921661334c565b6001600160401b03169350846001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190613373565b81610100015110610925576001600160401b034281168252600061010083015260408201511661062357670de0b6b3a764000061067b565b80604001516001600160401b03168260036000610640898a61092d565b815260208101919091526040016000205461065f919061ffff1661338c565b61067190670de0b6b3a764000061338c565b61067b91906133b9565b816101200151608001906001600160401b031690816001600160401b031681525050600081604001906001600160401b031690816001600160401b031681525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050508060c0015163ffffffff16426108f891906133cd565b6040519094507f7e91044b9074cca2ad930e24b921d5dc8550dd767398a411c3245a813067396990600090a15b505050919050565b60006109456001600160a01b038084169085166133cd565b90505b92915050565b600061095a8383610978565b604001519050806000036109485750670de0b6b3a764000092915050565b604080516080810182526000808252602082018190529181018290526060810191909152600260006109aa858561092d565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b90910416938101939093526001810154918301919091526002015460608201529392505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260016000610a39848561092d565b81526020808201929092526040908101600020815160a08101835260039182015480830b8252600160201b810490920b938101939093526001600160401b03600160401b8204811692840192909252600160801b810482166060840152600160c01b900416608082015292915050565b606060008290506000816001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1491906133e0565b90506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bea91908101906133fd565b90508051600003610bfd57505050919050565b604051600162965c6f60e01b031981526001600160a01b0383169063ff69a39190610c2e908490899060040161348b565b600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c7391908101906134e8565b9350600084604051602001610c88919061356d565b6040516020818303038152906040528051906020012090506000610cac878861092d565b600081815260016020819052604090912001549091508203610cd2575050505050919050565b600081815260016020818152604080842081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529a88015460e08801908152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169381019390935261012081019290925284905290805b8851811015610e8557888181518110610dec57610dec6135a3565b602002602001015163ffffffff1660026000610e21898581518110610e1357610e136135a3565b60200260200101518e61092d565b815260200190815260200160002060000160006101000a8154816001600160401b0302191690836001600160401b03160217905550888181518110610e6857610e686135a3565b602002602001015182610e7b91906133cd565b9150600101610dd1565b6001600160401b03821660208085019190915260008581526001909152604090206003908101548751610ec392600160201b90920490910b906135b9565b61012084015160039190910b90528551610edd90836133b9565b63ffffffff16836101200151606001906001600160401b031690816001600160401b031681525050826001600086815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050505050505050505050919050565b6001600160a01b038381166000908152602081905260409020541661116f5760405162ce6de560e51b815260040160405180910390fd5b6001600160a01b0383811660009081526020819052604090205416806324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb91906135d9565b1580156112115750336001600160a01b03851614155b1561122f57604051634755657960e01b815260040160405180910390fd5b815183511461125157604051632d2dc95960e11b815260040160405180910390fd5b6000805b84518110156114065761128186868381518110611274576112746135a3565b6020026020010151611f8e565b91506103e8848281518110611298576112986135a3565b602002602001015161ffff1611156112c357604051632ebc594b60e21b815260040160405180910390fd5b8381815181106112d5576112d56135a3565b602090810291909101810151600084815260039092526040909120805461ffff191661ffff90921691821790551580159061132d575083818151811061131d5761131d6135a3565b602002602001015161ffff166000145b61139d57838181518110611343576113436135a3565b602002602001015160036000611359868761092d565b815260208101919091526040016000908120805490919061137f90849061ffff166135fb565b92506101000a81548161ffff021916908361ffff16021790556113fd565b600082815260036020819052604082205461ffff16916113bd868061092d565b81526020810191909152604001600090812080549091906113e390849061ffff16613616565b92506101000a81548161ffff021916908361ffff16021790555b50600101611255565b604080516001600160a01b0388168152602081018490527f49fdc5467ab6dc1a447e46542dd52bfb2c337f7cf111a0aa45f01e64802320bc91015b60405180910390a1505050505050565b336000908152602081905260409020546001600160a01b031661148757604051636bd1573560e11b815260040160405180910390fd5b60006114c93385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b60008181526003602052604090205490915061ffff166002849003611505576114f6600260008688613631565b6114ff9161365b565b60f01c90505b80600003611514575050505050565b336000908152602081905260408120546001600160a01b031690829060029061153d878561092d565b81526020810191909152604001600020805460089061156d908490600160401b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555081600160006115a0848561092d565b8152602081019190915260400160002080546010906115d0908490600160801b90046001600160401b031661334c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fad3057a9cc4c01edafc716a0859a1eb89efe668102492ef7d75c1578f799739483856040516114419291909182526001600160a01b0316602082015260400190565b600061271084111561165c576040516367a546c560e01b815260040160405180910390fd5b8715801561166a5750600083115b1561169f57606461167b838561338c565b61168591906133b9565b61168f9084613689565b6001600160401b03169050611810565b6000866116b489670de0b6b3a764000061338c565b6116be91906133b9565b905060006116cc878361338c565b905080156116da57806116dd565b60015b905084156116eb57846116f5565b670de0b6b3a76400005b94508486611704816064613689565b836117178e670de0b6b3a764000061338c565b61172191906133b9565b61172b919061338c565b61173591906133cd565b61173f919061338c565b6001600160401b0316925061175c670de0b6b3a7640000846133b9565b156117715761176c6064846133b9565b611798565b61178383670de0b6b3a76400006133b9565b61178e90600a61338c565b611798908461338c565b9250678ac7230489e800008311156117b657678ac7230489e8000092505b826117c26064876133b9565b6117cd90602861338c565b6117d790876133cd565b1080156117e5575084600114155b1561180d576117f56064866133b9565b61180090602861338c565b61180a90866133cd565b92505b50505b979650505050505050565b60606000611829838461092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff90811660c08a019081529b8a015460e08a015260028a01546101008a01528c519788018d526003998a0154808b0b8952600160201b8104909a0b9a88019a909a5293880485169a86019a909a529086048316988401989098529690930490921694820194909452610120840152905182519394509192429261193c92169061334c565b6001600160401b03161115611964576040516313a67ce960e31b815260040160405180910390fd5b61196d84610453565b506000846001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d291906133e0565b604051632ca62cd560e01b81526001600160a01b0387811660048301529190911690632ca62cd590602401600060405180830381865afa158015611a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4291908101906133fd565b905080516001600160401b03811115611a5d57611a5d612e7e565b604051908082528060200260200182016040528015611a86578160200160208202803683370190505b5093506000805b8251811015611b0657611ab9838281518110611aab57611aab6135a3565b602002602001015188612457565b868281518110611acb57611acb6135a3565b602002602001018181525050858181518110611ae957611ae96135a3565b602002602001015182611afc91906133cd565b9150600101611a8d565b8251611b1290836133b9565b6000958652600160205260409095206003018054935163ffffffff16600160201b0267ffffffff00000000196001600160401b03909716600160401b02969096166fffffffffffffffffffffffff0000000019909416939093179490941790915550919392505050565b6000806000836001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906133e0565b604051632ca62cd560e01b81526001600160a01b0386811660048301529190911690632ca62cd590602401600060405180830381865afa158015611c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5391908101906133fd565b9050600080856001600160a01b03166388098e3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba91906133e0565b6001600160a01b031663ff69a39184886040518363ffffffff1660e01b8152600401611ce792919061348b565b600060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2c91908101906134e8565b90505b8251821015611db05760026000611d5f858581518110611d5157611d516135a3565b60200260200101518961092d565b81526020019081526020016000206001015484611d7c91906133cd565b9350808281518110611d9057611d906135a3565b602002602001015185611da391906133cd565b9450816001019150611d2f565b8251611dbc90866133b9565b9450825184611dcb91906133b9565b9350505050915091565b6001600160a01b0381166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f91906135d9565b611e6c57604051634755657960e01b815260040160405180910390fd5b611e7a8361ffff861661369c565b63ffffffff16600003611ea05760405163d03c275960e01b815260040160405180910390fd5b6000611ead6064846136bc565b60ff16611ebb6064876136de565b611ec591906135fb565b61ffff161115611ee857604051636a5d5bd160e01b815260040160405180910390fd5b6000611ef4828361092d565b6000818152600160209081526040918290208054600163ffff000160c01b0316600160c01b61ffff8b16026001600160e01b031617600160e01b63ffffffff8a16021760ff60d01b1916600160d01b60ff89160217905590516001600160a01b03851681529192507f2757fd3a49f344ee8595ec8cab6ee31b3cb632af95399f8a5864af9cdce6ffe3910160405180910390a15050505050565b80516020820120600090610945906001600160a01b0385166133cd565b6000611fb7338361092d565b9050611fc3828361092d565b60008181526001602081815260409283902083516101408101855281546001600160401b038082168352600160401b808304821684870152600160801b8084048316858a0152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c08901529988015460e088015260028801546101008801528a519586018b5260039788015480890b8752600160201b810490980b988601989098529186048316988401989098529684048116948201949094529490910482169284019290925261012082019290925280519293509116156120cf57505050565b7f0000000000000000000000000000000000000000000000000000000000000000816060019061ffff16908161ffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160c0019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816080019060ff16908160ff16815250507f00000000000000000000000000000000000000000000000000000000000000008160a0019060ff16908160ff16815250504281600001906001600160401b031690816001600160401b031681525050806001600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555050509050506123ec83610aa9565b50336000818152602081815260409182902080546001600160a01b0319166001600160a01b03881690811790915582519081529081019290925280517f90c9297b9014ed03bb767606f04c4c65cd5d16b18731e60860d3e41c49af2e4a9281900390910190a1505050565b60006001600160a01b0382166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906135d9565b6124f057604051636bd1573560e11b815260040160405180910390fd5b60006124fc848461092d565b9050600061250a848561092d565b90506000600260008481526020019081526020016000206040518060800160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b03168152602001600182015481526020016002820154815250509050600060016000848152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900461ffff1661ffff1661ffff16815260200160008201601a9054906101000a900460ff1660ff1660ff16815260200160008201601b9054906101000a900460ff1660ff1660ff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820154815260200160028201548152602001600382016040518060a00160405290816000820160009054906101000a900460030b60030b60030b81526020016000820160049054906101000a900460030b60030b60030b81526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b03168152505081525050905080600001516001600160401b0316826060015111156127e75750604001519250610948915050565b6001600160401b0342166060830152604082015160000361280a57600160408301525b8160400151816060015161ffff168260400151836020015161282c91906136ff565b61283691906136ff565b6001600160401b0316612849919061338c565b600003612869576040516318dc243b60e31b815260040160405180910390fd5b6001816101000181815161287d91906133cd565b91508181525050806001600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a81548161ffff021916908361ffff160217905550608082015181600001601a6101000a81548160ff021916908360ff16021790555060a082015181600001601b6101000a81548160ff021916908360ff16021790555060c082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060e0820151816001015561010082015181600201556101208201518160030160008201518160000160006101000a81548163ffffffff021916908360030b63ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908360030b63ffffffff16021790555060408201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055505050905050856001600160a01b03166311aee3806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190613373565b81610100015110612b2257612b2086610453565b505b612b7882602001516001600160401b031683600001516001600160401b031683602001516001600160401b031684604001516001600160401b0316856060015161ffff168760400151876080015160ff16611637565b6040808401918252600060208086018281529782526002908190529190208451815497516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199099169116179690961786559051600186018190556060909301519401939093559250505092915050565b612c626040805161014081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e086018590526101008601859052865190810187528481529283018490529482018390528101829052928301529061012082015290565b60016000612c70848561092d565b8152602080820192909252604090810160002081516101408101835281546001600160401b038082168352600160401b808304821684880152600160801b808404831685880152600160c01b80850461ffff16606080880191909152600160d01b860460ff9081166080808a0191909152600160d81b880490911660a0808a0191909152600160e01b90970463ffffffff1660c0890152600189015460e0890152600289015461010089015289519687018a52600398890154808a0b8852600160201b810490990b9a87019a909a529287048416978501979097528504821690830152939092049092169281019290925261012081019190915292915050565b6001600160a01b0381168114612d8557600080fd5b50565b600060208284031215612d9a57600080fd5b8135612da581612d70565b9392505050565b60008060408385031215612dbf57600080fd5b8235612dca81612d70565b91506020830135612dda81612d70565b809150509250929050565b805160030b8252602081015160030b602083015260408101516001600160401b03808216604085015280606084015116606085015280608084015116608085015250505050565b60a081016109488284612de5565b6020808252825182820181905260009190848201906040850190845b81811015612e7257835183529284019291840191600101612e56565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ebc57612ebc612e7e565b604052919050565b60006001600160401b03821115612edd57612edd612e7e565b5060051b60200190565b600082601f830112612ef857600080fd5b81356001600160401b03811115612f1157612f11612e7e565b612f24601f8201601f1916602001612e94565b818152846020838601011115612f3957600080fd5b816020850160208301376000918101602001919091529392505050565b803561ffff81168114612f6857600080fd5b919050565b600082601f830112612f7e57600080fd5b81356020612f93612f8e83612ec4565b612e94565b82815260059290921b84018101918181019086841115612fb257600080fd5b8286015b84811015612fd457612fc781612f56565b8352918301918301612fb6565b509695505050505050565b600080600060608486031215612ff457600080fd5b8335612fff81612d70565b92506020848101356001600160401b038082111561301c57600080fd5b818701915087601f83011261303057600080fd5b813561303e612f8e82612ec4565b81815260059190911b8301840190848101908a83111561305d57600080fd5b8585015b83811015613095578035858111156130795760008081fd5b6130878d89838a0101612ee7565b845250918601918601613061565b509650505060408701359250808311156130ae57600080fd5b50506130bc86828701612f6d565b9150509250925092565b6000806000604084860312156130db57600080fd5b83356001600160401b03808211156130f257600080fd5b818601915086601f83011261310657600080fd5b81358181111561311557600080fd5b87602082850101111561312757600080fd5b6020928301955093505084013561313d81612d70565b809150509250925092565b600080600080600080600060e0888a03121561316357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000602082840312156131a657600080fd5b5035919050565b600080600080608085870312156131c357600080fd5b6131cc85612f56565b9350602085013563ffffffff811681146131e557600080fd5b9250604085013560ff811681146131fb57600080fd5b9150606085013561320b81612d70565b939692955090935050565b6000806040838503121561322957600080fd5b823561323481612d70565b915060208301356001600160401b0381111561324f57600080fd5b61325b85828601612ee7565b9150509250929050565b81516001600160401b031681526101c08101602083015161329160208401826001600160401b03169052565b5060408301516132ac60408401826001600160401b03169052565b5060608301516132c2606084018261ffff169052565b5060808301516132d7608084018260ff169052565b5060a08301516132ec60a084018260ff169052565b5060c083015161330460c084018263ffffffff169052565b5060e083015160e08301526101008084015181840152506101208084015161332e82850182612de5565b505092915050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561336c5761336c613336565b5092915050565b60006020828403121561338557600080fd5b5051919050565b808202811582820484141761094857610948613336565b634e487b7160e01b600052601260045260246000fd5b6000826133c8576133c86133a3565b500490565b8082018082111561094857610948613336565b6000602082840312156133f257600080fd5b8151612da581612d70565b6000602080838503121561341057600080fd5b82516001600160401b0381111561342657600080fd5b8301601f8101851361343757600080fd5b8051613445612f8e82612ec4565b81815260059190911b8201830190838101908783111561346457600080fd5b928401925b8284101561181057835161347c81612d70565b82529284019290840190613469565b604080825283519082018190526000906020906060840190828701845b828110156134cd5781516001600160a01b0316845292840192908401906001016134a8565b5050506001600160a01b039490941692019190915250919050565b600060208083850312156134fb57600080fd5b82516001600160401b0381111561351157600080fd5b8301601f8101851361352257600080fd5b8051613530612f8e82612ec4565b81815260059190911b8201830190838101908783111561354f57600080fd5b928401925b8284101561181057835182529284019290840190613554565b815160009082906020808601845b838110156135975781518552938201939082019060010161357b565b50929695505050505050565b634e487b7160e01b600052603260045260246000fd5b818103600083128015838313168383128216171561336c5761336c613336565b6000602082840312156135eb57600080fd5b81518015158114612da557600080fd5b61ffff81811683821601908082111561336c5761336c613336565b61ffff82811682821603908082111561336c5761336c613336565b6000808585111561364157600080fd5b8386111561364e57600080fd5b5050820193919092039150565b6001600160f01b0319813581811691600285101561332e5760029490940360031b84901b1690921692915050565b8181038181111561094857610948613336565b63ffffffff81811683821602808216919082811461332e5761332e613336565b600060ff8316806136cf576136cf6133a3565b8060ff84160491505092915050565b600061ffff808416806136f3576136f36133a3565b92169190910492915050565b6001600160401b0381811683821602808216919082811461332e5761332e61333656fea2646970667358221220cb36bb211325dfe285bda79f315f065b9d27e5e749c7fdde5a011fd29e15fbbe64736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001f9f38038062001f9f83398101604081905262000034916200042f565b62000048620000426200036b565b6200037c565b6001600160a01b038416620000b95760405162461bcd60e51b815260206004820152602c60248201527f4e6f766152656769737472793a2074727573746564466f72657761726465722060448201526b61646472657373207a65726f60a01b60648201526084015b60405180910390fd5b6001600160a01b038316620001115760405162461bcd60e51b815260206004820181905260248201527f4e6f766152656769737472793a2041757449442061646472657373207a65726f6044820152606401620000b0565b6001600160a01b038216620001775760405162461bcd60e51b815260206004820152602560248201527f4e6f766152656769737472793a204e6f7661206c6f6769632061646472657373604482015264207a65726f60d81b6064820152608401620000b0565b6001600160a01b038116620001e15760405162461bcd60e51b815260206004820152602960248201527f4e6f766152656769737472793a20506c7567696e52656769737472792061646460448201526872657373207a65726f60b81b6064820152608401620000b0565b6001600160a01b03808416608052811660a052600580546001600160a01b031916331790556040518290620002169062000404565b6001600160a01b039091168152602001604051809103906000f08015801562000243573d6000803e3d6000fd5b506001600160a01b031660c0526200027784600080546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03166382accae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200048c565b6001600160a01b031663d36ac27c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034091906200048c565b600480546001600160a01b0319166001600160a01b039290921691909117905550620004b192505050565b600062000377620003ce565b905090565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060143610801590620003ec57506000546001600160a01b031633145b15620003ff575060131936013560601c90565b503390565b6104be8062001ae183390190565b80516001600160a01b03811681146200042a57600080fd5b919050565b600080600080608085870312156200044657600080fd5b620004518562000412565b9350620004616020860162000412565b9250620004716040860162000412565b9150620004816060860162000412565b905092959194509250565b6000602082840312156200049f57600080fd5b620004aa8262000412565b9392505050565b60805160a05160c0516115d66200050b600039600081816102700152818161036d015281816104b4015281816105bc0152610a5201526000818161019f015261054f015260008181610298015261052b01526115d66000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063bcae17c211620000a3578063d2609520116200006e578063d2609520146200026a578063de90ccca1462000292578063e3d854a314620002ba578063f2fde38b14620002d157600080fd5b8063bcae17c21462000213578063ce1b815f146200022a578063cf349d89146200023c578063cf81e754146200025357600080fd5b806341dcea9111620000e457806341dcea911462000199578063572b6c0514620001c1578063715018a614620001f75780638da5cb5b146200020157600080fd5b806308023018146200011a57806328e6315314620001335780632b47da521462000155578063414af6561462000182575b600080fd5b620001316200012b36600462000c66565b620002e8565b005b6200013d620003cf565b6040516200014c919062000c8d565b60405180910390f35b60045462000169906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b620001316200019336600462000c66565b62000433565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001e6620001d236600462000c66565b6000546001600160a01b0391821691161490565b60405190151581526020016200014c565b62000131620004e4565b6001546001600160a01b031662000169565b620001696200022436600462000cf2565b620004fc565b6000546001600160a01b031662000169565b6200013d6200024d36600462000c66565b620006db565b620001316200026436600462000c66565b62000753565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b620001697f000000000000000000000000000000000000000000000000000000000000000081565b62000169620002cb36600462000dc0565b6200077f565b62000131620002e236600462000c66565b620007aa565b620002f262000829565b6001600160a01b0381166200034e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f00000000000060448201526064015b60405180910390fd5b604051631b2ce7f360e11b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe6906024015b600060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b5050505050565b606060038054806020026020016040519081016040528092919081815260200182805480156200042957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200040a575b5050505050905090565b6200043d62000829565b6001600160a01b038116620004955760405162461bcd60e51b815260206004820152601a60248201527f4e6f766152656769737472793a2061646472657373207a65726f000000000000604482015260640162000345565b60405163f2fde38b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b9060240162000398565b620004ee62000829565b620004fa6000620008a7565b565b60006200050b848484620008f9565b6200051562000a29565b60006336ee835760e21b6200052962000bfb565b7f00000000000000000000000000000000000000000000000000000000000000008787877f0000000000000000000000000000000000000000000000000000000000000000604051602401620005859695949392919062000e22565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090507f000000000000000000000000000000000000000000000000000000000000000081604051620005ea9062000c42565b620005f792919062000e6f565b604051809103906000f08015801562000614573d6000803e3d6000fd5b509150600260006200062562000bfb565b6001600160a01b039081168252602080830193909352604091820160009081208054600180820183559183528583200180546001600160a01b03199081169489169485179091556003805492830181559092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549091168217905590519081527fafab1707766bafe96926219991cab2ba53caeb9318740895c42aff8b9e3ba22b910160405180910390a1509392505050565b6001600160a01b0381166000908152600260209081526040918290208054835181840281018401909452808452606093928301828280156200074757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000728575b50505050509050919050565b6200075d62000829565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106200079057600080fd5b6000918252602090912001546001600160a01b0316905081565b620007b462000829565b6001600160a01b0381166200081b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000345565b6200082681620008a7565b50565b6200083362000bfb565b6001600160a01b03166200084f6001546001600160a01b031690565b6001600160a01b031614620004fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000345565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000831180156200090a5750600483105b620009635760405162461bcd60e51b815260206004820152602260248201527f4e6f766152656769737472793a20696e76616c6964206d61726b65742076616c604482015261756560f01b606482015260840162000345565b8151600003620009b65760405162461bcd60e51b815260206004820152601c60248201527f4e6f766152656769737472793a206d6574616461746120656d70747900000000604482015260640162000345565b600081118015620009c75750600b81105b62000a245760405162461bcd60e51b815260206004820152602660248201527f4e6f766152656769737472793a20696e76616c696420636f6d6d69746d656e746044820152652076616c756560d01b606482015260840162000345565b505050565b6005546001600160a01b031662000a3f62000bfb565b6001600160a01b0316148062000af357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062000e9d565b6001600160a01b031662000ae862000bfb565b6001600160a01b0316145b1562000afb57565b6004546001600160a01b031615620004fa576004546001600160a01b031663babcc53962000b2862000bfb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000b6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b93919062000ebd565b62000bb15760405163e087598d60e01b815260040160405180910390fd5b6002600062000bbf62000bfb565b6001600160a01b0316815260208101919091526040016000908120549003620004fa57604051631834f49160e21b815260040160405180910390fd5b600062000c0762000c0c565b905090565b60006014361080159062000c2a57506000546001600160a01b031633145b1562000c3d575060131936013560601c90565b503390565b6106bf8062000ee283390190565b6001600160a01b03811681146200082657600080fd5b60006020828403121562000c7957600080fd5b813562000c868162000c50565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101562000cd05783516001600160a01b03168352928401929184019160010162000ca9565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121562000d0857600080fd5b83359250602084013567ffffffffffffffff8082111562000d2857600080fd5b818601915086601f83011262000d3d57600080fd5b81358181111562000d525762000d5262000cdc565b604051601f8201601f19908116603f0116810190838211818310171562000d7d5762000d7d62000cdc565b8160405282815289602084870101111562000d9757600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121562000dd357600080fd5b5035919050565b6000815180845260005b8181101562000e025760208185018101518683018201520162000de4565b506000602082860101526020601f19601f83011685010191505092915050565b600060018060a01b038089168352808816602084015286604084015260c0606084015262000e5460c084018762000dda565b60808401959095529290921660a09091015250949350505050565b6001600160a01b038316815260406020820181905260009062000e959083018462000dda565b949350505050565b60006020828403121562000eb057600080fd5b815162000c868162000c50565b60006020828403121562000ed057600080fd5b8151801515811462000c8657600080fdfe60806040526040516106bf3803806106bf83398101604081905261002291610413565b61002e82826000610035565b505061053d565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104d3565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104d3565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f8383604051806060016040528060278152602001610698602791396102a6565b9392505050565b60606001600160a01b0384163b61030e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610157565b600080856001600160a01b03168560405161032991906104ee565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b50909250905061037a828286610384565b9695505050505050565b6060831561039357508161029f565b8251156103a35782518084602001fd5b8160405162461bcd60e51b8152600401610157919061050a565b80516001600160a01b03811681146103d457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561040a5781810151838201526020016103f2565b50506000910152565b6000806040838503121561042657600080fd5b61042f836103bd565b60208401519092506001600160401b038082111561044c57600080fd5b818501915085601f83011261046057600080fd5b815181811115610472576104726103d9565b604051601f8201601f19908116603f0116810190838211818310171561049a5761049a6103d9565b816040528281528860208487010111156104b357600080fd5b6104c48360208301602088016103ef565b80955050505050509250929050565b6000602082840312156104e557600080fd5b61029f826103bd565b600082516105008184602087016103ef565b9190910192915050565b60208152600082518060208401526105298160408501602087016103ef565b601f01601f19169190910160400192915050565b61014c8061054c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea2646970667358221220ef1b7802b21f3217943f6e3337ff4eb889601d02b0b8dcd50ce78288f5118aa664736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220461bbfebfd1bb386abd95a53fea493b971607f9aafef231a4b07e75830297c5564736f6c63430008130033608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea2646970667358221220ffa0dd9ce2fef20cb4144b753c6d9a311fbd687533b07a29d75a33e1e5f90cc264736f6c634300081300330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d657870656374656420616e6f7468657220706c7567696e2072656769737472792061646472657373a2646970667358221220d372dc7ae024b7d9b4425c1e065dbba4af095882876749933db1030a1cc3985c64736f6c63430008130033", + "sourceMap": "298:2288:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:713:127;;;:::i;:::-;;633:1480:133;;;:::i;2452:134:72:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;2119:231:133:-;;;:::i;3221:133:72:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1819:584:65:-;;;:::i;:::-;;;5504:14:134;;5497:22;5479:41;;5467:2;5452:18;1819:584:65;5339:187:134;2304:142:72;;;:::i;1572:26:65:-;;;;;;;;;2912:713:127;2984:3;;2965:65;;;;;;;;;;;;-1:-1:-1;;;2965:65:127;;;;;;3003:1;-1:-1:-1;;;;;2984:3:127;;;2976:24;:28;;2965:10;:65::i;:::-;3059:9;;3040:72;;;;;;;;;;;;-1:-1:-1;;;3040:72:127;;;;;;3084:1;-1:-1:-1;;;;;3059:9:127;;;3051:30;:34;;3040:10;:72::i;:::-;3141:3;;3122:65;;;;;;;;;;;;-1:-1:-1;;;3122:65:127;;;;;;3160:1;-1:-1:-1;;;;;3141:3:127;;;3133:24;:28;;3122:10;:65::i;:::-;3216:3;;3197:65;;;;;;;;;;;;-1:-1:-1;;;3197:65:127;;;;;;3235:1;-1:-1:-1;;;;;3216:3:127;;;3208:24;:28;;3197:10;:65::i;:::-;3291:3;;3272:64;;;;;;;;;;;;-1:-1:-1;;;3272:64:127;;;;;;3310:1;-1:-1:-1;;;;;3291:3:127;;;3283:24;:28;;3272:10;:64::i;:::-;3390:3;;3357:4;;:21;;;-1:-1:-1;;;3357:21:127;;;;3346:93;;-1:-1:-1;;;;;3390:3:127;;;;3357:4;;:19;;:21;;;;;;;;;;;;;;3390:3;3357:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:37:127;;3346:93;;;;;;;;;;;;;;;;;:10;:93::i;:::-;3487:3;;3511:2;;3487:27;;-1:-1:-1;;;3487:27:127;;-1:-1:-1;;;;;3511:2:127;;;3487:27;;;5972:51:134;3476:66:127;;3487:3;;;;;:23;;5945:18:134;;3487:27:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3476:66;;;;;;;;;;;;;;;;;:10;:66::i;:::-;3552;3594:1;-1:-1:-1;;;;;3563:33:127;:3;;;;;;;;;-1:-1:-1;;;;;3563:3:127;-1:-1:-1;;;;;3563:17:127;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3563:33:127;;;3552:66;;;;;;;;;;;;;-1:-1:-1;;;3552:66:127;;;:10;:66::i;:::-;2912:713::o;633:1480:133:-;676:13;:11;:13::i;:::-;709:2;;700:12;;-1:-1:-1;;;700:12:133;;-1:-1:-1;;;;;709:2:133;;;700:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;700:8:133;;;5945:18:134;;700:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;770:4:133;;734:42;;-1:-1:-1;;;;;770:4:133;;;;-1:-1:-1;734:42:133;;-1:-1:-1;734:42:133;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;734:42:133;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;722:9:133;:54;;-1:-1:-1;;;;;;722:54:133;-1:-1:-1;;;;;722:54:133;;;;;;;;;786:39;;;-1:-1:-1;;;786:39:133;;;;;6528:51:134;;;;6595:18;;;6588:30;6654:1;6634:18;;;6627:29;-1:-1:-1;;;6672:18:134;;;6665:37;-1:-1:-1;;;;;;;;;;;786:8:133;;;6719:19:134;;786:39:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;844:2:133;;835:12;;-1:-1:-1;;;835:12:133;;-1:-1:-1;;;;;844:2:133;;;835:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;835:8:133;-1:-1:-1;835:8:133;;-1:-1:-1;5945:18:134;;835:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:4:133;;869:42;;-1:-1:-1;;;;;905:4:133;;;;-1:-1:-1;869:42:133;;-1:-1:-1;869:42:133;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;869:42:133;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;857:9:133;:54;;-1:-1:-1;;;;;;857:54:133;-1:-1:-1;;;;;857:54:133;;;;;;;;;921:39;;;-1:-1:-1;;;921:39:133;;;;;6961:51:134;;;;7028:18;;;7021:30;7087:1;7067:18;;;7060:29;-1:-1:-1;;;7105:18:134;;;7098:37;-1:-1:-1;;;;;;;;;;;921:8:133;;;7152:19:134;;921:39:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;979:2:133;;970:12;;-1:-1:-1;;;970:12:133;;-1:-1:-1;;;;;979:2:133;;;970:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;970:8:133;-1:-1:-1;970:8:133;;-1:-1:-1;5945:18:134;;970:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1040:4:133;;1004:42;;-1:-1:-1;;;;;1040:4:133;;;;-1:-1:-1;1004:42:133;;-1:-1:-1;1004:42:133;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;1004:42:133;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;992:9:133;:54;;-1:-1:-1;;;;;;992:54:133;-1:-1:-1;;;;;992:54:133;;;;;;;;;1056:39;;;-1:-1:-1;;;1056:39:133;;;;;7394:51:134;;;;7461:18;;;7454:30;7520:1;7500:18;;;7493:29;-1:-1:-1;;;7538:18:134;;;7531:37;-1:-1:-1;;;;;;;;;;;1056:8:133;;;7585:19:134;;1056:39:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1114:2:133;;1105:12;;-1:-1:-1;;;1105:12:133;;-1:-1:-1;;;;;1114:2:133;;;1105:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1105:8:133;-1:-1:-1;1105:8:133;;-1:-1:-1;5945:18:134;;1105:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1175:4:133;;1139:42;;-1:-1:-1;;;;;1175:4:133;;;;-1:-1:-1;1139:42:133;;-1:-1:-1;1139:42:133;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;1139:42:133;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1127:9:133;:54;;-1:-1:-1;;;;;;1127:54:133;-1:-1:-1;;;;;1127:54:133;;;;;;;;;1191:39;;;-1:-1:-1;;;1191:39:133;;;;;7827:51:134;;;;7894:18;;;7887:30;7953:1;7933:18;;;7926:29;-1:-1:-1;;;7971:18:134;;;7964:37;-1:-1:-1;;;;;;;;;;;1191:8:133;;;8018:19:134;;1191:39:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1295:2:133;;1286:12;;-1:-1:-1;;;1286:12:133;;-1:-1:-1;;;;;1295:2:133;;;1286:12;;;5972:51:134;1241:34:133;;-1:-1:-1;;;;;;;;;;;;1286:8:133;-1:-1:-1;1286:8:133;;5945:18:134;;1286:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1330:3:133;;1375:2;;1330:136;;-1:-1:-1;;;1330:136:133;;-1:-1:-1;;;;;1330:3:133;;;;-1:-1:-1;1330:23:133;;-1:-1:-1;1330:136:133;;1375:2;;;;1330:3;;;;1439:17;;1330:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:19;:158;1486:2;;1477:12;;-1:-1:-1;;;1477:12:133;;-1:-1:-1;;;;;1486:2:133;;;1477:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1477:8:133;;;5945:18:134;;1477:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1533:3:133;;1565:2;;1533:94;;-1:-1:-1;;;1533:94:133;;-1:-1:-1;;;;;1533:3:133;;;;-1:-1:-1;1533:23:133;;-1:-1:-1;1533:94:133;;1565:2;;;;1533:3;;;;1609:17;;1533:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1499:19;:128;1658:16;;;1672:1;1658:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1658:16:133;1638:36;;1707:1;1684:17;1702:1;1684:20;;;;;;;;:::i;:::-;;;;;;:24;;;;;1741:1;1718:17;1736:1;1718:20;;;;;;;;:::i;:::-;;;;;;;;;;:24;1762:2;;1753:12;;-1:-1:-1;;;1753:12:133;;-1:-1:-1;;;;;1762:2:133;;;1753:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1753:8:133;;;5945:18:134;;1753:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1797:3:133;;1842:2;;1797:136;;-1:-1:-1;;;1797:136:133;;-1:-1:-1;;;;;1797:3:133;;;;-1:-1:-1;1797:23:133;;-1:-1:-1;1797:136:133;;1842:2;;;;1797:3;;;;1906:17;;1797:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1775:19;:158;1953:2;;1944:12;;-1:-1:-1;;;1944:12:133;;-1:-1:-1;;;;;1953:2:133;;;1944:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1944:8:133;;;5945:18:134;;1944:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2000:3:133;;2032:2;;2000:106;;-1:-1:-1;;;2000:106:133;;-1:-1:-1;;;;;2000:3:133;;;;-1:-1:-1;2000:23:133;;-1:-1:-1;2000:106:133;;2032:2;;;;2079:1;;2000:3;;2088:17;;2000:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1966:19;:140;-1:-1:-1;633:1480:133:o;2452:134:72:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:72;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2119:231:133:-;2180:2;;2171:12;;-1:-1:-1;;;2171:12:133;;-1:-1:-1;;;;;2180:2:133;;;2171:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;2171:8:133;;;5945:18:134;;2171:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2193:3:133;;2220:9;;2232:19;;2193:59;;-1:-1:-1;;;2193:59:133;;-1:-1:-1;;;;;2220:9:133;;;2193:59;;;12019:51:134;12086:18;;;12079:34;;;;2193:3:133;;;-1:-1:-1;2193:18:133;;-1:-1:-1;11992:18:134;;2193:59:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2271:2:133;;2262:12;;-1:-1:-1;;;2262:12:133;;-1:-1:-1;;;;;2271:2:133;;;2262:12;;;5972:51:134;-1:-1:-1;;;;;;;;;;;2262:8:133;-1:-1:-1;2262:8:133;;-1:-1:-1;5945:18:134;;2262:12:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2284:3:133;;2311:9;;2323:19;;2284:59;;-1:-1:-1;;;2284:59:133;;-1:-1:-1;;;;;2311:9:133;;;2284:59;;;12019:51:134;12086:18;;;12079:34;;;;2284:3:133;;;-1:-1:-1;2284:18:133;;-1:-1:-1;11992:18:134;;2284:59:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2119:231::o;3221:133:72:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:72;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:72;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:65;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:65;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:65;;;12019:51:134;;;-1:-1:-1;;;12086:18:134;;;12079:34;2196:43:65;;;;;;;;;11992:18:134;;;2196:43:65;;;-1:-1:-1;;1671:64:65;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:65;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:65:o;2304:142:72:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:72;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3425:191:65:-;3504:9;3499:111;;3534:30;3560:3;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;:::-;3425:191;;:::o;1325:1581:127:-;1367:2;:53;;-1:-1:-1;;;;;;1367:53:127;;;;;;;;1430:33;;;-1:-1:-1;;;1430:33:127;;;;;13747:51:134;;;;13814:18;;;13807:30;13873:1;13853:18;;;13846:29;-1:-1:-1;;;13891:18:134;;;13884:38;-1:-1:-1;;;;;;;;;;;1430:8:127;;;13939:19:134;;1430:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:2:127;:53;;-1:-1:-1;;;;;;1474:53:127;;;;;;;;1537:33;;;-1:-1:-1;;;1537:33:127;;;;;14181:51:134;;;;14248:18;;;14241:30;14307:1;14287:18;;;14280:29;-1:-1:-1;;;14325:18:134;;;14318:38;-1:-1:-1;;;;;;;;;;;1537:8:127;-1:-1:-1;1537:8:127;;-1:-1:-1;14373:19:134;;1537:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1581:2:127;:53;;-1:-1:-1;;;;;;1581:53:127;;;;;;;;1644:33;;;-1:-1:-1;;;1644:33:127;;;;;14615:51:134;;;;14682:18;;;14675:30;14741:1;14721:18;;;14714:29;-1:-1:-1;;;14759:18:134;;;14752:38;-1:-1:-1;;;;;;;;;;;1644:8:127;-1:-1:-1;1644:8:127;;-1:-1:-1;14807:19:134;;1644:33:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1688:11:127;:66;;-1:-1:-1;;;;;;1688:66:127;;;;;-1:-1:-1;;1781:2:127;;1764:37;;;-1:-1:-1;;;1764:37:127;;-1:-1:-1;;;;;1781:2:127;;;1764:37;;;15049:51:134;15116:18;;;15109:30;15175:2;15155:18;;;15148:30;-1:-1:-1;;;15194:18:134;;;15187:42;-1:-1:-1;;;;;;;;;;;1764:8:127;;;15246:19:134;;1764:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1826:2:127;;1812:17;;-1:-1:-1;;;1812:17:127;;-1:-1:-1;;;;;1826:2:127;;;1812:17;;;5972:51:134;-1:-1:-1;;;;;;;;;;;1812:13:127;-1:-1:-1;1812:13:127;;-1:-1:-1;5945:18:134;;1812:17:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:9:127;:29;;-1:-1:-1;;;;;;1840:29:127;-1:-1:-1;;;;;1840:29:127;;;;;;;;;1879:42;;;-1:-1:-1;;;1879:42:127;;;;;15488:51:134;;;;15555:18;;;15548:30;15614:2;15594:18;;;15587:30;-1:-1:-1;;;15633:18:134;;;15626:40;-1:-1:-1;;;;;;;;;;;1879:8:127;;;15683:19:134;;1879:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1932:5:127;:44;;-1:-1:-1;;;;;;1932:44:127;-1:-1:-1;;;;;1932:44:127;;;;;;;;;1986:37;;;-1:-1:-1;;;1986:37:127;;;;;15925:51:134;;;;15992:18;;;15985:30;16051:1;16031:18;;;16024:29;-1:-1:-1;;;16069:18:134;;;16062:39;-1:-1:-1;;;;;;;;;;;1986:8:127;;;16118:19:134;;1986:37:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:5:127;;2055:2;;2034:24;;-1:-1:-1;;;2034:24:127;;-1:-1:-1;;;;;2055:2:127;;;2034:24;;;5972:51:134;2034:5:127;;;-1:-1:-1;2034:20:127;;-1:-1:-1;5945:18:134;;2034:24:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2069:3:127;:34;;-1:-1:-1;;;;;;2069:34:127;-1:-1:-1;;;;;2069:34:127;;;;;;;;;2113:32;;;-1:-1:-1;;;2113:32:127;;;;;16360:51:134;;;;16427:18;;;16420:30;16486:1;16466:18;;;16459:29;-1:-1:-1;;;16504:18:134;;;16497:36;-1:-1:-1;;;;;;;;;;;2113:8:127;;;16550:19:134;;2113:32:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2182:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:9:127;:35;;-1:-1:-1;;;;;;2156:35:127;-1:-1:-1;;;;;2156:35:127;;;;;;;;;2201:42;;;-1:-1:-1;;;2201:42:127;;;;;16792:51:134;;;;16859:18;;;16852:30;16918:2;16898:18;;;16891:30;-1:-1:-1;;;16937:18:134;;;16930:40;-1:-1:-1;;;;;;;;;;;2201:8:127;;;16987:19:134;;2201:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:5:127;;2284:34;;-1:-1:-1;;;;;2311:5:127;;;;-1:-1:-1;2284:34:127;;-1:-1:-1;2284:34:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2284:34:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2254:3:127;:66;;-1:-1:-1;;;;;;2254:66:127;-1:-1:-1;;;;;2254:66:127;;;;;;;;;2330:41;;;-1:-1:-1;;;2330:41:127;;;;;17229:51:134;;;;17296:18;;;17289:30;17355:2;17335:18;;;17328:30;-1:-1:-1;;;17374:18:134;;;17367:45;-1:-1:-1;;;;;;;;;;;2330:8:127;;;17429:19:134;;2330:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2439:3:127;;2412:32;;-1:-1:-1;;;;;2439:3:127;;;;-1:-1:-1;2412:32:127;;-1:-1:-1;2412:32:127;:::i;:::-;-1:-1:-1;;;;;5990:32:134;;;5972:51;;5960:2;5945:18;2412:32:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2382:3:127;:64;;-1:-1:-1;;;;;;2382:64:127;-1:-1:-1;;;;;2382:64:127;;;;;;;;;2456:41;;;-1:-1:-1;;;2456:41:127;;;;;17671:51:134;;;;17738:18;;;17731:30;17797:2;17777:18;;;17770:30;-1:-1:-1;;;17816:18:134;;;17809:45;-1:-1:-1;;;;;;;;;;;2456:8:127;;;17871:19:134;;2456:41:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2508:3:127;:54;;-1:-1:-1;;;;;;2508:54:127;-1:-1:-1;;;;;2508:54:127;;;;;;;;;2573:3;;:36;;-1:-1:-1;;;2573:36:127;;;;;5972:51:134;;;;2573:3:127;;;;:22;;5945:18:134;;2573:36:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2688:3:127;;2702:9;;2722:3;;2648:79;;2673:5;;-1:-1:-1;;;;;;2688:3:127;;;;-1:-1:-1;2702:9:127;;;;2722:3;;2648:79;;;:::i;:::-;-1:-1:-1;;;;;18188:15:134;;;18170:34;;18240:15;;;18235:2;18220:18;;18213:43;18292:15;;;18287:2;18272:18;;18265:43;18344:15;;;18339:2;18324:18;;18317:43;18119:3;18104:19;2648:79:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2620:3:127;:109;;-1:-1:-1;;;;;;2620:109:127;-1:-1:-1;;;;;2620:109:127;;;;;;;;;2739:39;;;-1:-1:-1;;;2739:39:127;;;;;18583:51:134;;;;18650:18;;;18643:30;18709:2;18689:18;;;18682:30;-1:-1:-1;;;18728:18:134;;;18721:43;-1:-1:-1;;;;;;;;;;;2739:8:127;;;18781:19:134;;2739:39:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:3:127;;:35;;-1:-1:-1;;;2808:35:127;;:3;:35;;;19067:25:134;;;19128:2;19108:18;;;19101:30;19167:2;19147:18;;;19140:30;-1:-1:-1;;;19186:19:134;;;19179:42;19273:18;;;19266:34;2789:16:127;;-1:-1:-1;;;;;;2808:3:127;;;;-1:-1:-1;2808:14:127;;19238:19:134;;2808:35:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:4;:22;;-1:-1:-1;;;;;;2853:22:127;-1:-1:-1;;;;;2853:22:127;;;;;2885:14;;;-1:-1:-1;;;2885:14:127;;;;2853:22;;-1:-1:-1;;;;;;;;;;;;2885:12:127;;;:14;;;;;-1:-1:-1;;2885:14:127;;;;;;;;-1:-1:-1;2885:12:127;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:1549;1325:1581::o;3262:157:65:-;3322:9;3317:96;;3352:30;;;;;19513:2:134;19495:21;;;19552:2;19532:18;;;19525:30;19591:25;19586:2;19571:18;;19564:53;19649:2;19634:18;;19311:347;3352:30:65;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:65;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:65;;;19865:51:134;;;-1:-1:-1;;;19932:18:134;;;19925:34;;;;2712:4:65;19975:18:134;;;19968:34;2489:11:65;;1671:64;2586:43;;19838:18:134;;2652:67:65;;;-1:-1:-1;;2652:67:65;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:65;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:65;2820:7;:14;;-1:-1:-1;;2820:14:65;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:134:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:134;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:134;;14:658;-1:-1:-1;;;;;;14:658:134:o;677:250::-;762:1;772:113;786:6;783:1;780:13;772:113;;;862:11;;;856:18;843:11;;;836:39;808:2;801:10;772:113;;;-1:-1:-1;;919:1:134;901:16;;894:27;677:250::o;932:271::-;974:3;1012:5;1006:12;1039:6;1034:3;1027:19;1055:76;1124:6;1117:4;1112:3;1108:14;1101:4;1094:5;1090:16;1055:76;:::i;:::-;1185:2;1164:15;-1:-1:-1;;1160:29:134;1151:39;;;;1192:4;1147:50;;932:271;-1:-1:-1;;932:271:134:o;1208:1744::-;1443:2;1495:21;;;1565:13;;1468:18;;;1587:22;;;1414:4;;1443:2;1628;;1646:18;;;;1683:1;1726:15;;;1711:31;;1707:40;;1770:15;;;1414:4;;1834:1089;1850:6;1845:3;1842:15;1834:1089;;;-1:-1:-1;;1919:22:134;;;1915:36;1903:49;;1975:13;;2062:9;;-1:-1:-1;;;;;2058:35:134;2043:51;;2133:11;;2127:18;2165:15;;;2158:27;;;2246:19;;2015:15;;;2278:24;;;2459:21;;;;2325:2;2407:17;;;2395:30;;2391:39;;;2349:15;;;;2504:1;2518:296;2534:8;2529:3;2526:17;2518:296;;;2640:2;2636:7;2627:6;2619;2615:19;2611:33;2604:5;2597:48;2672:42;2707:6;2696:8;2690:15;2672:42;:::i;:::-;2743:17;;;;2662:52;-1:-1:-1;2786:14:134;;;;2562:1;2553:11;2518:296;;;-1:-1:-1;;;2901:12:134;;;;2837:6;-1:-1:-1;;2866:15:134;;;;1876:1;1867:11;1834:1089;;;-1:-1:-1;2940:6:134;;1208:1744;-1:-1:-1;;;;;;;;;;1208:1744:134:o;2957:1569::-;3161:4;3190:2;3230;3219:9;3215:18;3260:2;3249:9;3242:21;3283:6;3318;3312:13;3349:6;3341;3334:22;3375:2;3365:12;;3408:2;3397:9;3393:18;3386:25;;3470:2;3460:6;3457:1;3453:14;3442:9;3438:30;3434:39;3508:2;3500:6;3496:15;3529:1;3550;3560:937;3576:6;3571:3;3568:15;3560:937;;;3645:22;;;-1:-1:-1;;3641:36:134;3629:49;;3701:13;;3788:9;;-1:-1:-1;;;;;3784:35:134;3769:51;;3859:11;;3853:18;3891:15;;;3884:27;;;3972:19;;3741:15;;;4004:24;;;4094:21;;;;4139:1;;4062:2;4050:15;;;4153:236;4169:8;4164:3;4161:17;4153:236;;;4250:15;;-1:-1:-1;;;;;;4246:42:134;4232:57;;4358:17;;;;4197:1;4188:11;;;;;4315:14;;;;4153:236;;;-1:-1:-1;4475:12:134;;;;4412:5;-1:-1:-1;;;4440:15:134;;;;3602:1;3593:11;3560:937;;;-1:-1:-1;4514:6:134;;2957:1569;-1:-1:-1;;;;;;;;;2957:1569:134:o;4531:803::-;4693:4;4722:2;4762;4751:9;4747:18;4792:2;4781:9;4774:21;4815:6;4850;4844:13;4881:6;4873;4866:22;4919:2;4908:9;4904:18;4897:25;;4981:2;4971:6;4968:1;4964:14;4953:9;4949:30;4945:39;4931:53;;5019:2;5011:6;5007:15;5040:1;5050:255;5064:6;5061:1;5058:13;5050:255;;;5157:2;5153:7;5141:9;5133:6;5129:22;5125:36;5120:3;5113:49;5185:40;5218:6;5209;5203:13;5185:40;:::i;:::-;5175:50;-1:-1:-1;5283:12:134;;;;5248:15;;;;5086:1;5079:9;5050:255;;;-1:-1:-1;5322:6:134;;4531:803;-1:-1:-1;;;;;;;4531:803:134:o;5531:290::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5696:16;;-1:-1:-1;;;;;5741:31:134;;5731:42;;5721:70;;5787:1;5784;5777:12;5721:70;5810:5;5531:290;-1:-1:-1;;;5531:290:134:o;6034:277::-;6101:6;6154:2;6142:9;6133:7;6129:23;6125:32;6122:52;;;6170:1;6167;6160:12;6122:52;6202:9;6196:16;6255:5;6248:13;6241:21;6234:5;6231:32;6221:60;;6277:1;6274;6267:12;8048:435;8101:3;8139:5;8133:12;8166:6;8161:3;8154:19;8192:4;8221:2;8216:3;8212:12;8205:19;;8258:2;8251:5;8247:14;8279:1;8289:169;8303:6;8300:1;8297:13;8289:169;;;8364:13;;8352:26;;8398:12;;;;8433:15;;;;8325:1;8318:9;8289:169;;;-1:-1:-1;8474:3:134;;8048:435;-1:-1:-1;;;;;8048:435:134:o;8488:864::-;8899:1;8895;8890:3;8886:11;8882:19;8874:6;8870:32;8859:9;8852:51;8939:3;8934:2;8923:9;8919:18;8912:31;8980:2;8974:3;8963:9;8959:19;8952:31;9020:34;9014:3;9003:9;8999:19;8992:63;-1:-1:-1;;;9086:3:134;9075:9;9071:19;9064:45;8833:4;9128:3;9167:6;9162:2;9151:9;9147:18;9140:34;9224:6;9217:14;9210:22;9205:2;9194:9;9190:18;9183:50;9270:2;9264:3;9253:9;9249:19;9242:31;9290:56;9342:2;9331:9;9327:18;9319:6;9290:56;:::i;:::-;9282:64;8488:864;-1:-1:-1;;;;;;;8488:864:134:o;9357:184::-;9427:6;9480:2;9468:9;9459:7;9455:23;9451:32;9448:52;;;9496:1;9493;9486:12;9448:52;-1:-1:-1;9519:16:134;;9357:184;-1:-1:-1;9357:184:134:o;9546:784::-;9957:1;9953;9948:3;9944:11;9940:19;9932:6;9928:32;9917:9;9910:51;9997:3;9992:2;9981:9;9977:18;9970:31;10038:2;10032:3;10021:9;10017:19;10010:31;10078:28;10072:3;10061:9;10057:19;10050:57;10143:6;10138:2;10127:9;10123:18;10116:34;10200:6;10193:14;10186:22;10181:2;10170:9;10166:18;10159:50;10246:3;10240;10229:9;10225:19;10218:32;9891:4;10267:57;10319:3;10308:9;10304:19;10296:6;10267:57;:::i;:::-;10259:65;9546:784;-1:-1:-1;;;;;;9546:784:134:o;10467:127::-;10528:10;10523:3;10519:20;10516:1;10509:31;10559:4;10556:1;10549:15;10583:4;10580:1;10573:15;10599:856;11010:1;11006;11001:3;10997:11;10993:19;10985:6;10981:32;10970:9;10963:51;11050:3;11045:2;11034:9;11030:18;11023:31;11091:2;11085:3;11074:9;11070:19;11063:31;11131:34;11125:3;11114:9;11110:19;11103:63;-1:-1:-1;;;11197:3:134;11186:9;11182:19;11175:37;10944:4;11231:3;11270:6;11265:2;11254:9;11250:18;11243:34;11327:6;11320:14;11313:22;11308:2;11297:9;11293:18;11286:50;11373:2;11367:3;11356:9;11352:19;11345:31;11393:56;11445:2;11434:9;11430:18;11422:6;11393:56;:::i;11460:380::-;11539:1;11535:12;;;;11582;;;11603:61;;11657:4;11649:6;11645:17;11635:27;;11603:61;11710:2;11702:6;11699:14;11679:18;11676:38;11673:161;;11756:10;11751:3;11747:20;11744:1;11737:31;11791:4;11788:1;11781:15;11819:4;11816:1;11809:15;11673:161;;11460:380;;;:::o;12403:384::-;-1:-1:-1;;;;;;12588:33:134;;12576:46;;12645:13;;12558:3;;12667:74;12645:13;12730:1;12721:11;;12714:4;12702:17;;12667:74;:::i;:::-;12761:16;;;;12779:1;12757:24;;12403:384;-1:-1:-1;;;12403:384:134:o;12792:287::-;12921:3;12959:6;12953:13;12975:66;13034:6;13029:3;13022:4;13014:6;13010:17;12975:66;:::i;:::-;13057:16;;;;;12792:287;-1:-1:-1;;12792:287:134:o;13084:446::-;13334:2;13323:9;13316:21;13373:1;13368:2;13357:9;13353:18;13346:29;-1:-1:-1;;;13406:2:134;13395:9;13391:18;13384:35;13457:3;13450:4;13439:9;13435:20;13428:33;13297:4;13478:46;13519:3;13508:9;13504:19;13496:6;13478:46;:::i", "linkReferences": {} }, "methodIdentifiers": { @@ -599,7 +599,7 @@ "testInstallSocialBot()": "ab2e124b", "testPluginInstallModule()": "33383306" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallSocialBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPluginInstallModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestModuleLess.t.sol\":\"ModuleSkipTemp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/TestModuleLess.t.sol\":{\"keccak256\":\"0xba3a85cd4d18969eea9d1dad61d4967a200067a4a6484610ced006db9d132eba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7f56ff4a54108ada2a8b523e52f6bbbeef0fc8d02d0fe01d56a0fea18b796ece\",\"dweb:/ipfs/QmZSyYjUjgKrkuurPFnGLsV4AyihZEZMaZG8VtfU59pJzM\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAreDeployedContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testInstallSocialBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPluginInstallModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestModuleLess.t.sol\":\"ModuleSkipTemp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/mocks/SWLegacyCommunity.sol\":{\"keccak256\":\"0xcf3c6adde6af5a1ff686355ac25e8947d0d4178991937555b7791b39fa3b60eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67d6b736f8d29d242519feabd645d600f3e04f9f82fe322e270db0eeb0d4c6a\",\"dweb:/ipfs/QmYHuKiUVbVEpaG4bd7Cf5DATwphn4nF4LGW6DTS5RZZ1Q\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/SampleInteractionPlugin.sol\":{\"keccak256\":\"0x984abf9c6f54fea25b98de27ee7772809c50d4a3cb08d058bde1f68af7997106\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://763cf2a1542cf29b78a6d5a57d4d5a8cd540f9a0db612a00599df5d30f9a71fc\",\"dweb:/ipfs/Qmb8PrLvPuwqdNVdiwLZSB2d8npHRvyWm3hXFN9UnMoAEJ\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/standards/ISWLegacyDAO.sol\":{\"keccak256\":\"0x42c0f76118049b4de6a126f06827b6f1b32a847e3e4a95a98d9a6ebbf5114edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c43076d1725c08913d6f68dc212acc5c306d08db173014852b9aac6442fe00a\",\"dweb:/ipfs/QmWE87eXuhecBA9BUxjYYYca2PDdwgTLrEdrx2NrpsX9JU\"]},\"contracts/utils/Allowlist.sol\":{\"keccak256\":\"0x65a8553894134b8f8714df13caed0b194739dfdc23d054fc5296a805e337fbcc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39942be672ca8b68e350a5cd3632f112d3230719bf073246d8036e6db8d6e58c\",\"dweb:/ipfs/QmQpvNDYekc5Cs7RxzBBSG8w6ziqvx8A5Dn4EjvUAkJV4o\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x39b1729d5868c8e94ab8af16751eb500a17fe3870dc627d2b7ddcd5df18d7ad0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1568c82aff125cc4b0fc168be9d67ac313f469a3c7405c5493caecaaaecfb765\",\"dweb:/ipfs/QmXByuZReJsdu1jDcxj1FcmpcUnzoBcqybn9kWgDAECWri\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"test/DeploysInit.t.sol\":{\"keccak256\":\"0x17920ded6e82d8a3e1cb86faf221a97d614052c3a8150552c7e7911c2e9eb2ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://97d686a5bc4bdf6b3648d84961f0d25837dd10a1c30b1ddfc91b238304930483\",\"dweb:/ipfs/Qmdju9AwcBYRxC2vyUcEMvpDzNKFucC8ie1Pkjoh3ymyF8\"]},\"test/TestModuleLess.t.sol\":{\"keccak256\":\"0xba3a85cd4d18969eea9d1dad61d4967a200067a4a6484610ced006db9d132eba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7f56ff4a54108ada2a8b523e52f6bbbeef0fc8d02d0fe01d56a0fea18b796ece\",\"dweb:/ipfs/QmZSyYjUjgKrkuurPFnGLsV4AyihZEZMaZG8VtfU59pJzM\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1248,6 +1248,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -1312,6 +1320,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -1425,10 +1441,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -1965,28 +1981,28 @@ }, "ast": { "absolutePath": "test/TestModuleLess.t.sol", - "id": 74383, + "id": 75169, "exportedSymbols": { "DeploysInit": [ - 70240 + 71026 ], "ModuleSkipTemp": [ - 74382 + 75168 ], "SampleInteractionPlugin": [ - 7122 + 7873 ], "console": [ - 32435 + 33186 ] }, "nodeType": "SourceUnit", - "src": "39:2548:120", + "src": "39:2548:133", "nodes": [ { - "id": 74058, + "id": 74844, "nodeType": "PragmaDirective", - "src": "39:23:120", + "src": "39:23:133", "nodes": [], "literals": [ "solidity", @@ -1995,24 +2011,24 @@ ] }, { - "id": 74060, + "id": 74846, "nodeType": "ImportDirective", - "src": "64:48:120", + "src": "64:48:133", "nodes": [], "absolutePath": "test/DeploysInit.t.sol", "file": "./DeploysInit.t.sol", "nameLocation": "-1:-1:-1", - "scope": 74383, - "sourceUnit": 70241, + "scope": 75169, + "sourceUnit": 71027, "symbolAliases": [ { "foreign": { - "id": 74059, + "id": 74845, "name": "DeploysInit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 70240, - "src": "72:11:120", + "referencedDeclaration": 71026, + "src": "72:11:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2021,24 +2037,24 @@ "unitAlias": "" }, { - "id": 74062, + "id": 74848, "nodeType": "ImportDirective", - "src": "114:102:120", + "src": "114:102:133", "nodes": [], "absolutePath": "contracts/plugins/interactions/SampleInteractionPlugin.sol", "file": "../contracts/plugins/interactions/SampleInteractionPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 74383, - "sourceUnit": 7123, + "scope": 75169, + "sourceUnit": 7874, "symbolAliases": [ { "foreign": { - "id": 74061, + "id": 74847, "name": "SampleInteractionPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7122, - "src": "122:23:120", + "referencedDeclaration": 7873, + "src": "122:23:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -2047,33 +2063,33 @@ "unitAlias": "" }, { - "id": 74063, + "id": 74849, "nodeType": "ImportDirective", - "src": "218:31:120", + "src": "218:31:133", "nodes": [], "absolutePath": "lib/forge-std/src/console.sol", "file": "forge-std/console.sol", "nameLocation": "-1:-1:-1", - "scope": 74383, - "sourceUnit": 32436, + "scope": 75169, + "sourceUnit": 33187, "symbolAliases": [], "unitAlias": "" }, { - "id": 74382, + "id": 75168, "nodeType": "ContractDefinition", - "src": "298:2288:120", + "src": "298:2288:133", "nodes": [ { - "id": 74067, + "id": 74853, "nodeType": "VariableDeclaration", - "src": "343:27:120", + "src": "343:27:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "pluginDefinitionID0", - "nameLocation": "351:19:120", - "scope": 74382, + "nameLocation": "351:19:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2081,10 +2097,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74066, + "id": 74852, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "343:7:120", + "src": "343:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2093,15 +2109,15 @@ "visibility": "internal" }, { - "id": 74069, + "id": 74855, "nodeType": "VariableDeclaration", - "src": "376:27:120", + "src": "376:27:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "pluginDefinitionID1", - "nameLocation": "384:19:120", - "scope": 74382, + "nameLocation": "384:19:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2109,10 +2125,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74068, + "id": 74854, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "376:7:120", + "src": "376:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2121,15 +2137,15 @@ "visibility": "internal" }, { - "id": 74071, + "id": 74857, "nodeType": "VariableDeclaration", - "src": "409:27:120", + "src": "409:27:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "pluginDefinitionID2", - "nameLocation": "417:19:120", - "scope": 74382, + "nameLocation": "417:19:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2137,10 +2153,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74070, + "id": 74856, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "409:7:120", + "src": "409:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2149,15 +2165,15 @@ "visibility": "internal" }, { - "id": 74073, + "id": 74859, "nodeType": "VariableDeclaration", - "src": "442:27:120", + "src": "442:27:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "pluginDefinitionID3", - "nameLocation": "450:19:120", - "scope": 74382, + "nameLocation": "450:19:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2165,10 +2181,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74072, + "id": 74858, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "442:7:120", + "src": "442:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2177,166 +2193,166 @@ "visibility": "internal" }, { - "id": 74076, + "id": 74862, "nodeType": "VariableDeclaration", - "src": "476:33:120", + "src": "476:33:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "SampleIP0", - "nameLocation": "500:9:120", - "scope": 74382, + "nameLocation": "500:9:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 74075, + "id": 74861, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74074, + "id": 74860, "name": "SampleInteractionPlugin", "nameLocations": [ - "476:23:120" + "476:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "476:23:120" + "referencedDeclaration": 7873, + "src": "476:23:133" }, - "referencedDeclaration": 7122, - "src": "476:23:120", + "referencedDeclaration": 7873, + "src": "476:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 74079, + "id": 74865, "nodeType": "VariableDeclaration", - "src": "515:33:120", + "src": "515:33:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "SampleIP1", - "nameLocation": "539:9:120", - "scope": 74382, + "nameLocation": "539:9:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 74078, + "id": 74864, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74077, + "id": 74863, "name": "SampleInteractionPlugin", "nameLocations": [ - "515:23:120" + "515:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "515:23:120" + "referencedDeclaration": 7873, + "src": "515:23:133" }, - "referencedDeclaration": 7122, - "src": "515:23:120", + "referencedDeclaration": 7873, + "src": "515:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 74082, + "id": 74868, "nodeType": "VariableDeclaration", - "src": "554:33:120", + "src": "554:33:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "SampleIP2", - "nameLocation": "578:9:120", - "scope": 74382, + "nameLocation": "578:9:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 74081, + "id": 74867, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74080, + "id": 74866, "name": "SampleInteractionPlugin", "nameLocations": [ - "554:23:120" + "554:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "554:23:120" + "referencedDeclaration": 7873, + "src": "554:23:133" }, - "referencedDeclaration": 7122, - "src": "554:23:120", + "referencedDeclaration": 7873, + "src": "554:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 74085, + "id": 74871, "nodeType": "VariableDeclaration", - "src": "593:33:120", + "src": "593:33:133", "nodes": [], "constant": false, "mutability": "mutable", "name": "SampleIP3", - "nameLocation": "617:9:120", - "scope": 74382, + "nameLocation": "617:9:133", + "scope": 75168, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" }, "typeName": { - "id": 74084, + "id": 74870, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74083, + "id": 74869, "name": "SampleInteractionPlugin", "nameLocations": [ - "593:23:120" + "593:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "593:23:120" + "referencedDeclaration": 7873, + "src": "593:23:133" }, - "referencedDeclaration": 7122, - "src": "593:23:120", + "referencedDeclaration": 7873, + "src": "593:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, "visibility": "internal" }, { - "id": 74309, + "id": 75095, "nodeType": "FunctionDefinition", - "src": "633:1480:120", + "src": "633:1480:133", "nodes": [], "body": { - "id": 74308, + "id": 75094, "nodeType": "Block", - "src": "666:1447:120", + "src": "666:1447:133", "nodes": [], "statements": [ { @@ -2345,33 +2361,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 74089, + "id": 74875, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "676:5:120", + "src": "676:5:133", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ModuleSkipTemp_$74382_$", + "typeIdentifier": "t_type$_t_super$_ModuleSkipTemp_$75168_$", "typeString": "type(contract super ModuleSkipTemp)" } }, - "id": 74091, + "id": 74877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "682:5:120", + "memberLocation": "682:5:133", "memberName": "setUp", "nodeType": "MemberAccess", - "referencedDeclaration": 70143, - "src": "676:11:120", + "referencedDeclaration": 70929, + "src": "676:11:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 74092, + "id": 74878, "isConstant": false, "isLValue": false, "isPure": false, @@ -2380,27 +2396,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "676:13:120", + "src": "676:13:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74093, + "id": 74879, "nodeType": "ExpressionStatement", - "src": "676:13:120" + "src": "676:13:133" }, { "expression": { "arguments": [ { - "id": 74097, + "id": 74883, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "709:2:120", + "referencedDeclaration": 70587, + "src": "709:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2415,33 +2431,33 @@ } ], "expression": { - "id": 74094, + "id": 74880, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "700:2:120", + "referencedDeclaration": 13541, + "src": "700:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74096, + "id": 74882, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "703:5:120", + "memberLocation": "703:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "700:8:120", + "referencedDeclaration": 24720, + "src": "700:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74098, + "id": 74884, "isConstant": false, "isLValue": false, "isPure": false, @@ -2450,33 +2466,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "700:12:120", + "src": "700:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74099, + "id": 74885, "nodeType": "ExpressionStatement", - "src": "700:12:120" + "src": "700:12:133" }, { "expression": { - "id": 74109, + "id": 74895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74100, + "id": 74886, "name": "SampleIP0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74076, - "src": "722:9:120", + "referencedDeclaration": 74862, + "src": "722:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, @@ -2487,14 +2503,14 @@ { "arguments": [ { - "id": 74106, + "id": 74892, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "770:4:120", + "referencedDeclaration": 70573, + "src": "770:4:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2502,30 +2518,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 74105, + "id": 74891, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "762:7:120", + "src": "762:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74104, + "id": 74890, "name": "address", "nodeType": "ElementaryTypeName", - "src": "762:7:120", + "src": "762:7:133", "typeDescriptions": {} } }, - "id": 74107, + "id": 74893, "isConstant": false, "isLValue": false, "isPure": false, @@ -2534,7 +2550,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "762:13:120", + "src": "762:13:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2549,39 +2565,39 @@ "typeString": "address" } ], - "id": 74103, + "id": 74889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "734:27:120", + "src": "734:27:133", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7122_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7873_$", "typeString": "function (address) returns (contract SampleInteractionPlugin)" }, "typeName": { - "id": 74102, + "id": 74888, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74101, + "id": 74887, "name": "SampleInteractionPlugin", "nameLocations": [ - "738:23:120" + "738:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "738:23:120" + "referencedDeclaration": 7873, + "src": "738:23:133" }, - "referencedDeclaration": 7122, - "src": "738:23:120", + "referencedDeclaration": 7873, + "src": "738:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } }, - "id": 74108, + "id": 74894, "isConstant": false, "isLValue": false, "isPure": false, @@ -2590,22 +2606,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "734:42:120", + "src": "734:42:133", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "src": "722:54:120", + "src": "722:54:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 74110, + "id": 74896, "nodeType": "ExpressionStatement", - "src": "722:54:120" + "src": "722:54:133" }, { "expression": { @@ -2613,14 +2629,14 @@ { "arguments": [ { - "id": 74116, + "id": 74902, "name": "SampleIP0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74076, - "src": "803:9:120", + "referencedDeclaration": 74862, + "src": "803:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -2628,30 +2644,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74115, + "id": 74901, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "795:7:120", + "src": "795:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74114, + "id": 74900, "name": "address", "nodeType": "ElementaryTypeName", - "src": "795:7:120", + "src": "795:7:133", "typeDescriptions": {} } }, - "id": 74117, + "id": 74903, "isConstant": false, "isLValue": false, "isPure": false, @@ -2660,7 +2676,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "795:18:120", + "src": "795:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2669,14 +2685,14 @@ }, { "hexValue": "706c7567696e30", - "id": 74118, + "id": 74904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "815:9:120", + "src": "815:9:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a7fb6d1c29a7aeeb2343a63575ef3b521e43e077217383836ae020ab5d649c4d", "typeString": "literal_string \"plugin0\"" @@ -2696,33 +2712,33 @@ } ], "expression": { - "id": 74111, + "id": 74897, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "786:2:120", + "referencedDeclaration": 13541, + "src": "786:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74113, + "id": 74899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "789:5:120", + "memberLocation": "789:5:133", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "786:8:120", + "referencedDeclaration": 23909, + "src": "786:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 74119, + "id": 74905, "isConstant": false, "isLValue": false, "isPure": false, @@ -2731,27 +2747,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "786:39:120", + "src": "786:39:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74120, + "id": 74906, "nodeType": "ExpressionStatement", - "src": "786:39:120" + "src": "786:39:133" }, { "expression": { "arguments": [ { - "id": 74124, + "id": 74910, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "844:2:120", + "referencedDeclaration": 70587, + "src": "844:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2766,33 +2782,33 @@ } ], "expression": { - "id": 74121, + "id": 74907, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "835:2:120", + "referencedDeclaration": 13541, + "src": "835:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74123, + "id": 74909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "838:5:120", + "memberLocation": "838:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "835:8:120", + "referencedDeclaration": 24720, + "src": "835:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74125, + "id": 74911, "isConstant": false, "isLValue": false, "isPure": false, @@ -2801,33 +2817,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "835:12:120", + "src": "835:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74126, + "id": 74912, "nodeType": "ExpressionStatement", - "src": "835:12:120" + "src": "835:12:133" }, { "expression": { - "id": 74136, + "id": 74922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74127, + "id": 74913, "name": "SampleIP1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74079, - "src": "857:9:120", + "referencedDeclaration": 74865, + "src": "857:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, @@ -2838,14 +2854,14 @@ { "arguments": [ { - "id": 74133, + "id": 74919, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "905:4:120", + "referencedDeclaration": 70573, + "src": "905:4:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -2853,30 +2869,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 74132, + "id": 74918, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "897:7:120", + "src": "897:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74131, + "id": 74917, "name": "address", "nodeType": "ElementaryTypeName", - "src": "897:7:120", + "src": "897:7:133", "typeDescriptions": {} } }, - "id": 74134, + "id": 74920, "isConstant": false, "isLValue": false, "isPure": false, @@ -2885,7 +2901,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "897:13:120", + "src": "897:13:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2900,39 +2916,39 @@ "typeString": "address" } ], - "id": 74130, + "id": 74916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "869:27:120", + "src": "869:27:133", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7122_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7873_$", "typeString": "function (address) returns (contract SampleInteractionPlugin)" }, "typeName": { - "id": 74129, + "id": 74915, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74128, + "id": 74914, "name": "SampleInteractionPlugin", "nameLocations": [ - "873:23:120" + "873:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "873:23:120" + "referencedDeclaration": 7873, + "src": "873:23:133" }, - "referencedDeclaration": 7122, - "src": "873:23:120", + "referencedDeclaration": 7873, + "src": "873:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } }, - "id": 74135, + "id": 74921, "isConstant": false, "isLValue": false, "isPure": false, @@ -2941,22 +2957,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "869:42:120", + "src": "869:42:133", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "src": "857:54:120", + "src": "857:54:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 74137, + "id": 74923, "nodeType": "ExpressionStatement", - "src": "857:54:120" + "src": "857:54:133" }, { "expression": { @@ -2964,14 +2980,14 @@ { "arguments": [ { - "id": 74143, + "id": 74929, "name": "SampleIP1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74079, - "src": "938:9:120", + "referencedDeclaration": 74865, + "src": "938:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -2979,30 +2995,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74142, + "id": 74928, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "930:7:120", + "src": "930:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74141, + "id": 74927, "name": "address", "nodeType": "ElementaryTypeName", - "src": "930:7:120", + "src": "930:7:133", "typeDescriptions": {} } }, - "id": 74144, + "id": 74930, "isConstant": false, "isLValue": false, "isPure": false, @@ -3011,7 +3027,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "930:18:120", + "src": "930:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3020,14 +3036,14 @@ }, { "hexValue": "706c7567696e31", - "id": 74145, + "id": 74931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "950:9:120", + "src": "950:9:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c09d1167399a0eb8c6e87c256b68eb93504540075fb7f6463fccb45cc37036c8", "typeString": "literal_string \"plugin1\"" @@ -3047,33 +3063,33 @@ } ], "expression": { - "id": 74138, + "id": 74924, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "921:2:120", + "referencedDeclaration": 13541, + "src": "921:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74140, + "id": 74926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "924:5:120", + "memberLocation": "924:5:133", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "921:8:120", + "referencedDeclaration": 23909, + "src": "921:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 74146, + "id": 74932, "isConstant": false, "isLValue": false, "isPure": false, @@ -3082,27 +3098,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "921:39:120", + "src": "921:39:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74147, + "id": 74933, "nodeType": "ExpressionStatement", - "src": "921:39:120" + "src": "921:39:133" }, { "expression": { "arguments": [ { - "id": 74151, + "id": 74937, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "979:2:120", + "referencedDeclaration": 70587, + "src": "979:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3117,33 +3133,33 @@ } ], "expression": { - "id": 74148, + "id": 74934, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "970:2:120", + "referencedDeclaration": 13541, + "src": "970:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74150, + "id": 74936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "973:5:120", + "memberLocation": "973:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "970:8:120", + "referencedDeclaration": 24720, + "src": "970:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74152, + "id": 74938, "isConstant": false, "isLValue": false, "isPure": false, @@ -3152,33 +3168,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "970:12:120", + "src": "970:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74153, + "id": 74939, "nodeType": "ExpressionStatement", - "src": "970:12:120" + "src": "970:12:133" }, { "expression": { - "id": 74163, + "id": 74949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74154, + "id": 74940, "name": "SampleIP2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74082, - "src": "992:9:120", + "referencedDeclaration": 74868, + "src": "992:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, @@ -3189,14 +3205,14 @@ { "arguments": [ { - "id": 74160, + "id": 74946, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1040:4:120", + "referencedDeclaration": 70573, + "src": "1040:4:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3204,30 +3220,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 74159, + "id": 74945, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1032:7:120", + "src": "1032:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74158, + "id": 74944, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1032:7:120", + "src": "1032:7:133", "typeDescriptions": {} } }, - "id": 74161, + "id": 74947, "isConstant": false, "isLValue": false, "isPure": false, @@ -3236,7 +3252,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1032:13:120", + "src": "1032:13:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3251,39 +3267,39 @@ "typeString": "address" } ], - "id": 74157, + "id": 74943, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1004:27:120", + "src": "1004:27:133", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7122_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7873_$", "typeString": "function (address) returns (contract SampleInteractionPlugin)" }, "typeName": { - "id": 74156, + "id": 74942, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74155, + "id": 74941, "name": "SampleInteractionPlugin", "nameLocations": [ - "1008:23:120" + "1008:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "1008:23:120" + "referencedDeclaration": 7873, + "src": "1008:23:133" }, - "referencedDeclaration": 7122, - "src": "1008:23:120", + "referencedDeclaration": 7873, + "src": "1008:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } }, - "id": 74162, + "id": 74948, "isConstant": false, "isLValue": false, "isPure": false, @@ -3292,22 +3308,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1004:42:120", + "src": "1004:42:133", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "src": "992:54:120", + "src": "992:54:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 74164, + "id": 74950, "nodeType": "ExpressionStatement", - "src": "992:54:120" + "src": "992:54:133" }, { "expression": { @@ -3315,14 +3331,14 @@ { "arguments": [ { - "id": 74170, + "id": 74956, "name": "SampleIP2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74082, - "src": "1073:9:120", + "referencedDeclaration": 74868, + "src": "1073:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -3330,30 +3346,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74169, + "id": 74955, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1065:7:120", + "src": "1065:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74168, + "id": 74954, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1065:7:120", + "src": "1065:7:133", "typeDescriptions": {} } }, - "id": 74171, + "id": 74957, "isConstant": false, "isLValue": false, "isPure": false, @@ -3362,7 +3378,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1065:18:120", + "src": "1065:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3371,14 +3387,14 @@ }, { "hexValue": "706c7567696e32", - "id": 74172, + "id": 74958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1085:9:120", + "src": "1085:9:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_49002276999d30fa8a685f30acc86d517e428385bde6a6585f9c5f79a9e3831b", "typeString": "literal_string \"plugin2\"" @@ -3398,33 +3414,33 @@ } ], "expression": { - "id": 74165, + "id": 74951, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1056:2:120", + "referencedDeclaration": 13541, + "src": "1056:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74167, + "id": 74953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1059:5:120", + "memberLocation": "1059:5:133", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1056:8:120", + "referencedDeclaration": 23909, + "src": "1056:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 74173, + "id": 74959, "isConstant": false, "isLValue": false, "isPure": false, @@ -3433,27 +3449,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1056:39:120", + "src": "1056:39:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74174, + "id": 74960, "nodeType": "ExpressionStatement", - "src": "1056:39:120" + "src": "1056:39:133" }, { "expression": { "arguments": [ { - "id": 74178, + "id": 74964, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1114:2:120", + "referencedDeclaration": 70587, + "src": "1114:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3468,33 +3484,33 @@ } ], "expression": { - "id": 74175, + "id": 74961, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1105:2:120", + "referencedDeclaration": 13541, + "src": "1105:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74177, + "id": 74963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1108:5:120", + "memberLocation": "1108:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1105:8:120", + "referencedDeclaration": 24720, + "src": "1105:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74179, + "id": 74965, "isConstant": false, "isLValue": false, "isPure": false, @@ -3503,33 +3519,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1105:12:120", + "src": "1105:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74180, + "id": 74966, "nodeType": "ExpressionStatement", - "src": "1105:12:120" + "src": "1105:12:133" }, { "expression": { - "id": 74190, + "id": 74976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74181, + "id": 74967, "name": "SampleIP3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74085, - "src": "1127:9:120", + "referencedDeclaration": 74871, + "src": "1127:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, @@ -3540,14 +3556,14 @@ { "arguments": [ { - "id": 74187, + "id": 74973, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69787, - "src": "1175:4:120", + "referencedDeclaration": 70573, + "src": "1175:4:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -3555,30 +3571,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 74186, + "id": 74972, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1167:7:120", + "src": "1167:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74185, + "id": 74971, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1167:7:120", + "src": "1167:7:133", "typeDescriptions": {} } }, - "id": 74188, + "id": 74974, "isConstant": false, "isLValue": false, "isPure": false, @@ -3587,7 +3603,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1167:13:120", + "src": "1167:13:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3602,39 +3618,39 @@ "typeString": "address" } ], - "id": 74184, + "id": 74970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1139:27:120", + "src": "1139:27:133", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7122_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SampleInteractionPlugin_$7873_$", "typeString": "function (address) returns (contract SampleInteractionPlugin)" }, "typeName": { - "id": 74183, + "id": 74969, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 74182, + "id": 74968, "name": "SampleInteractionPlugin", "nameLocations": [ - "1143:23:120" + "1143:23:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7122, - "src": "1143:23:120" + "referencedDeclaration": 7873, + "src": "1143:23:133" }, - "referencedDeclaration": 7122, - "src": "1143:23:120", + "referencedDeclaration": 7873, + "src": "1143:23:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } }, - "id": 74189, + "id": 74975, "isConstant": false, "isLValue": false, "isPure": false, @@ -3643,22 +3659,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1139:42:120", + "src": "1139:42:133", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "src": "1127:54:120", + "src": "1127:54:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } }, - "id": 74191, + "id": 74977, "nodeType": "ExpressionStatement", - "src": "1127:54:120" + "src": "1127:54:133" }, { "expression": { @@ -3666,14 +3682,14 @@ { "arguments": [ { - "id": 74197, + "id": 74983, "name": "SampleIP3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74085, - "src": "1208:9:120", + "referencedDeclaration": 74871, + "src": "1208:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -3681,30 +3697,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74196, + "id": 74982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1200:7:120", + "src": "1200:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74195, + "id": 74981, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1200:7:120", + "src": "1200:7:133", "typeDescriptions": {} } }, - "id": 74198, + "id": 74984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3713,7 +3729,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1200:18:120", + "src": "1200:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3722,14 +3738,14 @@ }, { "hexValue": "706c7567696e33", - "id": 74199, + "id": 74985, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1220:9:120", + "src": "1220:9:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a926078db0fca7a47de34f01ae5d0e2f3a66c76569914f6cbfb00a85a3070de6", "typeString": "literal_string \"plugin3\"" @@ -3749,33 +3765,33 @@ } ], "expression": { - "id": 74192, + "id": 74978, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1191:2:120", + "referencedDeclaration": 13541, + "src": "1191:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74194, + "id": 74980, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1194:5:120", + "memberLocation": "1194:5:133", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1191:8:120", + "referencedDeclaration": 23909, + "src": "1191:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 74200, + "id": 74986, "isConstant": false, "isLValue": false, "isPure": false, @@ -3784,31 +3800,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1191:39:120", + "src": "1191:39:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74201, + "id": 74987, "nodeType": "ExpressionStatement", - "src": "1191:39:120" + "src": "1191:39:133" }, { "assignments": [ - 74206 + 74992 ], "declarations": [ { "constant": false, - "id": 74206, + "id": 74992, "mutability": "mutable", "name": "dependencyModules", - "nameLocation": "1258:17:120", + "nameLocation": "1258:17:133", "nodeType": "VariableDeclaration", - "scope": 74308, - "src": "1241:34:120", + "scope": 75094, + "src": "1241:34:133", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3817,18 +3833,18 @@ }, "typeName": { "baseType": { - "id": 74204, + "id": 74990, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1241:7:120", + "src": "1241:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74205, + "id": 74991, "nodeType": "ArrayTypeName", - "src": "1241:9:120", + "src": "1241:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -3837,20 +3853,20 @@ "visibility": "internal" } ], - "id": 74207, + "id": 74993, "nodeType": "VariableDeclarationStatement", - "src": "1241:34:120" + "src": "1241:34:133" }, { "expression": { "arguments": [ { - "id": 74211, + "id": 74997, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1295:2:120", + "referencedDeclaration": 70587, + "src": "1295:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3865,33 +3881,33 @@ } ], "expression": { - "id": 74208, + "id": 74994, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1286:2:120", + "referencedDeclaration": 13541, + "src": "1286:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74210, + "id": 74996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1289:5:120", + "memberLocation": "1289:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1286:8:120", + "referencedDeclaration": 24720, + "src": "1286:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74212, + "id": 74998, "isConstant": false, "isLValue": false, "isPure": false, @@ -3900,31 +3916,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1286:12:120", + "src": "1286:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74213, + "id": 74999, "nodeType": "ExpressionStatement", - "src": "1286:12:120" + "src": "1286:12:133" }, { "expression": { - "id": 74226, + "id": 75012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74214, + "id": 75000, "name": "pluginDefinitionID0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74067, - "src": "1308:19:120", + "referencedDeclaration": 74853, + "src": "1308:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3937,12 +3953,12 @@ { "arguments": [ { - "id": 74219, + "id": 75005, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1375:2:120", + "referencedDeclaration": 70589, + "src": "1375:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3956,27 +3972,27 @@ "typeString": "address" } ], - "id": 74218, + "id": 75004, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1367:8:120", + "src": "1367:8:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 74217, + "id": 75003, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1367:8:120", + "src": "1367:8:133", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 74220, + "id": 75006, "isConstant": false, "isLValue": false, "isPure": false, @@ -3985,7 +4001,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1367:11:120", + "src": "1367:11:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3994,14 +4010,14 @@ }, { "hexValue": "6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e656564206d6f6465726174696f6e", - "id": 74221, + "id": 75007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1380:48:120", + "src": "1380:48:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d6d6c2d70d6c15d03636ff6ebd9cca44082cb249ffbfcb7ae6d3de5539e19c80", "typeString": "literal_string \"owner controled metadata might need moderation\"" @@ -4010,14 +4026,14 @@ }, { "hexValue": "30", - "id": 74222, + "id": 75008, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1430:1:120", + "src": "1430:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4026,14 +4042,14 @@ }, { "hexValue": "74727565", - "id": 74223, + "id": 75009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1433:4:120", + "src": "1433:4:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4041,12 +4057,12 @@ "value": "true" }, { - "id": 74224, + "id": 75010, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1439:17:120", + "referencedDeclaration": 74992, + "src": "1439:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4077,33 +4093,33 @@ } ], "expression": { - "id": 74215, + "id": 75001, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1330:3:120", + "referencedDeclaration": 70555, + "src": "1330:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74216, + "id": 75002, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1334:19:120", + "memberLocation": "1334:19:133", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1330:23:120", + "referencedDeclaration": 9556, + "src": "1330:23:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 74225, + "id": 75011, "isConstant": false, "isLValue": false, "isPure": false, @@ -4112,33 +4128,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1330:136:120", + "src": "1330:136:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1308:158:120", + "src": "1308:158:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74227, + "id": 75013, "nodeType": "ExpressionStatement", - "src": "1308:158:120" + "src": "1308:158:133" }, { "expression": { "arguments": [ { - "id": 74231, + "id": 75017, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1486:2:120", + "referencedDeclaration": 70587, + "src": "1486:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4153,33 +4169,33 @@ } ], "expression": { - "id": 74228, + "id": 75014, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1477:2:120", + "referencedDeclaration": 13541, + "src": "1477:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74230, + "id": 75016, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1480:5:120", + "memberLocation": "1480:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1477:8:120", + "referencedDeclaration": 24720, + "src": "1477:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74232, + "id": 75018, "isConstant": false, "isLValue": false, "isPure": false, @@ -4188,31 +4204,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1477:12:120", + "src": "1477:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74233, + "id": 75019, "nodeType": "ExpressionStatement", - "src": "1477:12:120" + "src": "1477:12:133" }, { "expression": { - "id": 74246, + "id": 75032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74234, + "id": 75020, "name": "pluginDefinitionID1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74069, - "src": "1499:19:120", + "referencedDeclaration": 74855, + "src": "1499:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4225,12 +4241,12 @@ { "arguments": [ { - "id": 74239, + "id": 75025, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1565:2:120", + "referencedDeclaration": 70589, + "src": "1565:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4244,27 +4260,27 @@ "typeString": "address" } ], - "id": 74238, + "id": 75024, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1557:8:120", + "src": "1557:8:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 74237, + "id": 75023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1557:8:120", + "src": "1557:8:133", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 74240, + "id": 75026, "isConstant": false, "isLValue": false, "isPure": false, @@ -4273,7 +4289,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1557:11:120", + "src": "1557:11:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4282,14 +4298,14 @@ }, { "hexValue": "6f776e657220636f6e74726f6c6564206d657461646174612032", - "id": 74241, + "id": 75027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1570:28:120", + "src": "1570:28:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b89f3e619da50839a5cc7972b1712ee4659e68aa0cd55ad90c53b88004cd50c3", "typeString": "literal_string \"owner controled metadata 2\"" @@ -4298,14 +4314,14 @@ }, { "hexValue": "30", - "id": 74242, + "id": 75028, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1600:1:120", + "src": "1600:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4314,14 +4330,14 @@ }, { "hexValue": "74727565", - "id": 74243, + "id": 75029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1603:4:120", + "src": "1603:4:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4329,12 +4345,12 @@ "value": "true" }, { - "id": 74244, + "id": 75030, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1609:17:120", + "referencedDeclaration": 74992, + "src": "1609:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4365,33 +4381,33 @@ } ], "expression": { - "id": 74235, + "id": 75021, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1533:3:120", + "referencedDeclaration": 70555, + "src": "1533:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74236, + "id": 75022, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1537:19:120", + "memberLocation": "1537:19:133", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1533:23:120", + "referencedDeclaration": 9556, + "src": "1533:23:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 74245, + "id": 75031, "isConstant": false, "isLValue": false, "isPure": false, @@ -4400,37 +4416,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1533:94:120", + "src": "1533:94:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1499:128:120", + "src": "1499:128:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74247, + "id": 75033, "nodeType": "ExpressionStatement", - "src": "1499:128:120" + "src": "1499:128:133" }, { "expression": { - "id": 74254, + "id": 75040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74248, + "id": 75034, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1638:17:120", + "referencedDeclaration": 74992, + "src": "1638:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4442,14 +4458,14 @@ "arguments": [ { "hexValue": "32", - "id": 74252, + "id": 75038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1672:1:120", + "src": "1672:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -4464,38 +4480,38 @@ "typeString": "int_const 2" } ], - "id": 74251, + "id": 75037, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "1658:13:120", + "src": "1658:13:133", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { - "id": 74249, + "id": 75035, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1662:7:120", + "src": "1662:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74250, + "id": 75036, "nodeType": "ArrayTypeName", - "src": "1662:9:120", + "src": "1662:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, - "id": 74253, + "id": 75039, "isConstant": false, "isLValue": false, "isPure": true, @@ -4504,54 +4520,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1658:16:120", + "src": "1658:16:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "src": "1638:36:120", + "src": "1638:36:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 74255, + "id": 75041, "nodeType": "ExpressionStatement", - "src": "1638:36:120" + "src": "1638:36:133" }, { "expression": { - "id": 74260, + "id": 75046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 74256, + "id": 75042, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1684:17:120", + "referencedDeclaration": 74992, + "src": "1684:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 74258, + "id": 75044, "indexExpression": { "hexValue": "30", - "id": 74257, + "id": 75043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1702:1:120", + "src": "1702:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4563,7 +4579,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1684:20:120", + "src": "1684:20:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4573,61 +4589,61 @@ "operator": "=", "rightHandSide": { "hexValue": "31", - "id": 74259, + "id": 75045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1707:1:120", + "src": "1707:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "1684:24:120", + "src": "1684:24:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74261, + "id": 75047, "nodeType": "ExpressionStatement", - "src": "1684:24:120" + "src": "1684:24:133" }, { "expression": { - "id": 74266, + "id": 75052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 74262, + "id": 75048, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1718:17:120", + "referencedDeclaration": 74992, + "src": "1718:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 74264, + "id": 75050, "indexExpression": { "hexValue": "31", - "id": 74263, + "id": 75049, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1736:1:120", + "src": "1736:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -4639,7 +4655,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1718:20:120", + "src": "1718:20:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4649,40 +4665,40 @@ "operator": "=", "rightHandSide": { "hexValue": "32", - "id": 74265, + "id": 75051, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1741:1:120", + "src": "1741:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "1718:24:120", + "src": "1718:24:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74267, + "id": 75053, "nodeType": "ExpressionStatement", - "src": "1718:24:120" + "src": "1718:24:133" }, { "expression": { "arguments": [ { - "id": 74271, + "id": 75057, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1762:2:120", + "referencedDeclaration": 70587, + "src": "1762:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4697,33 +4713,33 @@ } ], "expression": { - "id": 74268, + "id": 75054, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1753:2:120", + "referencedDeclaration": 13541, + "src": "1753:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74270, + "id": 75056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1756:5:120", + "memberLocation": "1756:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1753:8:120", + "referencedDeclaration": 24720, + "src": "1753:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74272, + "id": 75058, "isConstant": false, "isLValue": false, "isPure": false, @@ -4732,31 +4748,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1753:12:120", + "src": "1753:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74273, + "id": 75059, "nodeType": "ExpressionStatement", - "src": "1753:12:120" + "src": "1753:12:133" }, { "expression": { - "id": 74286, + "id": 75072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74274, + "id": 75060, "name": "pluginDefinitionID2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74071, - "src": "1775:19:120", + "referencedDeclaration": 74857, + "src": "1775:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4769,12 +4785,12 @@ { "arguments": [ { - "id": 74279, + "id": 75065, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "1842:2:120", + "referencedDeclaration": 70589, + "src": "1842:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4788,27 +4804,27 @@ "typeString": "address" } ], - "id": 74278, + "id": 75064, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1834:8:120", + "src": "1834:8:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 74277, + "id": 75063, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1834:8:120", + "src": "1834:8:133", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 74280, + "id": 75066, "isConstant": false, "isLValue": false, "isPure": false, @@ -4817,7 +4833,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1834:11:120", + "src": "1834:11:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4826,14 +4842,14 @@ }, { "hexValue": "6f776e657220636f6e74726f6c6564206d65746164617461206d69676874206e656564206d6f6465726174696f6e", - "id": 74281, + "id": 75067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1847:48:120", + "src": "1847:48:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d6d6c2d70d6c15d03636ff6ebd9cca44082cb249ffbfcb7ae6d3de5539e19c80", "typeString": "literal_string \"owner controled metadata might need moderation\"" @@ -4842,14 +4858,14 @@ }, { "hexValue": "30", - "id": 74282, + "id": 75068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1897:1:120", + "src": "1897:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4858,14 +4874,14 @@ }, { "hexValue": "74727565", - "id": 74283, + "id": 75069, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1900:4:120", + "src": "1900:4:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4873,12 +4889,12 @@ "value": "true" }, { - "id": 74284, + "id": 75070, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "1906:17:120", + "referencedDeclaration": 74992, + "src": "1906:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4909,33 +4925,33 @@ } ], "expression": { - "id": 74275, + "id": 75061, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "1797:3:120", + "referencedDeclaration": 70555, + "src": "1797:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74276, + "id": 75062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1801:19:120", + "memberLocation": "1801:19:133", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "1797:23:120", + "referencedDeclaration": 9556, + "src": "1797:23:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 74285, + "id": 75071, "isConstant": false, "isLValue": false, "isPure": false, @@ -4944,33 +4960,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1797:136:120", + "src": "1797:136:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1775:158:120", + "src": "1775:158:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74287, + "id": 75073, "nodeType": "ExpressionStatement", - "src": "1775:158:120" + "src": "1775:158:133" }, { "expression": { "arguments": [ { - "id": 74291, + "id": 75077, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "1953:2:120", + "referencedDeclaration": 70587, + "src": "1953:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4985,33 +5001,33 @@ } ], "expression": { - "id": 74288, + "id": 75074, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1944:2:120", + "referencedDeclaration": 13541, + "src": "1944:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74290, + "id": 75076, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1947:5:120", + "memberLocation": "1947:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "1944:8:120", + "referencedDeclaration": 24720, + "src": "1944:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74292, + "id": 75078, "isConstant": false, "isLValue": false, "isPure": false, @@ -5020,31 +5036,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1944:12:120", + "src": "1944:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74293, + "id": 75079, "nodeType": "ExpressionStatement", - "src": "1944:12:120" + "src": "1944:12:133" }, { "expression": { - "id": 74306, + "id": 75092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 74294, + "id": 75080, "name": "pluginDefinitionID3", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74073, - "src": "1966:19:120", + "referencedDeclaration": 74859, + "src": "1966:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5057,12 +5073,12 @@ { "arguments": [ { - "id": 74299, + "id": 75085, "name": "A1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69803, - "src": "2032:2:120", + "referencedDeclaration": 70589, + "src": "2032:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5076,27 +5092,27 @@ "typeString": "address" } ], - "id": 74298, + "id": 75084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2024:8:120", + "src": "2024:8:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 74297, + "id": 75083, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2024:8:120", + "src": "2024:8:133", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 74300, + "id": 75086, "isConstant": false, "isLValue": false, "isPure": false, @@ -5105,7 +5121,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2024:11:120", + "src": "2024:11:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5114,14 +5130,14 @@ }, { "hexValue": "6f776e657220636f6e74726f6c6564206d65746164617461206e6f74206475706c6963617465", - "id": 74301, + "id": 75087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2037:40:120", + "src": "2037:40:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f4e752c31ddf6a270236a49f82ec8df55d0262d4140467698625d6db66333494", "typeString": "literal_string \"owner controled metadata not duplicate\"" @@ -5130,14 +5146,14 @@ }, { "hexValue": "33", - "id": 74302, + "id": 75088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2079:1:120", + "src": "2079:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -5146,14 +5162,14 @@ }, { "hexValue": "74727565", - "id": 74303, + "id": 75089, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2082:4:120", + "src": "2082:4:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5161,12 +5177,12 @@ "value": "true" }, { - "id": 74304, + "id": 75090, "name": "dependencyModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74206, - "src": "2088:17:120", + "referencedDeclaration": 74992, + "src": "2088:17:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -5197,33 +5213,33 @@ } ], "expression": { - "id": 74295, + "id": 75081, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2000:3:120", + "referencedDeclaration": 70555, + "src": "2000:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74296, + "id": 75082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2004:19:120", + "memberLocation": "2004:19:133", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 8805, - "src": "2000:23:120", + "referencedDeclaration": 9556, + "src": "2000:23:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 74305, + "id": 75091, "isConstant": false, "isLValue": false, "isPure": false, @@ -5232,78 +5248,78 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2000:106:120", + "src": "2000:106:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1966:140:120", + "src": "1966:140:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 74307, + "id": 75093, "nodeType": "ExpressionStatement", - "src": "1966:140:120" + "src": "1966:140:133" } ] }, "baseFunctions": [ - 70143 + 70929 ], "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "642:5:120", + "nameLocation": "642:5:133", "overrides": { - "id": 74087, + "id": 74873, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "657:8:120" + "src": "657:8:133" }, "parameters": { - "id": 74086, + "id": 74872, "nodeType": "ParameterList", "parameters": [], - "src": "647:2:120" + "src": "647:2:133" }, "returnParameters": { - "id": 74088, + "id": 74874, "nodeType": "ParameterList", "parameters": [], - "src": "666:0:120" + "src": "666:0:133" }, - "scope": 74382, + "scope": 75168, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 74345, + "id": 75131, "nodeType": "FunctionDefinition", - "src": "2119:231:120", + "src": "2119:231:133", "nodes": [], "body": { - "id": 74344, + "id": 75130, "nodeType": "Block", - "src": "2161:189:120", + "src": "2161:189:133", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 74315, + "id": 75101, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2180:2:120", + "referencedDeclaration": 70587, + "src": "2180:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5318,33 +5334,33 @@ } ], "expression": { - "id": 74312, + "id": 75098, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2171:2:120", + "referencedDeclaration": 13541, + "src": "2171:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74314, + "id": 75100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2174:5:120", + "memberLocation": "2174:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2171:8:120", + "referencedDeclaration": 24720, + "src": "2171:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74316, + "id": 75102, "isConstant": false, "isLValue": false, "isPure": false, @@ -5353,16 +5369,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2171:12:120", + "src": "2171:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74317, + "id": 75103, "nodeType": "ExpressionStatement", - "src": "2171:12:120" + "src": "2171:12:133" }, { "expression": { @@ -5370,14 +5386,14 @@ { "arguments": [ { - "id": 74323, + "id": 75109, "name": "SampleIP1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74079, - "src": "2220:9:120", + "referencedDeclaration": 74865, + "src": "2220:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -5385,30 +5401,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74322, + "id": 75108, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2212:7:120", + "src": "2212:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74321, + "id": 75107, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2212:7:120", + "src": "2212:7:133", "typeDescriptions": {} } }, - "id": 74324, + "id": 75110, "isConstant": false, "isLValue": false, "isPure": false, @@ -5417,7 +5433,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2212:18:120", + "src": "2212:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5425,12 +5441,12 @@ } }, { - "id": 74325, + "id": 75111, "name": "pluginDefinitionID1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74069, - "src": "2232:19:120", + "referencedDeclaration": 74855, + "src": "2232:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5449,33 +5465,33 @@ } ], "expression": { - "id": 74318, + "id": 75104, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2193:3:120", + "referencedDeclaration": 70555, + "src": "2193:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74320, + "id": 75106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2197:14:120", + "memberLocation": "2197:14:133", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "2193:18:120", + "referencedDeclaration": 9533, + "src": "2193:18:133", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 74326, + "id": 75112, "isConstant": false, "isLValue": false, "isPure": false, @@ -5484,27 +5500,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2193:59:120", + "src": "2193:59:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74327, + "id": 75113, "nodeType": "ExpressionStatement", - "src": "2193:59:120" + "src": "2193:59:133" }, { "expression": { "arguments": [ { - "id": 74331, + "id": 75117, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2271:2:120", + "referencedDeclaration": 70587, + "src": "2271:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5519,33 +5535,33 @@ } ], "expression": { - "id": 74328, + "id": 75114, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2262:2:120", + "referencedDeclaration": 13541, + "src": "2262:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74330, + "id": 75116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2265:5:120", + "memberLocation": "2265:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2262:8:120", + "referencedDeclaration": 24720, + "src": "2262:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74332, + "id": 75118, "isConstant": false, "isLValue": false, "isPure": false, @@ -5554,16 +5570,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2262:12:120", + "src": "2262:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74333, + "id": 75119, "nodeType": "ExpressionStatement", - "src": "2262:12:120" + "src": "2262:12:133" }, { "expression": { @@ -5571,14 +5587,14 @@ { "arguments": [ { - "id": 74339, + "id": 75125, "name": "SampleIP2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74082, - "src": "2311:9:120", + "referencedDeclaration": 74868, + "src": "2311:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -5586,30 +5602,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74338, + "id": 75124, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2303:7:120", + "src": "2303:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74337, + "id": 75123, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2303:7:120", + "src": "2303:7:133", "typeDescriptions": {} } }, - "id": 74340, + "id": 75126, "isConstant": false, "isLValue": false, "isPure": false, @@ -5618,7 +5634,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2303:18:120", + "src": "2303:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5626,12 +5642,12 @@ } }, { - "id": 74341, + "id": 75127, "name": "pluginDefinitionID2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74071, - "src": "2323:19:120", + "referencedDeclaration": 74857, + "src": "2323:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5650,33 +5666,33 @@ } ], "expression": { - "id": 74334, + "id": 75120, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2284:3:120", + "referencedDeclaration": 70555, + "src": "2284:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74336, + "id": 75122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2288:14:120", + "memberLocation": "2288:14:133", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "2284:18:120", + "referencedDeclaration": 9533, + "src": "2284:18:133", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 74342, + "id": 75128, "isConstant": false, "isLValue": false, "isPure": false, @@ -5685,16 +5701,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2284:59:120", + "src": "2284:59:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74343, + "id": 75129, "nodeType": "ExpressionStatement", - "src": "2284:59:120" + "src": "2284:59:133" } ] }, @@ -5703,45 +5719,45 @@ "kind": "function", "modifiers": [], "name": "testPluginInstallModule", - "nameLocation": "2128:23:120", + "nameLocation": "2128:23:133", "parameters": { - "id": 74310, + "id": 75096, "nodeType": "ParameterList", "parameters": [], - "src": "2151:2:120" + "src": "2151:2:133" }, "returnParameters": { - "id": 74311, + "id": 75097, "nodeType": "ParameterList", "parameters": [], - "src": "2161:0:120" + "src": "2161:0:133" }, - "scope": 74382, + "scope": 75168, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 74381, + "id": 75167, "nodeType": "FunctionDefinition", - "src": "2356:228:120", + "src": "2356:228:133", "nodes": [], "body": { - "id": 74380, + "id": 75166, "nodeType": "Block", - "src": "2395:189:120", + "src": "2395:189:133", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 74351, + "id": 75137, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2414:2:120", + "referencedDeclaration": 70587, + "src": "2414:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5756,33 +5772,33 @@ } ], "expression": { - "id": 74348, + "id": 75134, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2405:2:120", + "referencedDeclaration": 13541, + "src": "2405:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74350, + "id": 75136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2408:5:120", + "memberLocation": "2408:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2405:8:120", + "referencedDeclaration": 24720, + "src": "2405:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74352, + "id": 75138, "isConstant": false, "isLValue": false, "isPure": false, @@ -5791,16 +5807,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2405:12:120", + "src": "2405:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74353, + "id": 75139, "nodeType": "ExpressionStatement", - "src": "2405:12:120" + "src": "2405:12:133" }, { "expression": { @@ -5808,14 +5824,14 @@ { "arguments": [ { - "id": 74359, + "id": 75145, "name": "SampleIP1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74079, - "src": "2454:9:120", + "referencedDeclaration": 74865, + "src": "2454:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -5823,30 +5839,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74358, + "id": 75144, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2446:7:120", + "src": "2446:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74357, + "id": 75143, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2446:7:120", + "src": "2446:7:133", "typeDescriptions": {} } }, - "id": 74360, + "id": 75146, "isConstant": false, "isLValue": false, "isPure": false, @@ -5855,7 +5871,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2446:18:120", + "src": "2446:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5863,12 +5879,12 @@ } }, { - "id": 74361, + "id": 75147, "name": "pluginDefinitionID1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74069, - "src": "2466:19:120", + "referencedDeclaration": 74855, + "src": "2466:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5887,33 +5903,33 @@ } ], "expression": { - "id": 74354, + "id": 75140, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2427:3:120", + "referencedDeclaration": 70555, + "src": "2427:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74356, + "id": 75142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2431:14:120", + "memberLocation": "2431:14:133", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "2427:18:120", + "referencedDeclaration": 9533, + "src": "2427:18:133", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 74362, + "id": 75148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5922,27 +5938,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2427:59:120", + "src": "2427:59:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74363, + "id": 75149, "nodeType": "ExpressionStatement", - "src": "2427:59:120" + "src": "2427:59:133" }, { "expression": { "arguments": [ { - "id": 74367, + "id": 75153, "name": "A0", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69801, - "src": "2505:2:120", + "referencedDeclaration": 70587, + "src": "2505:2:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,33 +5973,33 @@ } ], "expression": { - "id": 74364, + "id": 75150, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2496:2:120", + "referencedDeclaration": 13541, + "src": "2496:2:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 74366, + "id": 75152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2499:5:120", + "memberLocation": "2499:5:133", "memberName": "prank", "nodeType": "MemberAccess", - "referencedDeclaration": 23969, - "src": "2496:8:120", + "referencedDeclaration": 24720, + "src": "2496:8:133", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 74368, + "id": 75154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5992,16 +6008,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2496:12:120", + "src": "2496:12:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74369, + "id": 75155, "nodeType": "ExpressionStatement", - "src": "2496:12:120" + "src": "2496:12:133" }, { "expression": { @@ -6009,14 +6025,14 @@ { "arguments": [ { - "id": 74375, + "id": 75161, "name": "SampleIP2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74082, - "src": "2545:9:120", + "referencedDeclaration": 74868, + "src": "2545:9:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } } @@ -6024,30 +6040,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7122", + "typeIdentifier": "t_contract$_SampleInteractionPlugin_$7873", "typeString": "contract SampleInteractionPlugin" } ], - "id": 74374, + "id": 75160, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2537:7:120", + "src": "2537:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 74373, + "id": 75159, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2537:7:120", + "src": "2537:7:133", "typeDescriptions": {} } }, - "id": 74376, + "id": 75162, "isConstant": false, "isLValue": false, "isPure": false, @@ -6056,7 +6072,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2537:18:120", + "src": "2537:18:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6064,12 +6080,12 @@ } }, { - "id": 74377, + "id": 75163, "name": "pluginDefinitionID2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 74071, - "src": "2557:19:120", + "referencedDeclaration": 74857, + "src": "2557:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6088,33 +6104,33 @@ } ], "expression": { - "id": 74370, + "id": 75156, "name": "IPR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69769, - "src": "2518:3:120", + "referencedDeclaration": 70555, + "src": "2518:3:133", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPluginRegistry_$8823", + "typeIdentifier": "t_contract$_IPluginRegistry_$9574", "typeString": "contract IPluginRegistry" } }, - "id": 74372, + "id": 75158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2522:14:120", + "memberLocation": "2522:14:133", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 8782, - "src": "2518:18:120", + "referencedDeclaration": 9533, + "src": "2518:18:133", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 74378, + "id": 75164, "isConstant": false, "isLValue": false, "isPure": false, @@ -6123,16 +6139,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2518:59:120", + "src": "2518:59:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 74379, + "id": 75165, "nodeType": "ExpressionStatement", - "src": "2518:59:120" + "src": "2518:59:133" } ] }, @@ -6141,20 +6157,20 @@ "kind": "function", "modifiers": [], "name": "testInstallSocialBot", - "nameLocation": "2365:20:120", + "nameLocation": "2365:20:133", "parameters": { - "id": 74346, + "id": 75132, "nodeType": "ParameterList", "parameters": [], - "src": "2385:2:120" + "src": "2385:2:133" }, "returnParameters": { - "id": 74347, + "id": 75133, "nodeType": "ParameterList", "parameters": [], - "src": "2395:0:120" + "src": "2395:0:133" }, - "scope": 74382, + "scope": 75168, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -6164,55 +6180,55 @@ "baseContracts": [ { "baseName": { - "id": 74064, + "id": 74850, "name": "DeploysInit", "nameLocations": [ - "325:11:120" + "325:11:133" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 70240, - "src": "325:11:120" + "referencedDeclaration": 71026, + "src": "325:11:133" }, - "id": 74065, + "id": 74851, "nodeType": "InheritanceSpecifier", - "src": "325:11:120" + "src": "325:11:133" } ], "canonicalName": "ModuleSkipTemp", "contractDependencies": [ 1016, 2915, - 3996, - 4488, - 4940, - 5370, - 6344, - 7122, - 10353 + 4719, + 5211, + 5691, + 6121, + 7095, + 7873, + 11104 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 74382, - 70240, - 22678, - 22627, - 18179, - 17854, - 17061, - 15001, - 14263, - 12731, - 12797, - 12794 + 75168, + 71026, + 23429, + 23378, + 18930, + 18605, + 17812, + 15752, + 15014, + 13482, + 13548, + 13545 ], "name": "ModuleSkipTemp", - "nameLocation": "307:14:120", - "scope": 74383, + "nameLocation": "307:14:133", + "scope": 75169, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 120 + "id": 133 } \ No newline at end of file diff --git a/out/TestnetPopulate.s.sol/Populate.json b/out/TestnetPopulate.s.sol/Populate.json index 9b982597..2f211b0a 100644 --- a/out/TestnetPopulate.s.sol/Populate.json +++ b/out/TestnetPopulate.s.sol/Populate.json @@ -29,13 +29,13 @@ } ], "bytecode": { - "object": "0x60806040819052600b805462ff00ff19166201000117905563c1978d1f60e01b90526020608452600660a4526550564b5f413160d01b60c452737109709ecfa91a80626ff3989d68f67f5b1dd12d63221000648163c1978d1f60e4602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000137565b6040518263ffffffff1660e01b8152600401620000bd91815260200190565b6020604051808303816000875af1158015620000dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000103919062000151565b601480546001600160a01b0319166001600160a01b03929092169190911790553480156200013057600080fd5b5062000183565b6000602082840312156200014a57600080fd5b5051919050565b6000602082840312156200016457600080fd5b81516001600160a01b03811681146200017c57600080fd5b9392505050565b61781780620001936000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620004d9565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b4660158190556201388103620000c057601680546001600160a01b0319167369015912aa33720b842dcd6ac059ed623f28d9f71790555b601554600503620000f257601680546001600160a01b03191673e041608922d06a4f26c0d4c27d8bcd01daf1f7921790555b6016546001600160a01b0316620001465760405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590815195cdd1b995d606a1b60448201526064015b60405180910390fd5b62000153601554620013dd565b600e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526005604482015264105d5d125160da1b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620001dc57600080fd5b505af1158015620001f1573d6000803e3d6000fd5b50505050620002026015546200146d565b600b80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055604080516318caf8e360e31b81529190920490921660048301526024820152600a6044820152694e6f7661204c6f67696360b01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620002a057600080fd5b505af1158015620002b5573d6000803e3d6000fd5b50505050620002c6601554620014b9565b600c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260056044820152642737bb30a960d91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b505050506200037560155462001505565b600d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600e60448201526d506c7567696e526567697374727960901b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200040757600080fd5b505af11580156200041c573d6000803e3d6000fd5b505050506200042d60155462001551565b600f80546001600160a01b0319166001600160a01b03929092169182178155604080516318caf8e360e31b81526004810193909352602483015260448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b50505050565b60408051600380825260808201909252600091602082016060803683370190505060405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062001695565b81600081518110620005a057620005a0620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620005fc90600401602080825260069082015265282b25afa09960d11b604082015260600190565b602060405180830381865afa1580156200061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000640919062001695565b81600181518110620006565762000656620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620006b29060040160208082526006908201526550564b5f413360d01b604082015260600190565b602060405180830381865afa158015620006d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f6919062001695565b816002815181106200070c576200070c620016af565b6020908102919091010152601454604051637fec2a8d60e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200077157600080fd5b505af115801562000786573d6000803e3d6000fd5b5050600d54601454604051631a104a5d60e11b815260609450600093506001600160a01b039283169263342094ba92620007cd929116908590600190889060040162001702565b6020604051808303816000875af1158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000813919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008569291169085906001908990600401620017a5565b6020604051808303816000875af115801562000876573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089c919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008df9291169085906001908a9060040162001702565b6020604051808303816000875af1158015620008ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000925919062001695565b600c54604051635e570be160e11b815260016004820181905260606024830152601960648301527f746869732069732061206d6574616461746120737472696e6700000000000000608483015260448201529192506000916001600160a01b039091169063bcae17c29060a4016020604051808303816000875af1158015620009b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009d8919062001855565b9050600081604051620009eb9062001655565b6001600160a01b039091168152602001604051809103906000f08015801562000a18573d6000803e3d6000fd5b50905060008260405162000a2c9062001663565b6001600160a01b039091168152602001604051809103906000f08015801562000a59573d6000803e3d6000fd5b50905060008360405162000a6d9062001671565b6001600160a01b039091168152602001604051809103906000f08015801562000a9a573d6000803e3d6000fd5b50600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018b9052929350911690634d4547c990604401600060405180830381600087803b15801562000aec57600080fd5b505af115801562000b01573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018a90529091169250634d4547c99150604401600060405180830381600087803b15801562000b5457600080fd5b505af115801562000b69573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038581166004830152602482018b90529091169250634d4547c99150604401600060405180830381600087803b15801562000bbc57600080fd5b505af115801562000bd1573d6000803e3d6000fd5b5050600f5460408051630b51806d60e01b815290516001600160a01b03909216935063897bf2b692508391630b51806d916004808201926020929091908290030181865afa15801562000c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4e91906200187a565b600f546040805163bf15e01760e01b81529051605a926001600160a01b03169163bf15e0179160048083019260209291908290030181865afa15801562000c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cbf9190620018a0565b6040516001600160e01b031960e086901b16815261ffff909316600484015263ffffffff91909116602483015260ff1660448201526001600160a01b0387166064820152608401600060405180830381600087803b15801562000d2157600080fd5b505af115801562000d36573d6000803e3d6000fd5b50600092506005915062000d479050565b60405190808252806020026020018201604052801562000d71578160200160208202803683370190505b509050731b403ff6eb37d25dccba0540637d65550f84acb38160008151811062000d9f5762000d9f620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073303b24d8bb5aed7e55558aef96b282a84ecfa82a8160018151811062000dea5762000dea620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d438160028151811062000e355762000e35620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507335c92dd11f4768691e0b66d5b735e9dde8abe5ad8160038151811062000e805762000e80620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073ca0a610a75ea146d4ee94824e858b362ef46cc298160048151811062000ecb5762000ecb620016af565b6001600160a01b03928316602091820292909201015260405163271537d960e21b815290861690639c54df649062000f08908490600401620018c5565b6000604051808303816000875af115801562000f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f52919081019062001948565b50600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fa157600080fd5b505af115801562000fb6573d6000803e3d6000fd5b506001925050505b8a51811015620013d05762000fec6040518060600160405280602b815260200162007797602b91396200159d565b60405163348051d760e11b8152600481018290526200113490737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001042573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200106c919081019062001a28565b6040516020016200107e919062001ac7565b604051602081830303815290604052600080516020620077c283398151915260001c6001600160a01b031663ffa186498e8581518110620010c357620010c3620016af565b60200260200101516040518263ffffffff1660e01b8152600401620010ea91815260200190565b602060405180830381865afa15801562001108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112e919062001855565b620015e7565b620011586040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b031663ce817d478c83815181106200118e576200118e620016af565b60200260200101516040518263ffffffff1660e01b8152600401620011b591815260200190565b600060405180830381600087803b158015620011d057600080fd5b505af1158015620011e5573d6000803e3d6000fd5b5050600e5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf9150737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156200124f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001279919081019062001a28565b6040516020016200128b919062001afd565b60408051601f19818403018152919052620012a860028562001b32565b15620012b6576003620012b9565b60015b600a620012c886600362001b55565b11620012e157620012db85600362001b55565b620012e3565b845b8a6040518563ffffffff1660e01b815260040162001305949392919062001bab565b600060405180830381600087803b1580156200132057600080fd5b505af115801562001335573d6000803e3d6000fd5b505050506200135d6040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ab57600080fd5b505af1158015620013c0573d6000803e3d6000fd5b5050505080600101905062000fbe565b5050505050505050505050565b6000816201388103620014055750736e1ea384ed25d67d2c68ce27d6a9ac49f8488133919050565b81600203620014295750732222222222222222222222222222222222222222919050565b60405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590818da185a5b9251606a1b60448201526064016200013d565b919050565b600081620138810362001495575073f1b5428c862910da31c7142df0bd4d0e4937aa19919050565b81600203620014295750734444444444444444444444444444444444444444919050565b6000816201388103620014e1575073b7690209e09a6c00f25a8cba722152c0f2e804c7919050565b81600203620014295750736666666666666666666666666666666666666666919050565b60008162013881036200152d5750733c01725f56651348bca3bae5a7711ebab080ac74919050565b81600203620014295750738888888888888888888888888888888888888888919050565b6000816201388103620015795750738cedbc66e8b67a39b6eb2a5a058c87323411615f919050565b8160020362001429575073aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa919050565b620015e481604051602401620015b4919062001c1f565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001634565b50565b6200163082826040516024016200160092919062001c34565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001634565b5050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6115b38062001c6183390190565b6115b5806200321483390190565b612fce80620047c983390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620016a857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620016f757815187529582019590820190600101620016d9565b509495945050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b7660c08201527f6a6a617561786b756d64337872656a707671627437767a64656b7734767a677660e082015261717960f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b979650505050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b7265696534356e747778367472686c34617a61697860c08201527f6a367374363472636768726e736366326d6e6c6168696863747269366f73706760e082015261746560f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b80516001600160a01b03811681146200146857600080fd5b6000602082840312156200186857600080fd5b62001873826200183d565b9392505050565b6000602082840312156200188d57600080fd5b815161ffff811681146200187357600080fd5b600060208284031215620018b357600080fd5b815160ff811681146200187357600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620019085783516001600160a01b031683529284019291840191600101620018e1565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200194057620019406200167f565b604052919050565b600060208083850312156200195c57600080fd5b825167ffffffffffffffff808211156200197557600080fd5b818501915085601f8301126200198a57600080fd5b8151818111156200199f576200199f6200167f565b8060051b9150620019b284830162001914565b8181529183018401918481019088841115620019cd57600080fd5b938501935b83851015620019f657620019e6856200183d565b82529385019390850190620019d2565b98975050505050505050565b60005b8381101562001a1f57818101518382015260200162001a05565b50506000910152565b60006020828403121562001a3b57600080fd5b815167ffffffffffffffff8082111562001a5457600080fd5b818401915084601f83011262001a6957600080fd5b81518181111562001a7e5762001a7e6200167f565b62001a93601f8201601f191660200162001914565b915080825285602082850101111562001aab57600080fd5b62001abe81602084016020860162001a02565b50949350505050565b6b037afb79020b1b1b7bab73a160a51b81526000825162001af081600c85016020870162001a02565b91909101600c0192915050565b6a026b7b537a537a537af96960ad1b81526000825162001b2581600b85016020870162001a02565b91909101600b0192915050565b60008262001b5057634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111562001b7757634e487b7160e01b600052601160045260246000fd5b92915050565b6000815180845262001b9781602086016020860162001a02565b601f01601f19169290920160200192915050565b60a08152600062001bc060a083018762001b7d565b8281036020840152601b81527f687474703a2f2f49616d616e55524c2e78797a2e6162632e636f6d000000000060208201526040810191505060ff8516604083015283606083015260018060a01b038316608083015295945050505050565b60208152600062001873602083018462001b7d565b60408152600062001c49604083018562001b7d565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b5380380620015b5833981016040819052620000349162000382565b808081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c5919062000382565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af115801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022357600080fd5b505af115801562000238573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000308919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036157600080fd5b505af115801562000376573d6000803e3d6000fd5b505050505050620003b4565b6000602082840312156200039557600080fd5b81516001600160a01b0381168114620003ad57600080fd5b9392505050565b6111f180620003c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220d46a05a9e86dbcfc79a35cb5a150fedb5454b23e154636839adc61d0d8d620cd64736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003323232323232323232323232323232323232323232323232323232323232323232323232323232323232323885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122038a481435cbd90ed620e80661abdfc42a7aa28c49a0bf709016744d4a349c4cf64736f6c63430008130033", - "sourceMap": "923:4568:111:-:0;;;;;3126:44:56;;;-1:-1:-1;;800:28:54;;;;;-1:-1:-1;;;1210:20:111;;216:2:121;1210:20:111;198:21:121;255:1;235:18;228:29;-1:-1:-1;;;273:18:121;266:36;1195:14:111;;;1210:10;319:18:121;1210:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1195:36;;;;;;;;;;;;;683:25:121;;671:2;656:18;;537:177;1195:36:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1176:55;;;-1:-1:-1;;;;;;1176:55:111;-1:-1:-1;;;;;1176:55:111;;;;;;;;;;923:4568;;;;;;;;;;;;348:184:121;418:6;471:2;459:9;450:7;446:23;442:32;439:52;;;487:1;484;477:12;439:52;-1:-1:-1;510:16:121;;348:184;-1:-1:-1;348:184:121:o;719:290::-;789:6;842:2;830:9;821:7;817:23;813:32;810:52;;;858:1;855;848:12;810:52;884:16;;-1:-1:-1;;;;;929:31:121;;919:42;;909:70;;975:1;972;965:12;909:70;998:5;719:290;-1:-1:-1;;;719:290:121:o;:::-;923:4568:111;;;;;;", + "object": "0x60806040819052600b805462ff00ff19166201000117905563c1978d1f60e01b90526020608452600660a4526550564b5f413160d01b60c452737109709ecfa91a80626ff3989d68f67f5b1dd12d63221000648163c1978d1f60e4602060405180830381865afa15801562000078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009e919062000137565b6040518263ffffffff1660e01b8152600401620000bd91815260200190565b6020604051808303816000875af1158015620000dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000103919062000151565b601480546001600160a01b0319166001600160a01b03929092169190911790553480156200013057600080fd5b5062000183565b6000602082840312156200014a57600080fd5b5051919050565b6000602082840312156200016457600080fd5b81516001600160a01b03811681146200017c57600080fd5b9392505050565b61781780620001936000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620004d9565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b4660158190556201388103620000c057601680546001600160a01b0319167369015912aa33720b842dcd6ac059ed623f28d9f71790555b601554600503620000f257601680546001600160a01b03191673e041608922d06a4f26c0d4c27d8bcd01daf1f7921790555b6016546001600160a01b0316620001465760405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590815195cdd1b995d606a1b60448201526064015b60405180910390fd5b62000153601554620013dd565b600e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526005604482015264105d5d125160da1b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620001dc57600080fd5b505af1158015620001f1573d6000803e3d6000fd5b50505050620002026015546200146d565b600b80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055604080516318caf8e360e31b81529190920490921660048301526024820152600a6044820152694e6f7661204c6f67696360b01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620002a057600080fd5b505af1158015620002b5573d6000803e3d6000fd5b50505050620002c6601554620014b9565b600c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260056044820152642737bb30a960d91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b505050506200037560155462001505565b600d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600e60448201526d506c7567696e526567697374727960901b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200040757600080fd5b505af11580156200041c573d6000803e3d6000fd5b505050506200042d60155462001551565b600f80546001600160a01b0319166001600160a01b03929092169182178155604080516318caf8e360e31b81526004810193909352602483015260448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b50505050565b60408051600380825260808201909252600091602082016060803683370190505060405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062001695565b81600081518110620005a057620005a0620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620005fc90600401602080825260069082015265282b25afa09960d11b604082015260600190565b602060405180830381865afa1580156200061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000640919062001695565b81600181518110620006565762000656620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620006b29060040160208082526006908201526550564b5f413360d01b604082015260600190565b602060405180830381865afa158015620006d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f6919062001695565b816002815181106200070c576200070c620016af565b6020908102919091010152601454604051637fec2a8d60e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200077157600080fd5b505af115801562000786573d6000803e3d6000fd5b5050600d54601454604051631a104a5d60e11b815260609450600093506001600160a01b039283169263342094ba92620007cd929116908590600190889060040162001702565b6020604051808303816000875af1158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000813919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008569291169085906001908990600401620017a5565b6020604051808303816000875af115801562000876573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089c919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008df9291169085906001908a9060040162001702565b6020604051808303816000875af1158015620008ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000925919062001695565b600c54604051635e570be160e11b815260016004820181905260606024830152601960648301527f746869732069732061206d6574616461746120737472696e6700000000000000608483015260448201529192506000916001600160a01b039091169063bcae17c29060a4016020604051808303816000875af1158015620009b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009d8919062001855565b9050600081604051620009eb9062001655565b6001600160a01b039091168152602001604051809103906000f08015801562000a18573d6000803e3d6000fd5b50905060008260405162000a2c9062001663565b6001600160a01b039091168152602001604051809103906000f08015801562000a59573d6000803e3d6000fd5b50905060008360405162000a6d9062001671565b6001600160a01b039091168152602001604051809103906000f08015801562000a9a573d6000803e3d6000fd5b50600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018b9052929350911690634d4547c990604401600060405180830381600087803b15801562000aec57600080fd5b505af115801562000b01573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018a90529091169250634d4547c99150604401600060405180830381600087803b15801562000b5457600080fd5b505af115801562000b69573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038581166004830152602482018b90529091169250634d4547c99150604401600060405180830381600087803b15801562000bbc57600080fd5b505af115801562000bd1573d6000803e3d6000fd5b5050600f5460408051630b51806d60e01b815290516001600160a01b03909216935063897bf2b692508391630b51806d916004808201926020929091908290030181865afa15801562000c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4e91906200187a565b600f546040805163bf15e01760e01b81529051605a926001600160a01b03169163bf15e0179160048083019260209291908290030181865afa15801562000c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cbf9190620018a0565b6040516001600160e01b031960e086901b16815261ffff909316600484015263ffffffff91909116602483015260ff1660448201526001600160a01b0387166064820152608401600060405180830381600087803b15801562000d2157600080fd5b505af115801562000d36573d6000803e3d6000fd5b50600092506005915062000d479050565b60405190808252806020026020018201604052801562000d71578160200160208202803683370190505b509050731b403ff6eb37d25dccba0540637d65550f84acb38160008151811062000d9f5762000d9f620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073303b24d8bb5aed7e55558aef96b282a84ecfa82a8160018151811062000dea5762000dea620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d438160028151811062000e355762000e35620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507335c92dd11f4768691e0b66d5b735e9dde8abe5ad8160038151811062000e805762000e80620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073ca0a610a75ea146d4ee94824e858b362ef46cc298160048151811062000ecb5762000ecb620016af565b6001600160a01b03928316602091820292909201015260405163271537d960e21b815290861690639c54df649062000f08908490600401620018c5565b6000604051808303816000875af115801562000f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f52919081019062001948565b50600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fa157600080fd5b505af115801562000fb6573d6000803e3d6000fd5b506001925050505b8a51811015620013d05762000fec6040518060600160405280602b815260200162007797602b91396200159d565b60405163348051d760e11b8152600481018290526200113490737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001042573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200106c919081019062001a28565b6040516020016200107e919062001ac7565b604051602081830303815290604052600080516020620077c283398151915260001c6001600160a01b031663ffa186498e8581518110620010c357620010c3620016af565b60200260200101516040518263ffffffff1660e01b8152600401620010ea91815260200190565b602060405180830381865afa15801562001108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112e919062001855565b620015e7565b620011586040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b031663ce817d478c83815181106200118e576200118e620016af565b60200260200101516040518263ffffffff1660e01b8152600401620011b591815260200190565b600060405180830381600087803b158015620011d057600080fd5b505af1158015620011e5573d6000803e3d6000fd5b5050600e5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf9150737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156200124f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001279919081019062001a28565b6040516020016200128b919062001afd565b60408051601f19818403018152919052620012a860028562001b32565b15620012b6576003620012b9565b60015b600a620012c886600362001b55565b11620012e157620012db85600362001b55565b620012e3565b845b8a6040518563ffffffff1660e01b815260040162001305949392919062001bab565b600060405180830381600087803b1580156200132057600080fd5b505af115801562001335573d6000803e3d6000fd5b505050506200135d6040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ab57600080fd5b505af1158015620013c0573d6000803e3d6000fd5b5050505080600101905062000fbe565b5050505050505050505050565b6000816201388103620014055750736e1ea384ed25d67d2c68ce27d6a9ac49f8488133919050565b81600203620014295750732222222222222222222222222222222222222222919050565b60405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590818da185a5b9251606a1b60448201526064016200013d565b919050565b600081620138810362001495575073f1b5428c862910da31c7142df0bd4d0e4937aa19919050565b81600203620014295750734444444444444444444444444444444444444444919050565b6000816201388103620014e1575073b7690209e09a6c00f25a8cba722152c0f2e804c7919050565b81600203620014295750736666666666666666666666666666666666666666919050565b60008162013881036200152d5750733c01725f56651348bca3bae5a7711ebab080ac74919050565b81600203620014295750738888888888888888888888888888888888888888919050565b6000816201388103620015795750738cedbc66e8b67a39b6eb2a5a058c87323411615f919050565b8160020362001429575073aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa919050565b620015e481604051602401620015b4919062001c1f565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001634565b50565b6200163082826040516024016200160092919062001c34565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001634565b5050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6115b38062001c6183390190565b6115b5806200321483390190565b612fce80620047c983390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620016a857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620016f757815187529582019590820190600101620016d9565b509495945050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b7660c08201527f6a6a617561786b756d64337872656a707671627437767a64656b7734767a677660e082015261717960f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b979650505050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b7265696534356e747778367472686c34617a61697860c08201527f6a367374363472636768726e736366326d6e6c6168696863747269366f73706760e082015261746560f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b80516001600160a01b03811681146200146857600080fd5b6000602082840312156200186857600080fd5b62001873826200183d565b9392505050565b6000602082840312156200188d57600080fd5b815161ffff811681146200187357600080fd5b600060208284031215620018b357600080fd5b815160ff811681146200187357600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620019085783516001600160a01b031683529284019291840191600101620018e1565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200194057620019406200167f565b604052919050565b600060208083850312156200195c57600080fd5b825167ffffffffffffffff808211156200197557600080fd5b818501915085601f8301126200198a57600080fd5b8151818111156200199f576200199f6200167f565b8060051b9150620019b284830162001914565b8181529183018401918481019088841115620019cd57600080fd5b938501935b83851015620019f657620019e6856200183d565b82529385019390850190620019d2565b98975050505050505050565b60005b8381101562001a1f57818101518382015260200162001a05565b50506000910152565b60006020828403121562001a3b57600080fd5b815167ffffffffffffffff8082111562001a5457600080fd5b818401915084601f83011262001a6957600080fd5b81518181111562001a7e5762001a7e6200167f565b62001a93601f8201601f191660200162001914565b915080825285602082850101111562001aab57600080fd5b62001abe81602084016020860162001a02565b50949350505050565b6b037afb79020b1b1b7bab73a160a51b81526000825162001af081600c85016020870162001a02565b91909101600c0192915050565b6a026b7b537a537a537af96960ad1b81526000825162001b2581600b85016020870162001a02565b91909101600b0192915050565b60008262001b5057634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111562001b7757634e487b7160e01b600052601160045260246000fd5b92915050565b6000815180845262001b9781602086016020860162001a02565b601f01601f19169290920160200192915050565b60a08152600062001bc060a083018762001b7d565b8281036020840152601b81527f687474703a2f2f49616d616e55524c2e78797a2e6162632e636f6d000000000060208201526040810191505060ff8516604083015283606083015260018060a01b038316608083015295945050505050565b60208152600062001873602083018462001b7d565b60408152600062001c49604083018562001b7d565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b5380380620015b5833981016040819052620000349162000382565b808081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c5919062000382565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af115801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022357600080fd5b505af115801562000238573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000308919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036157600080fd5b505af115801562000376573d6000803e3d6000fd5b505050505050620003b4565b6000602082840312156200039557600080fd5b81516001600160a01b0381168114620003ad57600080fd5b9392505050565b6111f180620003c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220d46a05a9e86dbcfc79a35cb5a150fedb5454b23e154636839adc61d0d8d620cd64736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003323232323232323232323232323232323232323232323232323232323232323232323232323232323232323885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220bff223e1f9bd7b5fc431633ecb1cb3725022002c854720949724c9577c0c53ca64736f6c63430008130033", + "sourceMap": "923:4568:124:-:0;;;;;3126:44:69;;;-1:-1:-1;;800:28:67;;;;;-1:-1:-1;;;1210:20:124;;216:2:134;1210:20:124;198:21:134;255:1;235:18;228:29;-1:-1:-1;;;273:18:134;266:36;1195:14:124;;;1210:10;319:18:134;1210:20:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1195:36;;;;;;;;;;;;;683:25:134;;671:2;656:18;;537:177;1195:36:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1176:55;;;-1:-1:-1;;;;;;1176:55:124;-1:-1:-1;;;;;1176:55:124;;;;;;;;;;923:4568;;;;;;;;;;;;348:184:134;418:6;471:2;459:9;450:7;446:23;442:32;439:52;;;487:1;484;477:12;439:52;-1:-1:-1;510:16:134;;348:184;-1:-1:-1;348:184:134:o;719:290::-;789:6;842:2;830:9;821:7;817:23;813:32;810:52;;;858:1;855;848:12;810:52;884:16;;-1:-1:-1;;;;;929:31:134;;919:42;;909:70;;975:1;972;965:12;909:70;998:5;719:290;-1:-1:-1;;;719:290:134:o;:::-;923:4568:124;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620004d9565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b4660158190556201388103620000c057601680546001600160a01b0319167369015912aa33720b842dcd6ac059ed623f28d9f71790555b601554600503620000f257601680546001600160a01b03191673e041608922d06a4f26c0d4c27d8bcd01daf1f7921790555b6016546001600160a01b0316620001465760405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590815195cdd1b995d606a1b60448201526064015b60405180910390fd5b62000153601554620013dd565b600e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526005604482015264105d5d125160da1b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620001dc57600080fd5b505af1158015620001f1573d6000803e3d6000fd5b50505050620002026015546200146d565b600b80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055604080516318caf8e360e31b81529190920490921660048301526024820152600a6044820152694e6f7661204c6f67696360b01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620002a057600080fd5b505af1158015620002b5573d6000803e3d6000fd5b50505050620002c6601554620014b9565b600c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260056044820152642737bb30a960d91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b505050506200037560155462001505565b600d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600e60448201526d506c7567696e526567697374727960901b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200040757600080fd5b505af11580156200041c573d6000803e3d6000fd5b505050506200042d60155462001551565b600f80546001600160a01b0319166001600160a01b03929092169182178155604080516318caf8e360e31b81526004810193909352602483015260448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b50505050565b60408051600380825260808201909252600091602082016060803683370190505060405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062001695565b81600081518110620005a057620005a0620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620005fc90600401602080825260069082015265282b25afa09960d11b604082015260600190565b602060405180830381865afa1580156200061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000640919062001695565b81600181518110620006565762000656620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620006b29060040160208082526006908201526550564b5f413360d01b604082015260600190565b602060405180830381865afa158015620006d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f6919062001695565b816002815181106200070c576200070c620016af565b6020908102919091010152601454604051637fec2a8d60e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200077157600080fd5b505af115801562000786573d6000803e3d6000fd5b5050600d54601454604051631a104a5d60e11b815260609450600093506001600160a01b039283169263342094ba92620007cd929116908590600190889060040162001702565b6020604051808303816000875af1158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000813919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008569291169085906001908990600401620017a5565b6020604051808303816000875af115801562000876573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089c919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008df9291169085906001908a9060040162001702565b6020604051808303816000875af1158015620008ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000925919062001695565b600c54604051635e570be160e11b815260016004820181905260606024830152601960648301527f746869732069732061206d6574616461746120737472696e6700000000000000608483015260448201529192506000916001600160a01b039091169063bcae17c29060a4016020604051808303816000875af1158015620009b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009d8919062001855565b9050600081604051620009eb9062001655565b6001600160a01b039091168152602001604051809103906000f08015801562000a18573d6000803e3d6000fd5b50905060008260405162000a2c9062001663565b6001600160a01b039091168152602001604051809103906000f08015801562000a59573d6000803e3d6000fd5b50905060008360405162000a6d9062001671565b6001600160a01b039091168152602001604051809103906000f08015801562000a9a573d6000803e3d6000fd5b50600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018b9052929350911690634d4547c990604401600060405180830381600087803b15801562000aec57600080fd5b505af115801562000b01573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018a90529091169250634d4547c99150604401600060405180830381600087803b15801562000b5457600080fd5b505af115801562000b69573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038581166004830152602482018b90529091169250634d4547c99150604401600060405180830381600087803b15801562000bbc57600080fd5b505af115801562000bd1573d6000803e3d6000fd5b5050600f5460408051630b51806d60e01b815290516001600160a01b03909216935063897bf2b692508391630b51806d916004808201926020929091908290030181865afa15801562000c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4e91906200187a565b600f546040805163bf15e01760e01b81529051605a926001600160a01b03169163bf15e0179160048083019260209291908290030181865afa15801562000c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cbf9190620018a0565b6040516001600160e01b031960e086901b16815261ffff909316600484015263ffffffff91909116602483015260ff1660448201526001600160a01b0387166064820152608401600060405180830381600087803b15801562000d2157600080fd5b505af115801562000d36573d6000803e3d6000fd5b50600092506005915062000d479050565b60405190808252806020026020018201604052801562000d71578160200160208202803683370190505b509050731b403ff6eb37d25dccba0540637d65550f84acb38160008151811062000d9f5762000d9f620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073303b24d8bb5aed7e55558aef96b282a84ecfa82a8160018151811062000dea5762000dea620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d438160028151811062000e355762000e35620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507335c92dd11f4768691e0b66d5b735e9dde8abe5ad8160038151811062000e805762000e80620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073ca0a610a75ea146d4ee94824e858b362ef46cc298160048151811062000ecb5762000ecb620016af565b6001600160a01b03928316602091820292909201015260405163271537d960e21b815290861690639c54df649062000f08908490600401620018c5565b6000604051808303816000875af115801562000f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f52919081019062001948565b50600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fa157600080fd5b505af115801562000fb6573d6000803e3d6000fd5b506001925050505b8a51811015620013d05762000fec6040518060600160405280602b815260200162007797602b91396200159d565b60405163348051d760e11b8152600481018290526200113490737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001042573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200106c919081019062001a28565b6040516020016200107e919062001ac7565b604051602081830303815290604052600080516020620077c283398151915260001c6001600160a01b031663ffa186498e8581518110620010c357620010c3620016af565b60200260200101516040518263ffffffff1660e01b8152600401620010ea91815260200190565b602060405180830381865afa15801562001108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112e919062001855565b620015e7565b620011586040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b031663ce817d478c83815181106200118e576200118e620016af565b60200260200101516040518263ffffffff1660e01b8152600401620011b591815260200190565b600060405180830381600087803b158015620011d057600080fd5b505af1158015620011e5573d6000803e3d6000fd5b5050600e5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf9150737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156200124f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001279919081019062001a28565b6040516020016200128b919062001afd565b60408051601f19818403018152919052620012a860028562001b32565b15620012b6576003620012b9565b60015b600a620012c886600362001b55565b11620012e157620012db85600362001b55565b620012e3565b845b8a6040518563ffffffff1660e01b815260040162001305949392919062001bab565b600060405180830381600087803b1580156200132057600080fd5b505af115801562001335573d6000803e3d6000fd5b505050506200135d6040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ab57600080fd5b505af1158015620013c0573d6000803e3d6000fd5b5050505080600101905062000fbe565b5050505050505050505050565b6000816201388103620014055750736e1ea384ed25d67d2c68ce27d6a9ac49f8488133919050565b81600203620014295750732222222222222222222222222222222222222222919050565b60405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590818da185a5b9251606a1b60448201526064016200013d565b919050565b600081620138810362001495575073f1b5428c862910da31c7142df0bd4d0e4937aa19919050565b81600203620014295750734444444444444444444444444444444444444444919050565b6000816201388103620014e1575073b7690209e09a6c00f25a8cba722152c0f2e804c7919050565b81600203620014295750736666666666666666666666666666666666666666919050565b60008162013881036200152d5750733c01725f56651348bca3bae5a7711ebab080ac74919050565b81600203620014295750738888888888888888888888888888888888888888919050565b6000816201388103620015795750738cedbc66e8b67a39b6eb2a5a058c87323411615f919050565b8160020362001429575073aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa919050565b620015e481604051602401620015b4919062001c1f565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001634565b50565b6200163082826040516024016200160092919062001c34565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001634565b5050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6115b38062001c6183390190565b6115b5806200321483390190565b612fce80620047c983390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620016a857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620016f757815187529582019590820190600101620016d9565b509495945050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b7660c08201527f6a6a617561786b756d64337872656a707671627437767a64656b7734767a677660e082015261717960f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b979650505050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b7265696534356e747778367472686c34617a61697860c08201527f6a367374363472636768726e736366326d6e6c6168696863747269366f73706760e082015261746560f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b80516001600160a01b03811681146200146857600080fd5b6000602082840312156200186857600080fd5b62001873826200183d565b9392505050565b6000602082840312156200188d57600080fd5b815161ffff811681146200187357600080fd5b600060208284031215620018b357600080fd5b815160ff811681146200187357600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620019085783516001600160a01b031683529284019291840191600101620018e1565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200194057620019406200167f565b604052919050565b600060208083850312156200195c57600080fd5b825167ffffffffffffffff808211156200197557600080fd5b818501915085601f8301126200198a57600080fd5b8151818111156200199f576200199f6200167f565b8060051b9150620019b284830162001914565b8181529183018401918481019088841115620019cd57600080fd5b938501935b83851015620019f657620019e6856200183d565b82529385019390850190620019d2565b98975050505050505050565b60005b8381101562001a1f57818101518382015260200162001a05565b50506000910152565b60006020828403121562001a3b57600080fd5b815167ffffffffffffffff8082111562001a5457600080fd5b818401915084601f83011262001a6957600080fd5b81518181111562001a7e5762001a7e6200167f565b62001a93601f8201601f191660200162001914565b915080825285602082850101111562001aab57600080fd5b62001abe81602084016020860162001a02565b50949350505050565b6b037afb79020b1b1b7bab73a160a51b81526000825162001af081600c85016020870162001a02565b91909101600c0192915050565b6a026b7b537a537a537af96960ad1b81526000825162001b2581600b85016020870162001a02565b91909101600b0192915050565b60008262001b5057634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111562001b7757634e487b7160e01b600052601160045260246000fd5b92915050565b6000815180845262001b9781602086016020860162001a02565b601f01601f19169290920160200192915050565b60a08152600062001bc060a083018762001b7d565b8281036020840152601b81527f687474703a2f2f49616d616e55524c2e78797a2e6162632e636f6d000000000060208201526040810191505060ff8516604083015283606083015260018060a01b038316608083015295945050505050565b60208152600062001873602083018462001b7d565b60408152600062001c49604083018562001b7d565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b5380380620015b5833981016040819052620000349162000382565b808081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c5919062000382565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af115801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022357600080fd5b505af115801562000238573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000308919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036157600080fd5b505af115801562000376573d6000803e3d6000fd5b505050505050620003b4565b6000602082840312156200039557600080fd5b81516001600160a01b0381168114620003ad57600080fd5b9392505050565b6111f180620003c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220d46a05a9e86dbcfc79a35cb5a150fedb5454b23e154636839adc61d0d8d620cd64736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003323232323232323232323232323232323232323232323232323232323232323232323232323232323232323885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122038a481435cbd90ed620e80661abdfc42a7aa28c49a0bf709016744d4a349c4cf64736f6c63430008130033", - "sourceMap": "923:4568:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:954;;;:::i;:::-;;2256:3233;;;:::i;800:28:54:-;;;;;;;;;;;;;;;179:14:121;;172:22;154:41;;142:2;127:18;800:28:54;;;;;;;1296:954:111;1340:13;1330:7;:23;;;1378:5;1367:16;1363:89;;1385:22;:67;;-1:-1:-1;;;;;;1385:67:111;1410:42;1385:67;;;1363:89;1466:7;;1477:1;1466:12;1462:85;;1480:22;:67;;-1:-1:-1;;;;;;1480:67:111;1505:42;1480:67;;;1462:85;1562:22;;-1:-1:-1;;;;;1562:22:111;1558:71;;1600:29;;-1:-1:-1;;;1600:29:111;;408:2:121;1600:29:111;;;390:21:121;447:2;427:18;;;420:30;-1:-1:-1;;;466:18:121;;;459:49;525:18;;1600:29:111;;;;;;;;1558:71;1652:38;1682:7;;1652:29;:38::i;:::-;1640:3;:51;;-1:-1:-1;;;;;;1640:51:111;-1:-1:-1;;;;;1640:51:111;;;;;;;;;1701:31;;;-1:-1:-1;;;1701:31:111;;;;;766:51:121;;;;833:18;;;826:30;892:1;872:18;;;865:29;-1:-1:-1;;;910:18:121;;;903:35;1701:8:111;;;;955:19:121;;1701:31:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:42;1789:7;;1755:33;:42::i;:::-;1742:5;:56;;-1:-1:-1;;;;;;1742:56:111;;-1:-1:-1;;;;;1742:56:111;;;;;;;;;;;;;1808:38;;;-1:-1:-1;;;1808:38:111;;1825:5;;;;;;;1808:38;;;1197:51:121;1264:18;;;1257:30;1323:2;1303:18;;;1296:30;-1:-1:-1;;;1342:18:121;;;1335:40;1808:8:111;;;;1392:19:121;;1808:38:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1878:45;1915:7;;1878:36;:45::i;:::-;1857:5;:67;;-1:-1:-1;;;;;;1857:67:111;-1:-1:-1;;;;;1857:67:111;;;;;;;;;1934:33;;;-1:-1:-1;;;1934:33:111;;;;;1634:51:121;;;;1701:18;;;1694:30;1760:1;1740:18;;;1733:29;-1:-1:-1;;;1778:18:121;;;1771:35;1934:8:111;;;;1823:19:121;;1934:33:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:47;2042:7;;2003:38;:47::i;:::-;1978:7;:73;;-1:-1:-1;;;;;;1978:73:111;-1:-1:-1;;;;;1978:73:111;;;;;;;;;2061:44;;;-1:-1:-1;;;2061:44:111;;;;;2065:51:121;;;;2132:18;;;2125:30;2191:2;2171:18;;;2164:30;-1:-1:-1;;;2210:18:121;;;2203:44;2061:8:111;;;;2264:19:121;;2061:44:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2137:55;2184:7;;2137:46;:55::i;:::-;2116:2;:77;;-1:-1:-1;;;;;;2116:77:111;-1:-1:-1;;;;;2116:77:111;;;;;;;;;2203:40;;;-1:-1:-1;;;2203:40:111;;;;;2506:51:121;;;;2573:18;;;2566:30;2612:18;;;2605:30;-1:-1:-1;;;2651:18:121;;;2644:45;2203:8:111;;;;2706:19:121;;2203:40:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:954::o;2256:3233::-;2319:16;;;2333:1;2319:16;;;;;;;;;2288:28;;2319:16;;;;;;;;;;-1:-1:-1;;2362:20:111;;-1:-1:-1;;;2362:20:111;;3070:2:121;2362:20:111;;;3052:21:121;3109:1;3089:18;;;3082:29;-1:-1:-1;;;3127:18:121;;;3120:36;2288:47:111;;-1:-1:-1;2362:10:111;;;;3173:18:121;;2362:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2345:11;2357:1;2345:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2430:20;;-1:-1:-1;;;2430:20:111;;:10;;;;:20;;;;3725:2:121;3707:21;;;3764:1;3744:18;;;3737:29;-1:-1:-1;;;3797:2:121;3782:18;;3775:36;3843:2;3828:18;;3523:329;2430:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2413:11;2425:1;2413:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2477:20;;-1:-1:-1;;;2477:20:111;;:10;;;;:20;;;;4059:2:121;4041:21;;;4098:1;4078:18;;;4071:29;-1:-1:-1;;;4131:2:121;4116:18;;4109:36;4177:2;4162:18;;3857:329;2477:20:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2460:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2526:8;;2508:27;;-1:-1:-1;;;2508:27:111;;-1:-1:-1;;;;;2526:8:111;;;2508:27;;;4337:51:121;2508:17:111;;;;4310:18:121;;2508:27:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2637:7:111;;2694:8;;2637:210;;-1:-1:-1;;;2637:210:111;;2581:21;;-1:-1:-1;2613:21:111;;-1:-1:-1;;;;;;2637:7:111;;;;:27;;:210;;2694:8;;;2613:21;;2637:7;;2581:21;;2637:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2885:7;;2942:8;;2885:210;;-1:-1:-1;;;2885:210:111;;2613:234;;-1:-1:-1;2857:25:111;;-1:-1:-1;;;;;2885:7:111;;;;:27;;:210;;2942:8;;;2857:25;;2885:7;;3081:4;;2885:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3130:7;;3187:8;;3130:210;;-1:-1:-1;;;3130:210:111;;2857:238;;-1:-1:-1;3105:22:111;;-1:-1:-1;;;;;3130:7:111;;;;:27;;:210;;3187:8;;;3105:22;;3130:7;;3326:4;;3130:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3373:5;;:51;;-1:-1:-1;;;3373:51:111;;:5;:51;;;6953:25:121;;;7014:2;6994:18;;;6987:30;7053:2;7033:18;;;7026:30;7093:27;7072:19;;;7065:56;7173:18;;;7166:34;3105:235:111;;-1:-1:-1;3351:13:111;;-1:-1:-1;;;;;3373:5:111;;;;:16;;7138:19:121;;3373:51:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3351:74;;3436:21;3496:7;3468:37;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:121;;;4337:51;;4325:2;4310:18;3468:37:111;;;;;;;;;;;;;;;;;;;;;;;3436:70;;3516:19;3575:7;3546:38;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:121;;;4337:51;;4325:2;4310:18;3546:38:111;;;;;;;;;;;;;;;;;;;;;;;3516:69;;3595:16;3650:7;3622:37;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:121;;;4337:51;;4325:2;4310:18;3622:37:111;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3671:7:111;;:52;;-1:-1:-1;;;3671:52:111;;-1:-1:-1;;;;;7798:32:121;;;3671:52:111;;;7780:51:121;7847:18;;;7840:34;;;3595:65:111;;-1:-1:-1;3671:7:111;;;:22;;7753:18:121;;3671:52:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3733:7:111;;:51;;-1:-1:-1;;;3733:51:111;;-1:-1:-1;;;;;7798:32:121;;;3733:51:111;;;7780::121;7847:18;;;7840:34;;;3733:7:111;;;;-1:-1:-1;3733:22:111;;-1:-1:-1;7753:18:121;;3733:51:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3794:7:111;;:51;;-1:-1:-1;;;3794:51:111;;-1:-1:-1;;;;;7798:32:121;;;3794:51:111;;;7780::121;7847:18;;;7840:34;;;3794:7:111;;;;-1:-1:-1;3794:22:111;;-1:-1:-1;7753:18:121;;3794:51:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3856:2:111;;3865:14;;;-1:-1:-1;;;3865:14:111;;;;-1:-1:-1;;;;;3856:2:111;;;;-1:-1:-1;3856:8:111;;-1:-1:-1;3856:2:111;;3865:12;;:14;;;;;;;;;;;;;;;3856:2;3865:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3885:2;;:20;;;-1:-1:-1;;;3885:20:111;;;;3881:2;;-1:-1:-1;;;;;3885:2:111;;:18;;:20;;;;;;;;;;;;;;:2;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3856:68;;-1:-1:-1;;;;;;3856:68:111;;;;;;;8707:6:121;8695:19;;;3856:68:111;;;8677:38:121;3856:68:111;8751:23:121;;;;8731:18;;;8724:51;8823:4;8811:17;8791:18;;;8784:45;-1:-1:-1;;;;;8865:32:121;;8845:18;;;8838:60;8649:19;;3856:68:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3934:31:111;;-1:-1:-1;3982:1:111;;-1:-1:-1;3968:16:111;;-1:-1:-1;3968:16:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3968:16:111;;3934:50;;4014:42;3994:14;4009:1;3994:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;3994:62:111;;;-1:-1:-1;;;;;3994:62:111;;;;;4086:42;4066:14;4081:1;4066:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4066:62:111;;;-1:-1:-1;;;;;4066:62:111;;;;;4158:42;4138:14;4153:1;4138:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4138:62:111;;;-1:-1:-1;;;;;4138:62:111;;;;;4230:42;4210:14;4225:1;4210:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4210:62:111;;;-1:-1:-1;;;;;4210:62:111;;;;;4302:42;4282:14;4297:1;4282:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4282:62:111;;;:17;;;;;;;;;:62;4355:33;;-1:-1:-1;;;4355:33:111;;:17;;;;;;:33;;4373:14;;4355:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4355:33:111;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;4398:16:111;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4473:1:111;;-1:-1:-1;;;4485:998:111;4497:11;:18;4493:1;:22;4485:998;;;4532:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;4646:14;;-1:-1:-1;;;4646:14:111;;;;;10963:25:121;;;4604:83:111;;4646:11;;;;10936:18:121;;4646:14:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4646:14:111;;;;;;;;;;;;:::i;:::-;4616:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;4663:7:111;;4671:11;4683:1;4671:14;;;;;;;;:::i;:::-;;;;;;;4663:23;;;;;;;;;;;;;10963:25:121;;10951:2;10936:18;;10817:177;4663:23:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4604:11;:83::i;:::-;4701:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;4774:17:111;;4792:11;4804:1;4792:14;;;;;;;;:::i;:::-;;;;;;;4774:33;;;;;;;;;;;;;10963:25:121;;10951:2;10936:18;;10817:177;4774:33:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4896:3:111;;4951:14;;-1:-1:-1;;;4951:14:111;;;;;10963:25:121;;;-1:-1:-1;;;;;4896:3:111;;;;-1:-1:-1;4896:8:111;;-1:-1:-1;4951:11:111;;;;10936:18:121;;4951:14:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4951:14:111;;;;;;;;;;;;:::i;:::-;4922:44;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4922:44:111;;;;;;;;;5031:5;5035:1;5031;:5;:::i;:::-;:10;:18;;5048:1;5031:18;;;5044:1;5031:18;5075:2;5067:5;:1;5071;5067:5;:::i;:::-;:10;:22;;5084:5;:1;5088;5084:5;:::i;:::-;5067:22;;;5080:1;5067:22;5115:7;4896:241;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5322:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:53;;-1:-1:-1;;;;;5395:16:111;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5455:3;;;;;4485:998;;;2278:3211;;;;;;;;;;;2256:3233::o;164:456:110:-;223:7;246;257:5;246:16;242:372;;-1:-1:-1;293:42:110;;164:456;-1:-1:-1;164:456:110:o;242:372::-;407:7;418:1;407:12;403:211;;-1:-1:-1;450:42:110;;164:456;-1:-1:-1;164:456:110:o;403:211::-;574:29;;-1:-1:-1;;;574:29:110;;14538:2:121;574:29:110;;;14520:21:121;14577:2;14557:18;;;14550:30;-1:-1:-1;;;14596:18:121;;;14589:49;14655:18;;574:29:110;14336:343:121;403:211:110;164:456;;;:::o;1563:460::-;1626:7;1649;1660:5;1649:16;1645:372;;-1:-1:-1;1696:42:110;;1563:460;-1:-1:-1;1563:460:110:o;1645:372::-;1810:7;1821:1;1810:12;1806:211;;-1:-1:-1;1853:42:110;;1563:460;-1:-1:-1;1563:460:110:o;2029:463::-;2095:7;2118;2129:5;2118:16;2114:372;;-1:-1:-1;2165:42:110;;2029:463;-1:-1:-1;2029:463:110:o;2114:372::-;2279:7;2290:1;2279:12;2275:211;;-1:-1:-1;2322:42:110;;2029:463;-1:-1:-1;2029:463:110:o;2498:465::-;2566:7;2589;2600:5;2589:16;2585:372;;-1:-1:-1;2636:42:110;;2498:465;-1:-1:-1;2498:465:110:o;2585:372::-;2750:7;2761:1;2750:12;2746:211;;-1:-1:-1;2793:42:110;;2498:465;-1:-1:-1;2498:465:110:o;2969:473::-;3045:7;3068;3079:5;3068:16;3064:372;;-1:-1:-1;3115:42:110;;2969:473;-1:-1:-1;2969:473:110:o;3064:372::-;3229:7;3240:1;3229:12;3225:211;;-1:-1:-1;3272:42:110;;2969:473;-1:-1:-1;2969:473:110:o;5630:121:67:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:67;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:67;-1:-1:-1;;;5701:42:67;;;5685:15;:59::i;:::-;5630:121;:::o;6994:145::-;7061:71;7124:2;7128;7077:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7077:54:67;;;;;;;;;;;;;;-1:-1:-1;;;;;7077:54:67;-1:-1:-1;;;7077:54:67;;;7061:15;:71::i;:::-;6994:145;;:::o;181:376::-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;2736:127:121:-;2797:10;2792:3;2788:20;2785:1;2778:31;2828:4;2825:1;2818:15;2852:4;2849:1;2842:15;3202:184;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:121;;3202:184;-1:-1:-1;3202:184:121:o;3391:127::-;3452:10;3447:3;3443:20;3440:1;3433:31;3483:4;3480:1;3473:15;3507:4;3504:1;3497:15;4399:435;4452:3;4490:5;4484:12;4517:6;4512:3;4505:19;4543:4;4572:2;4567:3;4563:12;4556:19;;4609:2;4602:5;4598:14;4630:1;4640:169;4654:6;4651:1;4648:13;4640:169;;;4715:13;;4703:26;;4749:12;;;;4784:15;;;;4676:1;4669:9;4640:169;;;-1:-1:-1;4825:3:121;;4399:435;-1:-1:-1;;;;;4399:435:121:o;4839:924::-;5250:1;5246;5241:3;5237:11;5233:19;5225:6;5221:32;5210:9;5203:51;5290:3;5285:2;5274:9;5270:18;5263:31;5331:2;5325:3;5314:9;5310:19;5303:31;5371:34;5365:3;5354:9;5350:19;5343:63;5443:34;5437:3;5426:9;5422:19;5415:63;-1:-1:-1;;;5509:3:121;5498:9;5494:19;5487:33;5184:4;5539:3;5578:6;5573:2;5562:9;5558:18;5551:34;5635:6;5628:14;5621:22;5616:2;5605:9;5601:18;5594:50;5681:2;5675:3;5664:9;5660:19;5653:31;5701:56;5753:2;5742:9;5738:18;5730:6;5701:56;:::i;:::-;5693:64;4839:924;-1:-1:-1;;;;;;;4839:924:121:o;5768:::-;6179:1;6175;6170:3;6166:11;6162:19;6154:6;6150:32;6139:9;6132:51;6219:3;6214:2;6203:9;6199:18;6192:31;6260:2;6254:3;6243:9;6239:19;6232:31;6300:34;6294:3;6283:9;6279:19;6272:63;6372:34;6366:3;6355:9;6351:19;6344:63;-1:-1:-1;;;6438:3:121;6427:9;6423:19;6416:33;6113:4;6468:3;6507:6;6502:2;6491:9;6487:18;6480:34;6564:6;6557:14;6550:22;6545:2;6534:9;6530:18;6523:50;6610:2;6604:3;6593:9;6589:19;6582:31;6630:56;6682:2;6671:9;6667:18;6659:6;6630:56;:::i;7211:177::-;7290:13;;-1:-1:-1;;;;;7332:31:121;;7322:42;;7312:70;;7378:1;7375;7368:12;7393:208;7463:6;7516:2;7504:9;7495:7;7491:23;7487:32;7484:52;;;7532:1;7529;7522:12;7484:52;7555:40;7585:9;7555:40;:::i;:::-;7545:50;7393:208;-1:-1:-1;;;7393:208:121:o;7885:276::-;7954:6;8007:2;7995:9;7986:7;7982:23;7978:32;7975:52;;;8023:1;8020;8013:12;7975:52;8055:9;8049:16;8105:6;8098:5;8094:18;8087:5;8084:29;8074:57;;8127:1;8124;8117:12;8166:273;8234:6;8287:2;8275:9;8266:7;8262:23;8258:32;8255:52;;;8303:1;8300;8293:12;8255:52;8335:9;8329:16;8385:4;8378:5;8374:16;8367:5;8364:27;8354:55;;8405:1;8402;8395:12;8909:658;9080:2;9132:21;;;9202:13;;9105:18;;;9224:22;;;9051:4;;9080:2;9303:15;;;;9277:2;9262:18;;;9051:4;9346:195;9360:6;9357:1;9354:13;9346:195;;;9425:13;;-1:-1:-1;;;;;9421:39:121;9409:52;;9516:15;;;;9481:12;;;;9457:1;9375:9;9346:195;;;-1:-1:-1;9558:3:121;;8909:658;-1:-1:-1;;;;;;8909:658:121:o;9572:275::-;9643:2;9637:9;9708:2;9689:13;;-1:-1:-1;;9685:27:121;9673:40;;9743:18;9728:34;;9764:22;;;9725:62;9722:88;;;9790:18;;:::i;:::-;9826:2;9819:22;9572:275;;-1:-1:-1;9572:275:121:o;9852:960::-;9947:6;9978:2;10021;10009:9;10000:7;9996:23;9992:32;9989:52;;;10037:1;10034;10027:12;9989:52;10070:9;10064:16;10099:18;10140:2;10132:6;10129:14;10126:34;;;10156:1;10153;10146:12;10126:34;10194:6;10183:9;10179:22;10169:32;;10239:7;10232:4;10228:2;10224:13;10220:27;10210:55;;10261:1;10258;10251:12;10210:55;10290:2;10284:9;10312:2;10308;10305:10;10302:36;;;10318:18;;:::i;:::-;10364:2;10361:1;10357:10;10347:20;;10387:28;10411:2;10407;10403:11;10387:28;:::i;:::-;10449:15;;;10519:11;;;10515:20;;;10480:12;;;;10547:19;;;10544:39;;;10579:1;10576;10569:12;10544:39;10603:11;;;;10623:159;10639:6;10634:3;10631:15;10623:159;;;10705:34;10735:3;10705:34;:::i;:::-;10693:47;;10656:12;;;;10760;;;;10623:159;;;10801:5;9852:960;-1:-1:-1;;;;;;;;9852:960:121:o;10999:250::-;11084:1;11094:113;11108:6;11105:1;11102:13;11094:113;;;11184:11;;;11178:18;11165:11;;;11158:39;11130:2;11123:10;11094:113;;;-1:-1:-1;;11241:1:121;11223:16;;11216:27;10999:250::o;11254:719::-;11334:6;11387:2;11375:9;11366:7;11362:23;11358:32;11355:52;;;11403:1;11400;11393:12;11355:52;11436:9;11430:16;11465:18;11506:2;11498:6;11495:14;11492:34;;;11522:1;11519;11512:12;11492:34;11560:6;11549:9;11545:22;11535:32;;11605:7;11598:4;11594:2;11590:13;11586:27;11576:55;;11627:1;11624;11617:12;11576:55;11656:2;11650:9;11678:2;11674;11671:10;11668:36;;;11684:18;;:::i;:::-;11726:53;11769:2;11750:13;;-1:-1:-1;;11746:27:121;11775:2;11742:36;11726:53;:::i;:::-;11713:66;;11802:2;11795:5;11788:17;11842:7;11837:2;11832;11828;11824:11;11820:20;11817:33;11814:53;;;11863:1;11860;11853:12;11814:53;11876:67;11940:2;11935;11928:5;11924:14;11919:2;11915;11911:11;11876:67;:::i;:::-;-1:-1:-1;11962:5:121;11254:719;-1:-1:-1;;;;11254:719:121:o;11978:434::-;-1:-1:-1;;;12225:3:121;12218:27;12200:3;12274:6;12268:13;12290:75;12358:6;12353:2;12348:3;12344:12;12337:4;12329:6;12325:17;12290:75;:::i;:::-;12385:16;;;;12403:2;12381:25;;11978:434;-1:-1:-1;;11978:434:121:o;12417:433::-;-1:-1:-1;;;12664:3:121;12657:26;12639:3;12712:6;12706:13;12728:75;12796:6;12791:2;12786:3;12782:12;12775:4;12767:6;12763:17;12728:75;:::i;:::-;12823:16;;;;12841:2;12819:25;;12417:433;-1:-1:-1;;12417:433:121:o;12855:209::-;12887:1;12913;12903:132;;12957:10;12952:3;12948:20;12945:1;12938:31;12992:4;12989:1;12982:15;13020:4;13017:1;13010:15;12903:132;-1:-1:-1;13049:9:121;;12855:209::o;13069:222::-;13134:9;;;13155:10;;;13152:133;;;13207:10;13202:3;13198:20;13195:1;13188:31;13242:4;13239:1;13232:15;13270:4;13267:1;13260:15;13152:133;13069:222;;;;:::o;13296:271::-;13338:3;13376:5;13370:12;13403:6;13398:3;13391:19;13419:76;13488:6;13481:4;13476:3;13472:14;13465:4;13458:5;13454:16;13419:76;:::i;:::-;13549:2;13528:15;-1:-1:-1;;13524:29:121;13515:39;;;;13556:4;13511:50;;13296:271;-1:-1:-1;;13296:271:121:o;13572:759::-;13904:3;13893:9;13886:22;13867:4;13931:46;13972:3;13961:9;13957:19;13949:6;13931:46;:::i;:::-;14025:9;14017:6;14013:22;14008:2;13997:9;13993:18;13986:50;14060:2;14052:6;14045:18;14096:29;14091:2;14083:6;14079:15;14072:54;14155:2;14147:6;14143:15;14135:23;;;14206:4;14198:6;14194:17;14189:2;14178:9;14174:18;14167:45;14248:6;14243:2;14232:9;14228:18;14221:34;14321:1;14317;14312:3;14308:11;14304:19;14296:6;14292:32;14286:3;14275:9;14271:19;14264:61;13572:759;;;;;;;:::o;14684:220::-;14833:2;14822:9;14815:21;14796:4;14853:45;14894:2;14883:9;14879:18;14871:6;14853:45;:::i;14909:317::-;15086:2;15075:9;15068:21;15049:4;15106:45;15147:2;15136:9;15132:18;15124:6;15106:45;:::i;:::-;15098:53;;15216:1;15212;15207:3;15203:11;15199:19;15191:6;15187:32;15182:2;15171:9;15167:18;15160:60;14909:317;;;;;:::o", + "object": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b62000055620004d9565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b4660158190556201388103620000c057601680546001600160a01b0319167369015912aa33720b842dcd6ac059ed623f28d9f71790555b601554600503620000f257601680546001600160a01b03191673e041608922d06a4f26c0d4c27d8bcd01daf1f7921790555b6016546001600160a01b0316620001465760405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590815195cdd1b995d606a1b60448201526064015b60405180910390fd5b62000153601554620013dd565b600e80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b8152600481019290925260248201526005604482015264105d5d125160da1b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620001dc57600080fd5b505af1158015620001f1573d6000803e3d6000fd5b50505050620002026015546200146d565b600b80546301000000600160b81b03191663010000006001600160a01b0393841681029190911791829055604080516318caf8e360e31b81529190920490921660048301526024820152600a6044820152694e6f7661204c6f67696360b01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620002a057600080fd5b505af1158015620002b5573d6000803e3d6000fd5b50505050620002c6601554620014b9565b600c80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b81526004810192909252602482015260056044820152642737bb30a960d91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b505050506200037560155462001505565b600d80546001600160a01b0319166001600160a01b03929092169182179055604080516318caf8e360e31b815260048101929092526024820152600e60448201526d506c7567696e526567697374727960901b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200040757600080fd5b505af11580156200041c573d6000803e3d6000fd5b505050506200042d60155462001551565b600f80546001600160a01b0319166001600160a01b03929092169182178155604080516318caf8e360e31b81526004810193909352602483015260448201526e2637b1b0b62932b83aba30ba34b7b760891b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620004be57600080fd5b505af1158015620004d3573d6000803e3d6000fd5b50505050565b60408051600380825260808201909252600091602082016060803683370190505060405163c1978d1f60e01b815260206004820152600660248201526550564b5f413160d01b6044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062001695565b81600081518110620005a057620005a0620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620005fc90600401602080825260069082015265282b25afa09960d11b604082015260600190565b602060405180830381865afa1580156200061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000640919062001695565b81600181518110620006565762000656620016af565b602090810291909101015260405163c1978d1f60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90620006b29060040160208082526006908201526550564b5f413360d01b604082015260600190565b602060405180830381865afa158015620006d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f6919062001695565b816002815181106200070c576200070c620016af565b6020908102919091010152601454604051637fec2a8d60e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200077157600080fd5b505af115801562000786573d6000803e3d6000fd5b5050600d54601454604051631a104a5d60e11b815260609450600093506001600160a01b039283169263342094ba92620007cd929116908590600190889060040162001702565b6020604051808303816000875af1158015620007ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000813919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008569291169085906001908990600401620017a5565b6020604051808303816000875af115801562000876573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200089c919062001695565b600d54601454604051631a104a5d60e11b81529293506000926001600160a01b039283169263342094ba92620008df9291169085906001908a9060040162001702565b6020604051808303816000875af1158015620008ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000925919062001695565b600c54604051635e570be160e11b815260016004820181905260606024830152601960648301527f746869732069732061206d6574616461746120737472696e6700000000000000608483015260448201529192506000916001600160a01b039091169063bcae17c29060a4016020604051808303816000875af1158015620009b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009d8919062001855565b9050600081604051620009eb9062001655565b6001600160a01b039091168152602001604051809103906000f08015801562000a18573d6000803e3d6000fd5b50905060008260405162000a2c9062001663565b6001600160a01b039091168152602001604051809103906000f08015801562000a59573d6000803e3d6000fd5b50905060008360405162000a6d9062001671565b6001600160a01b039091168152602001604051809103906000f08015801562000a9a573d6000803e3d6000fd5b50600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018b9052929350911690634d4547c990604401600060405180830381600087803b15801562000aec57600080fd5b505af115801562000b01573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038681166004830152602482018a90529091169250634d4547c99150604401600060405180830381600087803b15801562000b5457600080fd5b505af115801562000b69573d6000803e3d6000fd5b5050600d54604051634d4547c960e01b81526001600160a01b038581166004830152602482018b90529091169250634d4547c99150604401600060405180830381600087803b15801562000bbc57600080fd5b505af115801562000bd1573d6000803e3d6000fd5b5050600f5460408051630b51806d60e01b815290516001600160a01b03909216935063897bf2b692508391630b51806d916004808201926020929091908290030181865afa15801562000c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4e91906200187a565b600f546040805163bf15e01760e01b81529051605a926001600160a01b03169163bf15e0179160048083019260209291908290030181865afa15801562000c99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cbf9190620018a0565b6040516001600160e01b031960e086901b16815261ffff909316600484015263ffffffff91909116602483015260ff1660448201526001600160a01b0387166064820152608401600060405180830381600087803b15801562000d2157600080fd5b505af115801562000d36573d6000803e3d6000fd5b50600092506005915062000d479050565b60405190808252806020026020018201604052801562000d71578160200160208202803683370190505b509050731b403ff6eb37d25dccba0540637d65550f84acb38160008151811062000d9f5762000d9f620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073303b24d8bb5aed7e55558aef96b282a84ecfa82a8160018151811062000dea5762000dea620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507309ed23bb6f9ccc3fd9b3bc4c859d049bf4ab4d438160028151811062000e355762000e35620016af565b60200260200101906001600160a01b031690816001600160a01b0316815250507335c92dd11f4768691e0b66d5b735e9dde8abe5ad8160038151811062000e805762000e80620016af565b60200260200101906001600160a01b031690816001600160a01b03168152505073ca0a610a75ea146d4ee94824e858b362ef46cc298160048151811062000ecb5762000ecb620016af565b6001600160a01b03928316602091820292909201015260405163271537d960e21b815290861690639c54df649062000f08908490600401620018c5565b6000604051808303816000875af115801562000f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f52919081019062001948565b50600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000fa157600080fd5b505af115801562000fb6573d6000803e3d6000fd5b506001925050505b8a51811015620013d05762000fec6040518060600160405280602b815260200162007797602b91396200159d565b60405163348051d760e11b8152600481018290526200113490737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001042573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200106c919081019062001a28565b6040516020016200107e919062001ac7565b604051602081830303815290604052600080516020620077c283398151915260001c6001600160a01b031663ffa186498e8581518110620010c357620010c3620016af565b60200260200101516040518263ffffffff1660e01b8152600401620010ea91815260200190565b602060405180830381865afa15801562001108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112e919062001855565b620015e7565b620011586040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b031663ce817d478c83815181106200118e576200118e620016af565b60200260200101516040518263ffffffff1660e01b8152600401620011b591815260200190565b600060405180830381600087803b158015620011d057600080fd5b505af1158015620011e5573d6000803e3d6000fd5b5050600e5460405163348051d760e11b8152600481018590526001600160a01b039091169250635bc4ffdf9150737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156200124f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001279919081019062001a28565b6040516020016200128b919062001afd565b60408051601f19818403018152919052620012a860028562001b32565b15620012b6576003620012b9565b60015b600a620012c886600362001b55565b11620012e157620012db85600362001b55565b620012e3565b845b8a6040518563ffffffff1660e01b815260040162001305949392919062001bab565b600060405180830381600087803b1580156200132057600080fd5b505af115801562001335573d6000803e3d6000fd5b505050506200135d6040518060600160405280602b815260200162007797602b91396200159d565b600080516020620077c283398151915260001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013ab57600080fd5b505af1158015620013c0573d6000803e3d6000fd5b5050505080600101905062000fbe565b5050505050505050505050565b6000816201388103620014055750736e1ea384ed25d67d2c68ce27d6a9ac49f8488133919050565b81600203620014295750732222222222222222222222222222222222222222919050565b60405162461bcd60e51b8152602060048201526013602482015272155b9cdd5c1c1bdc9d19590818da185a5b9251606a1b60448201526064016200013d565b919050565b600081620138810362001495575073f1b5428c862910da31c7142df0bd4d0e4937aa19919050565b81600203620014295750734444444444444444444444444444444444444444919050565b6000816201388103620014e1575073b7690209e09a6c00f25a8cba722152c0f2e804c7919050565b81600203620014295750736666666666666666666666666666666666666666919050565b60008162013881036200152d5750733c01725f56651348bca3bae5a7711ebab080ac74919050565b81600203620014295750738888888888888888888888888888888888888888919050565b6000816201388103620015795750738cedbc66e8b67a39b6eb2a5a058c87323411615f919050565b8160020362001429575073aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa919050565b620015e481604051602401620015b4919062001c1f565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001634565b50565b6200163082826040516024016200160092919062001c34565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001634565b5050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6115b38062001c6183390190565b6115b5806200321483390190565b612fce80620047c983390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620016a857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015620016f757815187529582019590820190600101620016d9565b509495945050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b7660c08201527f6a6a617561786b756d64337872656a707671627437767a64656b7734767a677660e082015261717960f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b979650505050505050565b60018060a01b038516815260a06020820152604260a08201527f697066733a2f2f6261666b7265696534356e747778367472686c34617a61697860c08201527f6a367374363472636768726e736366326d6e6c6168696863747269366f73706760e082015261746560f01b610100820152600061012085604084015284151560608401528060808401526200179a81840185620016c5565b80516001600160a01b03811681146200146857600080fd5b6000602082840312156200186857600080fd5b62001873826200183d565b9392505050565b6000602082840312156200188d57600080fd5b815161ffff811681146200187357600080fd5b600060208284031215620018b357600080fd5b815160ff811681146200187357600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620019085783516001600160a01b031683529284019291840191600101620018e1565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200194057620019406200167f565b604052919050565b600060208083850312156200195c57600080fd5b825167ffffffffffffffff808211156200197557600080fd5b818501915085601f8301126200198a57600080fd5b8151818111156200199f576200199f6200167f565b8060051b9150620019b284830162001914565b8181529183018401918481019088841115620019cd57600080fd5b938501935b83851015620019f657620019e6856200183d565b82529385019390850190620019d2565b98975050505050505050565b60005b8381101562001a1f57818101518382015260200162001a05565b50506000910152565b60006020828403121562001a3b57600080fd5b815167ffffffffffffffff8082111562001a5457600080fd5b818401915084601f83011262001a6957600080fd5b81518181111562001a7e5762001a7e6200167f565b62001a93601f8201601f191660200162001914565b915080825285602082850101111562001aab57600080fd5b62001abe81602084016020860162001a02565b50949350505050565b6b037afb79020b1b1b7bab73a160a51b81526000825162001af081600c85016020870162001a02565b91909101600c0192915050565b6a026b7b537a537a537af96960ad1b81526000825162001b2581600b85016020870162001a02565b91909101600b0192915050565b60008262001b5057634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111562001b7757634e487b7160e01b600052601160045260246000fd5b92915050565b6000815180845262001b9781602086016020860162001a02565b601f01601f19169290920160200192915050565b60a08152600062001bc060a083018762001b7d565b8281036020840152601b81527f687474703a2f2f49616d616e55524c2e78797a2e6162632e636f6d000000000060208201526040810191505060ff8516604083015283606083015260018060a01b038316608083015295945050505050565b60208152600062001873602083018462001b7d565b60408152600062001c49604083018562001b7d565b905060018060a01b0383166020830152939250505056fe60806040523480156200001157600080fd5b50604051620015b3380380620015b3833981016040819052620000349162000380565b8081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000380565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af11580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022257600080fd5b505af115801562000237573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000380565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000380565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036057600080fd5b505af115801562000375573d6000803e3d6000fd5b5050505050620003b2565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b6111f180620003c26000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220dc80dba4edf0ef334c532d06126074b6862ac7b882893029198ca4913b51ce9464736f6c6343000813003360806040523480156200001157600080fd5b50604051620015b5380380620015b5833981016040819052620000349162000382565b808081600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c5919062000382565b600480546001600160a01b0392831661010002610100600160a81b0319909116178155600080546001600160a01b03191633178155600393909355604080516341dcea9160e01b8152905192861694506341dcea919381830193602093909283900301908290875af115801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200022357600080fd5b505af115801562000238573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000382565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000308919062000382565b600580546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200036157600080fd5b505af115801562000376573d6000803e3d6000fd5b505050505050620003b4565b6000602082840312156200039557600080fd5b81516001600160a01b0381168114620003ad57600080fd5b9392505050565b6111f180620003c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806386d113c01161008c578063a1308f2711610066578063a1308f27146101d0578063ab440d65146101d9578063bc763530146101ec578063d5f39488146101f557600080fd5b806386d113c0146101a657806389f12ed9146101b75780638da5cb5b146101c857600080fd5b806341dcea91116100c857806341dcea911461013d5780634a6360241461016d5780634acdb309146101825780634b749e9b1461019557600080fd5b806302a4dca0146100ef57806322f3e2d4146101045780632fe7e44114610126575b600080fd5b6101026100fd366004610b26565b610206565b005b6004546101119060ff1681565b60405190151581526020015b60405180910390f35b61012f60025481565b60405190815260200161011d565b6004546101559061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161011d565b610175610265565b60405161011d9190610bc4565b61012f610190366004610e2b565b610456565b6005546001600160a01b0316610155565b6007546001600160a01b0316610155565b6001546001600160a01b0316610155565b61015561089a565b61012f60035481565b6101026101e7366004610f22565b610915565b61012f60085481565b6000546001600160a01b0316610155565b60045461010090046001600160a01b031633146102605760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b604482015260640160405180910390fd5b600255565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561044d57838290600052602060002090600502016040518060a00160405290816000820180548060200260200160405190810160405280929190818152602001828054801561030557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102e7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561038557602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161034c5790505b5050505050815260200160028201805461039e90610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546103ca90610f46565b80156104175780601f106103ec57610100808354040283529160200191610417565b820191906000526020600020905b8154815290600101906020018083116103fa57829003601f168201915b5050509183525050600382015460208083019190915260049092015461ffff166040909101529082526001929092019101610289565b50505050905090565b600061046a6001546001600160a01b031690565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c906024016020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190610f80565b6104f357604051637bfa4b9f60e01b815260040160405180910390fd5b835185511461051557604051638b140a8160e01b815260040160405180910390fd5b8451811015610635576103e884828151811061053357610533610fa2565b602002602001015161ffff16111561055e57604051636172d1a360e11b815260040160405180910390fd5b60055484516001600160a01b0390911690633ad3b0419086908490811061058757610587610fa2565b60200260200101516040516020016105b2919060f09190911b6001600160f01b031916815260020190565b6040516020818303038152906040528784815181106105d3576105d3610fa2565b60200260200101516040518363ffffffff1660e01b81526004016105f8929190610fb8565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b50505050806001019050610515565b61066b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600061ffff1681525090565b85815260208082018690526040820184905242606083015261ffff8516608083015286516009805460018101825560009190915283518051929550849360059092027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01926106dd9284920190610a0c565b5060208281015180516106f69260018501920190610a71565b506040820151600282019061070b9082611031565b50606082015160038201556080909101516004909101805461ffff191661ffff9092169190911790556040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908161076e5790505060408051602081018790523091810191909152909150606001604051602081830303815290604052816000815181106107be576107be610fa2565b602002602001018190525085826000815181106107dd576107dd610fa2565b61ffff90921660209283029190910190910152600554604051631b799aa760e11b81526001600160a01b03909116906336f3354e90610824903090859087906004016110f1565b600060405180830381600087803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b505050507f3571ec98a213372bdd3f1c7ae5f37ac6d39c03aba40b50bcac0e3b5e2293560c8460405161088791815260200190565b60405180910390a1505050949350505050565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061119e565b905090565b6006546001600160a01b0316336001600160a01b03161461094957604051630e8cc36b60e21b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e7919061119e565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b828054828255906000526020600020908101928215610a61579160200282015b82811115610a6157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a2c565b50610a6d929150610b11565b5090565b82805482825590600052602060002090600f01601090048101928215610a615791602002820160005b83821115610ada57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302610a9a565b8015610b085782816101000a81549061ffff0219169055600201602081600101049283019260010302610ada565b5050610a6d9291505b5b80821115610a6d5760008155600101610b12565b600060208284031215610b3857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b7357815161ffff1687529582019590820190600101610b53565b509495945050505050565b6000815180845260005b81811015610ba457602081850181015186830182015201610b88565b506000602082860101526020601f19601f83011685010191505092915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610ca057898403603f190186528251805160a0808752815190870181905260c08701918b019085905b80821015610c425782516001600160a01b03168452928c0192918c019160019190910190610c19565b505050898201518682038b880152610c5a8282610b3f565b915050888201518682038a880152610c728282610b7e565b6060848101519089015260809384015161ffff16939097019290925250509487019491870191600101610bec565b50919998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cee57610cee610caf565b604052919050565b600067ffffffffffffffff821115610d1057610d10610caf565b5060051b60200190565b6001600160a01b0381168114610d2f57600080fd5b50565b803561ffff81168114610d4457600080fd5b919050565b600082601f830112610d5a57600080fd5b81356020610d6f610d6a83610cf6565b610cc5565b82815260059290921b84018101918181019086841115610d8e57600080fd5b8286015b84811015610db057610da381610d32565b8352918301918301610d92565b509695505050505050565b600082601f830112610dcc57600080fd5b813567ffffffffffffffff811115610de657610de6610caf565b610df9601f8201601f1916602001610cc5565b818152846020838601011115610e0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4157600080fd5b843567ffffffffffffffff80821115610e5957600080fd5b818701915087601f830112610e6d57600080fd5b81356020610e7d610d6a83610cf6565b82815260059290921b8401810191818101908b841115610e9c57600080fd5b948201945b83861015610ec3578535610eb481610d1a565b82529482019490820190610ea1565b98505088013592505080821115610ed957600080fd5b610ee588838901610d49565b9450610ef360408801610d32565b93506060870135915080821115610f0957600080fd5b50610f1687828801610dbb565b91505092959194509250565b600060208284031215610f3457600080fd5b8135610f3f81610d1a565b9392505050565b600181811c90821680610f5a57607f821691505b602082108103610f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610f9257600080fd5b81518015158114610f3f57600080fd5b634e487b7160e01b600052603260045260246000fd5b604081526000610fcb6040830185610b7e565b905060018060a01b03831660208301529392505050565b601f82111561102c57600081815260208120601f850160051c810160208610156110095750805b601f850160051c820191505b8181101561102857828155600101611015565b5050505b505050565b815167ffffffffffffffff81111561104b5761104b610caf565b61105f816110598454610f46565b84610fe2565b602080601f831160018114611094576000841561107c5750858301515b600019600386901b1c1916600185901b178555611028565b600085815260208120601f198616915b828110156110c3578886015182559484019460019091019084016110a4565b50858210156110e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561115557607f19888703018452611143868351610b7e565b95509284019290840190600101611127565b50505050838203604085015284518083528186019282019060005b8181101561119057845161ffff1683529383019391830191600101611170565b509098975050505050505050565b6000602082840312156111b057600080fd5b8151610f3f81610d1a56fea2646970667358221220d46a05a9e86dbcfc79a35cb5a150fedb5454b23e154636839adc61d0d8d620cd64736f6c6343000813003360806040523480156200001157600080fd5b5060405162002fce38038062002fce8339810160408190526200003491620005a3565b8081600181600081600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b03166341dcea916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620005a3565b600480546001600160a01b0392831661010002610100600160a81b0319909116179055600080546001600160a01b0319908116331782556003939093556040805160c08101825282815260208082018481528284018581528451928301909452848252606083019182526080830185905260a08301859052600780546001810182559552825160069095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810195865590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180549190971697169690961790945590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8501559151919350917fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01906200020790826200067a565b50608082810151600483015560a0909201516005909101556040805191820181526000808352815160208181018452828252840152908201819052600b919060608201528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906200029c90826200067a565b506040820151816002015560608201518160030160006101000a81548160ff02191690836003811115620002d457620002d462000746565b02179055505050620002ed60056200059a60201b60201c565b620002fc600680546001019055565b80600860006101000a81548160ff0219169083151502179055505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e39190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b5050505050806001600160a01b03166341dcea916040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000497573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bd9190620005a3565b6001600160a01b031663f0b7832a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005219190620005a3565b600c80546001600160a01b0319166001600160a01b0392831690811790915560405163189acdbd60e31b815291831660048301529063c4d66de890602401600060405180830381600087803b1580156200057a57600080fd5b505af11580156200058f573d6000803e3d6000fd5b50505050506200075c565b80546001019055565b600060208284031215620005b657600080fd5b81516001600160a01b0381168114620005ce57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060057607f821691505b6020821081036200062157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067557600081815260208120601f850160051c81016020861015620006505750805b601f850160051c820191505b8181101562000671578281556001016200065c565b5050505b505050565b81516001600160401b03811115620006965762000696620005d5565b620006ae81620006a78454620005eb565b8462000627565b602080601f831160018114620006e65760008415620006cd5750858301515b600019600386901b1c1916600185901b17855562000671565b600085815260208120601f198616915b828110156200071757888601518255948401946001909101908401620006f6565b5085821015620007365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612862806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638d9776721161010f578063bd45a0a9116100a2578063e31c007f11610071578063e31c007f1461045b578063e38c5e721461046e578063eb08ab2814610481578063f4f4d2371461048b57600080fd5b8063bd45a0a9146103ee578063d5f3948814610401578063daf9113714610412578063e13de22b1461042557600080fd5b8063a41e603f116100de578063a41e603f14610378578063ab440d6514610398578063ad73349e146103ab578063b206b569146103ce57600080fd5b80638d9776721461032f5780638da5cb5b14610354578063973cdc781461035c578063a1308f271461036f57600080fd5b806341dcea9111610187578063599081f911610156578063599081f9146102f05780635d63f6c6146102fa57806386d113c01461030d57806389f12ed91461031e57600080fd5b806341dcea911461029c5780634b749e9b146102cc5780634fd9efc41461020a57806353eea875146102dd57600080fd5b806322f3e2d4116101c357806322f3e2d4146102565780632b086648146102735780632fe7e44114610286578063409621861461028f57600080fd5b806302a4dca0146101f557806305261aea1461020a5780630adc56f01461021d5780630bb75b4514610230575b600080fd5b610208610203366004611f0f565b6104ab565b005b610208610218366004611f0f565b61050b565b61020861022b366004611f3b565b610524565b61024361023e366004612037565b6106b8565b6040519081526020015b60405180910390f35b6004546102639060ff1681565b604051901515815260200161024d565b6102086102813660046120a2565b610b2c565b61024360025481565b6008546102639060ff1681565b6004546102b49061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161024d565b600c546001600160a01b03166102b4565b6102436102eb3660046120df565b610d8a565b6006546102439081565b610208610308366004612101565b610dbb565b600e546001600160a01b03166102b4565b6001546001600160a01b03166102b4565b61034261033d366004611f0f565b611146565b60405161024d969594939291906121c3565b6102b4611224565b61026361036a366004612205565b61129f565b61024360035481565b61038b610386366004611f0f565b61130a565b60405161024d9190612231565b6102086103a6366004612275565b61136c565b6103be6103b9366004611f0f565b611463565b60405161024d94939291906122d1565b6103e16103dc366004612313565b611535565b60405161024d9190612338565b6102436103fc366004612346565b61158b565b6000546001600160a01b03166102b4565b610208610420366004612313565b6117e8565b610243610433366004612313565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205490565b610243610469366004612313565b61197a565b61024361047c366004611f0f565b6119cc565b6005546102439081565b61049e610499366004611f0f565b611ae5565b60405161024d919061239d565b60045461010090046001600160a01b031633146105065760405162461bcd60e51b81526020600482015260146024820152734f6e6c7920706c7567696e20726567697374727960601b60448201526064015b60405180910390fd5b600255565b60405163ced4f63360e01b815260040160405180910390fd5b81336001600160a01b031660078281548110610542576105426123ff565b60009182526020909120600160069092020101546001600160a01b03161461057c5760405162461bcd60e51b81526004016104fd90612415565b6040805160248082018690528251808303909101815260449091018252602080820180516001600160e01b031663daf9113760e01b1790528251600180825281850190945291926000929182015b60608152602001906001900390816105ca57505060408051600180825281830190925291925060009190602080830190803683370190505090508282600081518110610618576106186123ff565b60200260200101819052508481600081518110610637576106376123ff565b61ffff90921660209283029190910190910152600c54604051631b799aa760e11b81526001600160a01b03909116906336f3354e9061067e9030908690869060040161243c565b600060405180830381600087803b15801561069857600080fd5b505af11580156106ac573d6000803e3d6000fd5b50505050505050505050565b60048054600154604051632b948c3960e01b81526001600160a01b03918216938101939093526000928392610100900490911690632b948c3990602401600060405180830381865afa158015610712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073a91908101906124e9565b90506000805b82518110156109325760025483828151811061075e5761075e6123ff565b60200260200101510361077057600191505b42851161078f5760405162461bcd60e51b81526004016104fd9061258f565b60008751116107b05760405162461bcd60e51b81526004016104fd906125b8565b60006107bb60055490565b6040805160c0810182524281526001600160a01b038d8116602083019081529282018d8152606083018d8152608084018d905260a084018c90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906108c79082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628189604051610916929190612721565b60405180910390a193508061092a81612742565b915050610740565b50806109725760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c792044414f204d6f64756c6560881b60448201526064016104fd565b4284116109915760405162461bcd60e51b81526004016104fd9061258f565b60008651116109b25760405162461bcd60e51b81526004016104fd906125b8565b60006109bd60055490565b6040805160c0810182524281526001600160a01b038c8116602083019081529282018c8152606083018c8152608084018c905260a084018b90526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b031916919095161790935590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b90910190610ac99082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c66628188604051610b18929190612721565b60405180910390a198975050505050505050565b600154604051630935e01b60e21b81523360048201526001600160a01b03909116906324d7806c90602401602060405180830381865afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b989190612769565b610bd25760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4260078681548110610be657610be66123ff565b90600052602060002090600602016004015411610c3c5760405162461bcd60e51b81526020600482015260146024820152731d185cdac8185b1c9958591e481cdd185c9d195960621b60448201526064016104fd565b6000835111610c5d5760405162461bcd60e51b81526004016104fd906125b8565b6005548510610c9d5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964207461736b60a01b60448201526064016104fd565b8360078681548110610cb157610cb16123ff565b9060005260206000209060060201600201819055508260078681548110610cda57610cda6123ff565b90600052602060002090600602016003019081610cf79190612661565b508160078681548110610d0c57610d0c6123ff565b9060005260206000209060060201600401819055508060078681548110610d3557610d356123ff565b9060005260206000209060060201600501819055507f126a0ea5197c062eb92c789989294eb8d2aef31cf41fd012da26dfab98b29a168584604051610d7b929190612721565b60405180910390a15050505050565b60096020528160005260406000208181548110610da657600080fd5b90600052602060002001600091509150505481565b60085460ff1615610e715760015460405163288c314960e21b81523360048201526001600160a01b039091169063a230c52490602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612769565b610e715760405162461bcd60e51b815260206004820152601060248201526f4f6e6c792044414f206d656d6265727360801b60448201526064016104fd565b6000838152600a60209081526040808320338085529252822054600b8054879492908110610ea157610ea16123ff565b60009182526020909120600360049092020181015460ff1690811115610ec957610ec9612299565b816003811115610edb57610edb612299565b14610ef9576040516328992a5560e21b815260040160405180910390fd5b4260078781548110610f0d57610f0d6123ff565b90600052602060002090600602016004015410610f5e5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110610f7257610f726123ff565b90600052602060002090600602016005015411610fc65760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000610fd160065490565b9050600b6040518060800160405280336001600160a01b0316815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820152604001600290528154600180820184556000938452602093849020835160049093020180546001600160a01b0319166001600160a01b039093169290921782559282015191929091908201906110829082612661565b506040820151816002015560608201518160030160006101000a81548160ff021916908360038111156110b7576110b7612299565b021790555050506000878152600960209081526040808320805460018101825590845282842001849055898352600a82528083203384529091529020819055611104600680546001019055565b60408051888152602081018390527f732b29041dfc9fd7a86ce0ca090ecaabdc1a602620a65264047baf43d8ba31be910160405180910390a150505050505050565b6007818154811061115657600080fd5b600091825260209091206006909102018054600182015460028301546003840180549395506001600160a01b03909216939092909190611195906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546111c1906125d8565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b5050505050908060040154908060050154905086565b6004805460405163235883e360e01b815230928101929092526000916101009091046001600160a01b03169063235883e390602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061278b565b905090565b6000818152600a602090815260408083206001600160a01b0386168452909152812054600b80546003929081106112d8576112d86123ff565b60009182526020909120600360049092020181015460ff169081111561130057611300612299565b1490505b92915050565b60008181526009602090815260409182902080548351818402810184019094528084526060939283018282801561136057602002820191906000526020600020905b81548152602001906001019080831161134c575b50505050509050919050565b600d546001600160a01b0316336001600160a01b0316146113a057604051630e8cc36b60e21b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b038316179055604080516389f12ed960e01b815290517f3ef34c117b493311a9ea61dff2d101d6bdc33062c190cb30ffbb908b09a2b4949130916389f12ed9916004808201926020929091908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e919061278b565b604080516001600160a01b03928316815291841660208301520160405180910390a150565b600b818154811061147357600080fd5b6000918252602090912060049091020180546001820180546001600160a01b039092169350906114a2906125d8565b80601f01602080910402602001604051908101604052809291908181526020018280546114ce906125d8565b801561151b5780601f106114f05761010080835404028352916020019161151b565b820191906000526020600020905b8154815290600101906020018083116114fe57829003601f168201915b50505050600283015460039093015491929160ff16905084565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b8054909190811061156d5761156d6123ff565b600091825260209091206004909102016003015460ff169392505050565b600154604051630935e01b60e21b81523360048201526000916001600160a01b0316906324d7806c90602401602060405180830381865afa1580156115d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f89190612769565b6116325760405162461bcd60e51b815260206004820152600b60248201526a27b7363c9030b236b4b71760a91b60448201526064016104fd565b4282116116515760405162461bcd60e51b81526004016104fd9061258f565b60008451116116725760405162461bcd60e51b81526004016104fd906125b8565b600061167d60055490565b6040805160c0810182524281523360208201908152918101898152606082018981526080830189905260a083018890526007805460018101825560009190915283517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600690920291820190815594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820180546001600160a01b0319166001600160a01b0390921691909117905591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a8301555193945090927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101906117889082612661565b506080820151600482015560a090910151600591820155805460010190557fa5ed9e6226c584326505694539c95cb0e3238ae09bcda5a65c00bbfdab1c666281866040516117d7929190612721565b60405180910390a195945050505050565b6040516001600160e01b03196000351660208201526024810183905260440160408051601f198184030181529181526000848152600a60209081528282206001600160a01b038616835290522054600b8054849286928492600292908110611852576118526123ff565b60009182526020909120600360049092020181015460ff169081111561187a5761187a612299565b81600381111561188c5761188c612299565b146118aa576040516328992a5560e21b815260040160405180910390fd5b86336001600160a01b0316600782815481106118c8576118c86123ff565b60009182526020909120600160069092020101546001600160a01b0316146119025760405162461bcd60e51b81526004016104fd90612415565b61190c8888611c43565b5050600c54604051633ad3b04160e01b81526001600160a01b039091169250633ad3b041915061194290859085906004016127a8565b600060405180830381600087803b15801561195c57600080fd5b505af1158015611970573d6000803e3d6000fd5b5050505050505050565b6000828152600a602090815260408083206001600160a01b0385168452909152812054600b805490919081106119b2576119b26123ff565b906000526020600020906004020160020154905092915050565b600c5460408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663daf9113760e01b1790529051630958ee3760e41b81526000926001600160a01b031691635a53f24a91839163958ee37091611a3b9130916004016127d2565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906127f6565b6040518263ffffffff1660e01b8152600401611a9a91815260200190565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb919061280f565b61ffff1692915050565b611b276040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600081525090565b60078281548110611b3a57611b3a6123ff565b90600052602060002090600602016040518060c0016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200160028201548152602001600382018054611ba6906125d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906125d8565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b50505050508152602001600482015481526020016005820154815250509050919050565b6000828152600a602090815260408083206001600160a01b0385168452909152902054600b8054849284926002929091908110611c8257611c826123ff565b60009182526020909120600360049092020181015460ff1690811115611caa57611caa612299565b816003811115611cbc57611cbc612299565b14611cda576040516328992a5560e21b815260040160405180910390fd5b84336001600160a01b031660078281548110611cf857611cf86123ff565b60009182526020909120600160069092020101546001600160a01b031614611d325760405162461bcd60e51b81526004016104fd90612415565b4260078781548110611d4657611d466123ff565b90600052602060002090600602016004015410611d975760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016104fd565b4260078781548110611dab57611dab6123ff565b90600052602060002090600602016005015411611dff5760405162461bcd60e51b8152602060048201526012602482015271151a19481d185cdac81a185cc8195b99195960721b60448201526064016104fd565b6000868152600a602090815260408083206001600160a01b0389168452909152902054600b8054600392908110611e3857611e386123ff565b906000526020600020906004020160030160006101000a81548160ff02191690836003811115611e6a57611e6a612299565b02179055506000868152600a602090815260408083206001600160a01b0389168452909152902054600b80544292908110611ea757611ea76123ff565b9060005260206000209060040201600201819055507fc923846dc69de8ab93cf9ea85e31a6e1ba93bd70bf0cec92b2c98b8f4b4485da8686604051611eff9291909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b600060208284031215611f2157600080fd5b5035919050565b61ffff81168114611f3857600080fd5b50565b60008060408385031215611f4e57600080fd5b823591506020830135611f6081611f28565b809150509250929050565b6001600160a01b0381168114611f3857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611fbf57611fbf611f80565b604052919050565b600082601f830112611fd857600080fd5b813567ffffffffffffffff811115611ff257611ff2611f80565b612005601f8201601f1916602001611f96565b81815284602083860101111561201a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561204f57600080fd5b853561205a81611f6b565b945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b61208988828901611fc7565b9598949750949560608101359550608001359392505050565b600080600080600060a086880312156120ba57600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561207d57600080fd5b600080604083850312156120f257600080fd5b50508035926020909101359150565b60008060006040848603121561211657600080fd5b83359250602084013567ffffffffffffffff8082111561213557600080fd5b818601915086601f83011261214957600080fd5b81358181111561215857600080fd5b87602082850101111561216a57600080fd5b6020830194508093505050509250925092565b6000815180845260005b818110156121a357602081850181015186830182015201612187565b506000602082860101526020601f19601f83011685010191505092915050565b86815260018060a01b038616602082015284604082015260c0606082015260006121f060c083018661217d565b60808301949094525060a00152949350505050565b6000806040838503121561221857600080fd5b823561222381611f6b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156122695783518352928401929184019160010161224d565b50909695505050505050565b60006020828403121561228757600080fd5b813561229281611f6b565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600481106122cd57634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b03851681526080602082018190526000906122f59083018661217d565b905083604083015261230a60608301846122af565b95945050505050565b6000806040838503121561232657600080fd5b823591506020830135611f6081611f6b565b6020810161130482846122af565b6000806000806080858703121561235c57600080fd5b84359350602085013567ffffffffffffffff81111561237a57600080fd5b61238687828801611fc7565b949794965050505060408301359260600135919050565b602081528151602082015260018060a01b036020830151166040820152604082015160608201526000606083015160c060808401526123df60e084018261217d565b9050608084015160a084015260a084015160c08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600d908201526c27b7363c9031b932b0ba37b91760991b604082015260600190565b60006060820160018060a01b0386168352602060608185015281865180845260808601915060808160051b870101935082880160005b828110156124a057607f1988870301845261248e86835161217d565b95509284019290840190600101612472565b50505050838203604085015284518083528186019282019060005b818110156124db57845161ffff16835293830193918301916001016124bb565b509098975050505050505050565b600060208083850312156124fc57600080fd5b825167ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81518181111561253a5761253a611f80565b8060051b915061254b848301611f96565b818152918301840191848101908884111561256557600080fd5b938501935b838510156125835784518252938501939085019061256a565b98975050505050505050565b6020808252600f908201526e496e76616c696420656e644461746560881b604082015260600190565b6020808252600690820152654e6f2055524960d01b604082015260600190565b600181811c908216806125ec57607f821691505b60208210810361260c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561265c57600081815260208120601f850160051c810160208610156126395750805b601f850160051c820191505b8181101561265857828155600101612645565b5050505b505050565b815167ffffffffffffffff81111561267b5761267b611f80565b61268f8161268984546125d8565b84612612565b602080601f8311600181146126c457600084156126ac5750858301515b600019600386901b1c1916600185901b178555612658565b600085815260208120601f198616915b828110156126f3578886015182559484019460019091019084016126d4565b50858210156127115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061273a604083018461217d565b949350505050565b60006001820161276257634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561277b57600080fd5b8151801515811461229257600080fd5b60006020828403121561279d57600080fd5b815161229281611f6b565b6040815260006127bb604083018561217d565b905060018060a01b03831660208301529392505050565b6001600160a01b038316815260406020820181905260009061273a9083018461217d565b60006020828403121561280857600080fd5b5051919050565b60006020828403121561282157600080fd5b815161229281611f2856fea2646970667358221220127a529e298fda758b26cf58311d590fc72da17b72ea9555d1af95cdaf36c16c64736f6c6343000813003323232323232323232323232323232323232323232323232323232323232323232323232323232323232323885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220bff223e1f9bd7b5fc431633ecb1cb3725022002c854720949724c9577c0c53ca64736f6c63430008130033", + "sourceMap": "923:4568:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:954;;;:::i;:::-;;2256:3233;;;:::i;800:28:67:-;;;;;;;;;;;;;;;179:14:134;;172:22;154:41;;142:2;127:18;800:28:67;;;;;;;1296:954:124;1340:13;1330:7;:23;;;1378:5;1367:16;1363:89;;1385:22;:67;;-1:-1:-1;;;;;;1385:67:124;1410:42;1385:67;;;1363:89;1466:7;;1477:1;1466:12;1462:85;;1480:22;:67;;-1:-1:-1;;;;;;1480:67:124;1505:42;1480:67;;;1462:85;1562:22;;-1:-1:-1;;;;;1562:22:124;1558:71;;1600:29;;-1:-1:-1;;;1600:29:124;;408:2:134;1600:29:124;;;390:21:134;447:2;427:18;;;420:30;-1:-1:-1;;;466:18:134;;;459:49;525:18;;1600:29:124;;;;;;;;1558:71;1652:38;1682:7;;1652:29;:38::i;:::-;1640:3;:51;;-1:-1:-1;;;;;;1640:51:124;-1:-1:-1;;;;;1640:51:124;;;;;;;;;1701:31;;;-1:-1:-1;;;1701:31:124;;;;;766:51:134;;;;833:18;;;826:30;892:1;872:18;;;865:29;-1:-1:-1;;;910:18:134;;;903:35;1701:8:124;;;;955:19:134;;1701:31:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:42;1789:7;;1755:33;:42::i;:::-;1742:5;:56;;-1:-1:-1;;;;;;1742:56:124;;-1:-1:-1;;;;;1742:56:124;;;;;;;;;;;;;1808:38;;;-1:-1:-1;;;1808:38:124;;1825:5;;;;;;;1808:38;;;1197:51:134;1264:18;;;1257:30;1323:2;1303:18;;;1296:30;-1:-1:-1;;;1342:18:134;;;1335:40;1808:8:124;;;;1392:19:134;;1808:38:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1878:45;1915:7;;1878:36;:45::i;:::-;1857:5;:67;;-1:-1:-1;;;;;;1857:67:124;-1:-1:-1;;;;;1857:67:124;;;;;;;;;1934:33;;;-1:-1:-1;;;1934:33:124;;;;;1634:51:134;;;;1701:18;;;1694:30;1760:1;1740:18;;;1733:29;-1:-1:-1;;;1778:18:134;;;1771:35;1934:8:124;;;;1823:19:134;;1934:33:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:47;2042:7;;2003:38;:47::i;:::-;1978:7;:73;;-1:-1:-1;;;;;;1978:73:124;-1:-1:-1;;;;;1978:73:124;;;;;;;;;2061:44;;;-1:-1:-1;;;2061:44:124;;;;;2065:51:134;;;;2132:18;;;2125:30;2191:2;2171:18;;;2164:30;-1:-1:-1;;;2210:18:134;;;2203:44;2061:8:124;;;;2264:19:134;;2061:44:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2137:55;2184:7;;2137:46;:55::i;:::-;2116:2;:77;;-1:-1:-1;;;;;;2116:77:124;-1:-1:-1;;;;;2116:77:124;;;;;;;;;2203:40;;;-1:-1:-1;;;2203:40:124;;;;;2506:51:134;;;;2573:18;;;2566:30;2612:18;;;2605:30;-1:-1:-1;;;2651:18:134;;;2644:45;2203:8:124;;;;2706:19:134;;2203:40:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:954::o;2256:3233::-;2319:16;;;2333:1;2319:16;;;;;;;;;2288:28;;2319:16;;;;;;;;;;-1:-1:-1;;2362:20:124;;-1:-1:-1;;;2362:20:124;;3070:2:134;2362:20:124;;;3052:21:134;3109:1;3089:18;;;3082:29;-1:-1:-1;;;3127:18:134;;;3120:36;2288:47:124;;-1:-1:-1;2362:10:124;;;;3173:18:134;;2362:20:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2345:11;2357:1;2345:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2430:20;;-1:-1:-1;;;2430:20:124;;:10;;;;:20;;;;3725:2:134;3707:21;;;3764:1;3744:18;;;3737:29;-1:-1:-1;;;3797:2:134;3782:18;;3775:36;3843:2;3828:18;;3523:329;2430:20:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2413:11;2425:1;2413:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2477:20;;-1:-1:-1;;;2477:20:124;;:10;;;;:20;;;;4059:2:134;4041:21;;;4098:1;4078:18;;;4071:29;-1:-1:-1;;;4131:2:134;4116:18;;4109:36;4177:2;4162:18;;3857:329;2477:20:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2460:11;2472:1;2460:14;;;;;;;;:::i;:::-;;;;;;;;;;:37;2526:8;;2508:27;;-1:-1:-1;;;2508:27:124;;-1:-1:-1;;;;;2526:8:124;;;2508:27;;;4337:51:134;2508:17:124;;;;4310:18:134;;2508:27:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2637:7:124;;2694:8;;2637:210;;-1:-1:-1;;;2637:210:124;;2581:21;;-1:-1:-1;2613:21:124;;-1:-1:-1;;;;;;2637:7:124;;;;:27;;:210;;2694:8;;;2613:21;;2637:7;;2581:21;;2637:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2885:7;;2942:8;;2885:210;;-1:-1:-1;;;2885:210:124;;2613:234;;-1:-1:-1;2857:25:124;;-1:-1:-1;;;;;2885:7:124;;;;:27;;:210;;2942:8;;;2857:25;;2885:7;;3081:4;;2885:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3130:7;;3187:8;;3130:210;;-1:-1:-1;;;3130:210:124;;2857:238;;-1:-1:-1;3105:22:124;;-1:-1:-1;;;;;3130:7:124;;;;:27;;:210;;3187:8;;;3105:22;;3130:7;;3326:4;;3130:210;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3373:5;;:51;;-1:-1:-1;;;3373:51:124;;:5;:51;;;6953:25:134;;;7014:2;6994:18;;;6987:30;7053:2;7033:18;;;7026:30;7093:27;7072:19;;;7065:56;7173:18;;;7166:34;3105:235:124;;-1:-1:-1;3351:13:124;;-1:-1:-1;;;;;3373:5:124;;;;:16;;7138:19:134;;3373:51:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3351:74;;3436:21;3496:7;3468:37;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:134;;;4337:51;;4325:2;4310:18;3468:37:124;;;;;;;;;;;;;;;;;;;;;;;3436:70;;3516:19;3575:7;3546:38;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:134;;;4337:51;;4325:2;4310:18;3546:38:124;;;;;;;;;;;;;;;;;;;;;;;3516:69;;3595:16;3650:7;3622:37;;;;;:::i;:::-;-1:-1:-1;;;;;4355:32:134;;;4337:51;;4325:2;4310:18;3622:37:124;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3671:7:124;;:52;;-1:-1:-1;;;3671:52:124;;-1:-1:-1;;;;;7798:32:134;;;3671:52:124;;;7780:51:134;7847:18;;;7840:34;;;3595:65:124;;-1:-1:-1;3671:7:124;;;:22;;7753:18:134;;3671:52:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3733:7:124;;:51;;-1:-1:-1;;;3733:51:124;;-1:-1:-1;;;;;7798:32:134;;;3733:51:124;;;7780::134;7847:18;;;7840:34;;;3733:7:124;;;;-1:-1:-1;3733:22:124;;-1:-1:-1;7753:18:134;;3733:51:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3794:7:124;;:51;;-1:-1:-1;;;3794:51:124;;-1:-1:-1;;;;;7798:32:134;;;3794:51:124;;;7780::134;7847:18;;;7840:34;;;3794:7:124;;;;-1:-1:-1;3794:22:124;;-1:-1:-1;7753:18:134;;3794:51:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3856:2:124;;3865:14;;;-1:-1:-1;;;3865:14:124;;;;-1:-1:-1;;;;;3856:2:124;;;;-1:-1:-1;3856:8:124;;-1:-1:-1;3856:2:124;;3865:12;;:14;;;;;;;;;;;;;;;3856:2;3865:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3885:2;;:20;;;-1:-1:-1;;;3885:20:124;;;;3881:2;;-1:-1:-1;;;;;3885:2:124;;:18;;:20;;;;;;;;;;;;;;:2;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3856:68;;-1:-1:-1;;;;;;3856:68:124;;;;;;;8707:6:134;8695:19;;;3856:68:124;;;8677:38:134;3856:68:124;8751:23:134;;;;8731:18;;;8724:51;8823:4;8811:17;8791:18;;;8784:45;-1:-1:-1;;;;;8865:32:134;;8845:18;;;8838:60;8649:19;;3856:68:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3934:31:124;;-1:-1:-1;3982:1:124;;-1:-1:-1;3968:16:124;;-1:-1:-1;3968:16:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3968:16:124;;3934:50;;4014:42;3994:14;4009:1;3994:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;3994:62:124;;;-1:-1:-1;;;;;3994:62:124;;;;;4086:42;4066:14;4081:1;4066:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4066:62:124;;;-1:-1:-1;;;;;4066:62:124;;;;;4158:42;4138:14;4153:1;4138:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4138:62:124;;;-1:-1:-1;;;;;4138:62:124;;;;;4230:42;4210:14;4225:1;4210:17;;;;;;;;:::i;:::-;;;;;;:62;-1:-1:-1;;;;;4210:62:124;;;-1:-1:-1;;;;;4210:62:124;;;;;4302:42;4282:14;4297:1;4282:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4282:62:124;;;:17;;;;;;;;;:62;4355:33;;-1:-1:-1;;;4355:33:124;;:17;;;;;;:33;;4373:14;;4355:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4355:33:124;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;4398:16:124;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4473:1:124;;-1:-1:-1;;;4485:998:124;4497:11;:18;4493:1;:22;4485:998;;;4532:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;4646:14;;-1:-1:-1;;;4646:14:124;;;;;10963:25:134;;;4604:83:124;;4646:11;;;;10936:18:134;;4646:14:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4646:14:124;;;;;;;;;;;;:::i;:::-;4616:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;4663:7:124;;4671:11;4683:1;4671:14;;;;;;;;:::i;:::-;;;;;;;4663:23;;;;;;;;;;;;;10963:25:134;;10951:2;10936:18;;10817:177;4663:23:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4604:11;:83::i;:::-;4701:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;4774:17:124;;4792:11;4804:1;4792:14;;;;;;;;:::i;:::-;;;;;;;4774:33;;;;;;;;;;;;;10963:25:134;;10951:2;10936:18;;10817:177;4774:33:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4896:3:124;;4951:14;;-1:-1:-1;;;4951:14:124;;;;;10963:25:134;;;-1:-1:-1;;;;;4896:3:124;;;;-1:-1:-1;4896:8:124;;-1:-1:-1;4951:11:124;;;;10936:18:134;;4951:14:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4951:14:124;;;;;;;;;;;;:::i;:::-;4922:44;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4922:44:124;;;;;;;;;5031:5;5035:1;5031;:5;:::i;:::-;:10;:18;;5048:1;5031:18;;;5044:1;5031:18;5075:2;5067:5;:1;5071;5067:5;:::i;:::-;:10;:22;;5084:5;:1;5088;5084:5;:::i;:::-;5067:22;;;5080:1;5067:22;5115:7;4896:241;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5322:58;;;;;;;;;;;;;;;;;;:11;:58::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:66;;-1:-1:-1;;;;;5395:16:124;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5455:3;;;;;4485:998;;;2278:3211;;;;;;;;;;;2256:3233::o;164:456:123:-;223:7;246;257:5;246:16;242:372;;-1:-1:-1;293:42:123;;164:456;-1:-1:-1;164:456:123:o;242:372::-;407:7;418:1;407:12;403:211;;-1:-1:-1;450:42:123;;164:456;-1:-1:-1;164:456:123:o;403:211::-;574:29;;-1:-1:-1;;;574:29:123;;14538:2:134;574:29:123;;;14520:21:134;14577:2;14557:18;;;14550:30;-1:-1:-1;;;14596:18:134;;;14589:49;14655:18;;574:29:123;14336:343:134;403:211:123;164:456;;;:::o;1563:460::-;1626:7;1649;1660:5;1649:16;1645:372;;-1:-1:-1;1696:42:123;;1563:460;-1:-1:-1;1563:460:123:o;1645:372::-;1810:7;1821:1;1810:12;1806:211;;-1:-1:-1;1853:42:123;;1563:460;-1:-1:-1;1563:460:123:o;2029:463::-;2095:7;2118;2129:5;2118:16;2114:372;;-1:-1:-1;2165:42:123;;2029:463;-1:-1:-1;2029:463:123:o;2114:372::-;2279:7;2290:1;2279:12;2275:211;;-1:-1:-1;2322:42:123;;2029:463;-1:-1:-1;2029:463:123:o;2498:465::-;2566:7;2589;2600:5;2589:16;2585:372;;-1:-1:-1;2636:42:123;;2498:465;-1:-1:-1;2498:465:123:o;2585:372::-;2750:7;2761:1;2750:12;2746:211;;-1:-1:-1;2793:42:123;;2498:465;-1:-1:-1;2498:465:123:o;2969:473::-;3045:7;3068;3079:5;3068:16;3064:372;;-1:-1:-1;3115:42:123;;2969:473;-1:-1:-1;2969:473:123:o;3064:372::-;3229:7;3240:1;3229:12;3225:211;;-1:-1:-1;3272:42:123;;2969:473;-1:-1:-1;2969:473:123:o;5630:121:80:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:80;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:80;-1:-1:-1;;;5701:42:80;;;5685:15;:59::i;:::-;5630:121;:::o;6994:145::-;7061:71;7124:2;7128;7077:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7077:54:80;;;;;;;;;;;;;;-1:-1:-1;;;;;7077:54:80;-1:-1:-1;;;7077:54:80;;;7061:15;:71::i;:::-;6994:145;;:::o;181:376::-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;2736:127:134:-;2797:10;2792:3;2788:20;2785:1;2778:31;2828:4;2825:1;2818:15;2852:4;2849:1;2842:15;3202:184;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:134;;3202:184;-1:-1:-1;3202:184:134:o;3391:127::-;3452:10;3447:3;3443:20;3440:1;3433:31;3483:4;3480:1;3473:15;3507:4;3504:1;3497:15;4399:435;4452:3;4490:5;4484:12;4517:6;4512:3;4505:19;4543:4;4572:2;4567:3;4563:12;4556:19;;4609:2;4602:5;4598:14;4630:1;4640:169;4654:6;4651:1;4648:13;4640:169;;;4715:13;;4703:26;;4749:12;;;;4784:15;;;;4676:1;4669:9;4640:169;;;-1:-1:-1;4825:3:134;;4399:435;-1:-1:-1;;;;;4399:435:134:o;4839:924::-;5250:1;5246;5241:3;5237:11;5233:19;5225:6;5221:32;5210:9;5203:51;5290:3;5285:2;5274:9;5270:18;5263:31;5331:2;5325:3;5314:9;5310:19;5303:31;5371:34;5365:3;5354:9;5350:19;5343:63;5443:34;5437:3;5426:9;5422:19;5415:63;-1:-1:-1;;;5509:3:134;5498:9;5494:19;5487:33;5184:4;5539:3;5578:6;5573:2;5562:9;5558:18;5551:34;5635:6;5628:14;5621:22;5616:2;5605:9;5601:18;5594:50;5681:2;5675:3;5664:9;5660:19;5653:31;5701:56;5753:2;5742:9;5738:18;5730:6;5701:56;:::i;:::-;5693:64;4839:924;-1:-1:-1;;;;;;;4839:924:134:o;5768:::-;6179:1;6175;6170:3;6166:11;6162:19;6154:6;6150:32;6139:9;6132:51;6219:3;6214:2;6203:9;6199:18;6192:31;6260:2;6254:3;6243:9;6239:19;6232:31;6300:34;6294:3;6283:9;6279:19;6272:63;6372:34;6366:3;6355:9;6351:19;6344:63;-1:-1:-1;;;6438:3:134;6427:9;6423:19;6416:33;6113:4;6468:3;6507:6;6502:2;6491:9;6487:18;6480:34;6564:6;6557:14;6550:22;6545:2;6534:9;6530:18;6523:50;6610:2;6604:3;6593:9;6589:19;6582:31;6630:56;6682:2;6671:9;6667:18;6659:6;6630:56;:::i;7211:177::-;7290:13;;-1:-1:-1;;;;;7332:31:134;;7322:42;;7312:70;;7378:1;7375;7368:12;7393:208;7463:6;7516:2;7504:9;7495:7;7491:23;7487:32;7484:52;;;7532:1;7529;7522:12;7484:52;7555:40;7585:9;7555:40;:::i;:::-;7545:50;7393:208;-1:-1:-1;;;7393:208:134:o;7885:276::-;7954:6;8007:2;7995:9;7986:7;7982:23;7978:32;7975:52;;;8023:1;8020;8013:12;7975:52;8055:9;8049:16;8105:6;8098:5;8094:18;8087:5;8084:29;8074:57;;8127:1;8124;8117:12;8166:273;8234:6;8287:2;8275:9;8266:7;8262:23;8258:32;8255:52;;;8303:1;8300;8293:12;8255:52;8335:9;8329:16;8385:4;8378:5;8374:16;8367:5;8364:27;8354:55;;8405:1;8402;8395:12;8909:658;9080:2;9132:21;;;9202:13;;9105:18;;;9224:22;;;9051:4;;9080:2;9303:15;;;;9277:2;9262:18;;;9051:4;9346:195;9360:6;9357:1;9354:13;9346:195;;;9425:13;;-1:-1:-1;;;;;9421:39:134;9409:52;;9516:15;;;;9481:12;;;;9457:1;9375:9;9346:195;;;-1:-1:-1;9558:3:134;;8909:658;-1:-1:-1;;;;;;8909:658:134:o;9572:275::-;9643:2;9637:9;9708:2;9689:13;;-1:-1:-1;;9685:27:134;9673:40;;9743:18;9728:34;;9764:22;;;9725:62;9722:88;;;9790:18;;:::i;:::-;9826:2;9819:22;9572:275;;-1:-1:-1;9572:275:134:o;9852:960::-;9947:6;9978:2;10021;10009:9;10000:7;9996:23;9992:32;9989:52;;;10037:1;10034;10027:12;9989:52;10070:9;10064:16;10099:18;10140:2;10132:6;10129:14;10126:34;;;10156:1;10153;10146:12;10126:34;10194:6;10183:9;10179:22;10169:32;;10239:7;10232:4;10228:2;10224:13;10220:27;10210:55;;10261:1;10258;10251:12;10210:55;10290:2;10284:9;10312:2;10308;10305:10;10302:36;;;10318:18;;:::i;:::-;10364:2;10361:1;10357:10;10347:20;;10387:28;10411:2;10407;10403:11;10387:28;:::i;:::-;10449:15;;;10519:11;;;10515:20;;;10480:12;;;;10547:19;;;10544:39;;;10579:1;10576;10569:12;10544:39;10603:11;;;;10623:159;10639:6;10634:3;10631:15;10623:159;;;10705:34;10735:3;10705:34;:::i;:::-;10693:47;;10656:12;;;;10760;;;;10623:159;;;10801:5;9852:960;-1:-1:-1;;;;;;;;9852:960:134:o;10999:250::-;11084:1;11094:113;11108:6;11105:1;11102:13;11094:113;;;11184:11;;;11178:18;11165:11;;;11158:39;11130:2;11123:10;11094:113;;;-1:-1:-1;;11241:1:134;11223:16;;11216:27;10999:250::o;11254:719::-;11334:6;11387:2;11375:9;11366:7;11362:23;11358:32;11355:52;;;11403:1;11400;11393:12;11355:52;11436:9;11430:16;11465:18;11506:2;11498:6;11495:14;11492:34;;;11522:1;11519;11512:12;11492:34;11560:6;11549:9;11545:22;11535:32;;11605:7;11598:4;11594:2;11590:13;11586:27;11576:55;;11627:1;11624;11617:12;11576:55;11656:2;11650:9;11678:2;11674;11671:10;11668:36;;;11684:18;;:::i;:::-;11726:53;11769:2;11750:13;;-1:-1:-1;;11746:27:134;11775:2;11742:36;11726:53;:::i;:::-;11713:66;;11802:2;11795:5;11788:17;11842:7;11837:2;11832;11828;11824:11;11820:20;11817:33;11814:53;;;11863:1;11860;11853:12;11814:53;11876:67;11940:2;11935;11928:5;11924:14;11919:2;11915;11911:11;11876:67;:::i;:::-;-1:-1:-1;11962:5:134;11254:719;-1:-1:-1;;;;11254:719:134:o;11978:434::-;-1:-1:-1;;;12225:3:134;12218:27;12200:3;12274:6;12268:13;12290:75;12358:6;12353:2;12348:3;12344:12;12337:4;12329:6;12325:17;12290:75;:::i;:::-;12385:16;;;;12403:2;12381:25;;11978:434;-1:-1:-1;;11978:434:134:o;12417:433::-;-1:-1:-1;;;12664:3:134;12657:26;12639:3;12712:6;12706:13;12728:75;12796:6;12791:2;12786:3;12782:12;12775:4;12767:6;12763:17;12728:75;:::i;:::-;12823:16;;;;12841:2;12819:25;;12417:433;-1:-1:-1;;12417:433:134:o;12855:209::-;12887:1;12913;12903:132;;12957:10;12952:3;12948:20;12945:1;12938:31;12992:4;12989:1;12982:15;13020:4;13017:1;13010:15;12903:132;-1:-1:-1;13049:9:134;;12855:209::o;13069:222::-;13134:9;;;13155:10;;;13152:133;;;13207:10;13202:3;13198:20;13195:1;13188:31;13242:4;13239:1;13232:15;13270:4;13267:1;13260:15;13152:133;13069:222;;;;:::o;13296:271::-;13338:3;13376:5;13370:12;13403:6;13398:3;13391:19;13419:76;13488:6;13481:4;13476:3;13472:14;13465:4;13458:5;13454:16;13419:76;:::i;:::-;13549:2;13528:15;-1:-1:-1;;13524:29:134;13515:39;;;;13556:4;13511:50;;13296:271;-1:-1:-1;;13296:271:134:o;13572:759::-;13904:3;13893:9;13886:22;13867:4;13931:46;13972:3;13961:9;13957:19;13949:6;13931:46;:::i;:::-;14025:9;14017:6;14013:22;14008:2;13997:9;13993:18;13986:50;14060:2;14052:6;14045:18;14096:29;14091:2;14083:6;14079:15;14072:54;14155:2;14147:6;14143:15;14135:23;;;14206:4;14198:6;14194:17;14189:2;14178:9;14174:18;14167:45;14248:6;14243:2;14232:9;14228:18;14221:34;14321:1;14317;14312:3;14308:11;14304:19;14296:6;14292:32;14286:3;14275:9;14271:19;14264:61;13572:759;;;;;;;:::o;14684:220::-;14833:2;14822:9;14815:21;14796:4;14853:45;14894:2;14883:9;14879:18;14871:6;14853:45;:::i;14909:317::-;15086:2;15075:9;15068:21;15049:4;15106:45;15147:2;15136:9;15132:18;15124:6;15106:45;:::i;:::-;15098:53;;15216:1;15212;15207:3;15203:11;15199:19;15191:6;15187:32;15182:2;15171:9;15167:18;15160:60;14909:317;;;;;:::o", "linkReferences": {} }, "methodIdentifiers": { @@ -43,7 +43,7 @@ "run()": "c0406226", "setUp()": "0a9254e4" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/TestnetPopulate.s.sol\":\"Populate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960\",\"dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/OpenTaskWithRep.sol\":{\"keccak256\":\"0x202a7bde84758a6ca25f79e6f480a32b094e56bd969fc853c28d051b94f4bc1b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://388a2ac731290db796faa718c95dd5f45d8ff4fa8ff363c4eb735e745cc46522\",\"dweb:/ipfs/QmYgiDoBFa1goDvVUJY1KsPnkMnWXqnzoP6CYfP3x2Bzan\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/interactions/SocialQuizPlugin.sol\":{\"keccak256\":\"0x03980c11cf1126ecff28756735c093b6a0512cf3ffc1ae456025b1308260853c\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://2c345fb3ab8f7941c764ebc80f632b79ddc49cc7f6ca9c33bda007ed6b399506\",\"dweb:/ipfs/QmV6Jw78Q1kKvV84P9DZRPTR94jBxYHMcQeBZvWXZf67Yw\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OpenTaskPlugin.sol\":{\"keccak256\":\"0xd215215ab0ecc5dac6fb2ac9f8b4b9d2ffdbce053461ef9a6720c50098a2ad6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://228fdf34502528d92c0a7aaeebcd9d6a3a6a3b3b14625b7de4c554c2d3e149f7\",\"dweb:/ipfs/QmeCdkrTEJHWc6CtZkPBEWg6E1LxWWyHtfhtsSDYXRs2KS\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"script/DeploymentAddresses.sol\":{\"keccak256\":\"0xae35d63628778df04c361545a8038f397c6173eab523dd32abd991d05e33e014\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://8cc7bddfa72110b8d54c41b592ea99a41fc6fbf1460d0aa36e5a2425ea3d2e37\",\"dweb:/ipfs/QmTfeGXJQ2Cy9sKfvz7AyEtx5wX6ox3yEkFMF8FCwVnnKs\"]},\"script/TestnetPopulate.s.sol\":{\"keccak256\":\"0xdd74d170bc3f19496489c0da78f6b944f1d7850559f27a76be5b274d7c9dd2ea\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d9bb7e960b58dd5e044252a9fac8412fdb51a6c25845ce58b04981e10a184b59\",\"dweb:/ipfs/QmR9zKsM6F68tGAeULdyN4JAvpxWRPrskkooqmjA941eV4\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/TestnetPopulate.s.sol\":\"Populate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@opengsn/=node_modules/@opengsn/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/AutID.sol\":{\"keccak256\":\"0x0e20af3a960c3843c78703743c096ca0b1cb6d5e64c664a551b875db7ae0819d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25bf55995547350e9207341a067569ef374f26175e9a29f97e90197607b533a4\",\"dweb:/ipfs/QmRMV8f5eH3pyho22JSHH23RBCHDbwPRv95wSN63jB8JRU\"]},\"contracts/IAutID.sol\":{\"keccak256\":\"0xe2eaecaf2017084ba1fc713493c29ef8c85e5796203cad6d20d12055acecafd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17658f55c0557479867b68c3c4dbfa617414d041b11f2d69ec9e3d3eef1e7f81\",\"dweb:/ipfs/QmRRizYD42it6oRhJmUt4qKZauD3UGyduTBoiBnSbyux6W\"]},\"contracts/ILocalReputation.sol\":{\"keccak256\":\"0xd1d745df564f95be51240a5b0d033c36dba93ffb1812a57e6be07f0ddc2073a5\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://537c2ade0f14fb1f2b41492ec0cec29f9b0f02b922b930eb44276a412012cdba\",\"dweb:/ipfs/QmVqNtJ2K1mKjSK4AodCn2PsA3uGZ8M7j3pyKosFKYKLEg\"]},\"contracts/LocalReputation.sol\":{\"keccak256\":\"0x06a6a3cf4f44224490ef25985960b221835db464acb5b5f26452bb5bf04d79cf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65ef9160fdd906606b0c2c876b6dff4f04666d8d17821f1c7b23e23b32bda91c\",\"dweb:/ipfs/QmPfi6ev8b7S5rou9PJYkyzcXzdj468nTgdw3g9ES2zk5g\"]},\"contracts/components/abstracts/AutIDAddress.sol\":{\"keccak256\":\"0xce3b8dd27da5c32118349362289e3223cd18fc0b2b1c849ccaa76bc3df1906b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6c9d7b0d00d3177ce486f3d8c691dd5ee33d9f6b2b7da5ba9974e6ec6a8da0\",\"dweb:/ipfs/QmcCAx9yyQVdsRyfDKsTjGvMfFkcgSkb1stopez2h5nLSf\"]},\"contracts/components/abstracts/NovaArchetype.sol\":{\"keccak256\":\"0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509\",\"dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb\"]},\"contracts/components/abstracts/NovaCommitment.sol\":{\"keccak256\":\"0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca2a762123bf6ade4d56f94b8dda7977a6b0c7069bd9fc857d7f8693164f46d1\",\"dweb:/ipfs/QmUuGqCHJAXZ9e7aYeAQ47dBLRY45LQpp35k9QbfgdQxgu\"]},\"contracts/components/abstracts/NovaMarket.sol\":{\"keccak256\":\"0x973c59b9526743ccf224e634db75df702a6020657f57aced1304d2d5fa2bcf81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bec93758d54484279c252974f9c5453c168ceb12d7eba865b4d9b6e9f3b7ff\",\"dweb:/ipfs/QmaV4qCLxfEPA6k3uHmv4BcoB83NQV16dCa4nsVT12NF6A\"]},\"contracts/components/abstracts/NovaMembers.sol\":{\"keccak256\":\"0x159dc4af2faf7fd2b8323451218cb1f6b5c5a9a538e6511aa1e2f16cafa10a02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20b76a9db0ad4ed97750344d67eefb14f4aa3d4111522d48ac79b0f2635bbb7d\",\"dweb:/ipfs/QmQwFYeVhcRbiydaLsav6u5jQNXm2rh5ved1iUtc5ZikEQ\"]},\"contracts/components/abstracts/NovaMetadata.sol\":{\"keccak256\":\"0x91ce8066473b9178de8d81d861610d4dcf4ad519dfcf7b9d4b8cf997a7ee8006\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2160e245877deab52d1e169b23c79512f5da2dd1cef8c04a37ffba62caa780c\",\"dweb:/ipfs/QmfRBHV5hw4XeNuVaGLCfqa3fa7FVhAm1LYsBcrfcjT4o4\"]},\"contracts/components/abstracts/NovaModules.sol\":{\"keccak256\":\"0x032a1c079a447e23d6ab3ed045d24244cb2d0d516c4e7f578a22a983d4004e46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://100fd5cc3f68b3c1e412b37cf099df37df66abf4bea07a5d570a0cfd646a8b75\",\"dweb:/ipfs/QmdCmVrmmsLe8JyMwq2vazdE5kFhvym3Cbw22uLHxeBLd6\"]},\"contracts/components/abstracts/NovaUrls.sol\":{\"keccak256\":\"0xcb6ca9dfc6d6e4fae8f632bc0e03d4f9205f1378eb9507327eea0674ef741461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f2d4554faa28b454ea0e7e17b2bb11d55b39adb2dc34e9bbb5bca8aa618e531f\",\"dweb:/ipfs/QmTap7ifGoKwEW3j1ULBRhYNxiBCdJEQ23xYNRCt5WF8XU\"]},\"contracts/components/interfaces/get/IAutIDAddress.sol\":{\"keccak256\":\"0x6dfc95712c40c27f351443eaa7f5c27387159199563615a2803c301c6897addf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0341e3439c86a3c9c3fed517019154d37099e701a3a4227b82677f5e941e4fad\",\"dweb:/ipfs/QmYeh4HDXusjV3er1ESqq5HawDPWUxh1osBhp8L5vkwvU5\"]},\"contracts/components/interfaces/get/INovaAdmin.sol\":{\"keccak256\":\"0xd4f79d0a3e2a12192a492170f5aeb09b23827b31b3171d54fd0baaa328835a65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0fcd41470572e3c0196c036b3d698f883692ca1a7770438cd97e0e78e4e74175\",\"dweb:/ipfs/QmVge7dWMemFpNkoysCHCYLZ5UQ6bWaMqUZX6nhbaErg3x\"]},\"contracts/components/interfaces/get/INovaArchetype.sol\":{\"keccak256\":\"0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1\",\"dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN\"]},\"contracts/components/interfaces/get/INovaCommitment.sol\":{\"keccak256\":\"0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://250cd936edc46fb951e38c60c3e5f7836a359b269f7118641cdb0875a40787e6\",\"dweb:/ipfs/QmNmHCDKtTb2hgdXiZXHcJN1x11pSvmQxtPSKmofxzeuXp\"]},\"contracts/components/interfaces/get/INovaMarket.sol\":{\"keccak256\":\"0x1211367c405d0964b7770e1b222c0828c070813cc08a0fd6710057e571cf2e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0dc920cb73256b5c51489e075869880df235c53ed5b77fac435ed88837a8eb8\",\"dweb:/ipfs/QmQJ5ZEAojYNgNYWMDpxct8qLvL6GnuBo3VxSmvBEA5kvK\"]},\"contracts/components/interfaces/get/INovaMembership.sol\":{\"keccak256\":\"0xb6f7e62f1b1a14c601388a437559f50d52f95b467f80cf4220b3d931f81b9d81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46ea3d29fe4216b78887d3a901df76459f9e5df6e962abb2f25dab3052cefeb1\",\"dweb:/ipfs/QmePqzpztyUo1ra3kdE7EXoGfVWprkN95FNqFBVm8M9Lq7\"]},\"contracts/components/interfaces/get/INovaMetadata.sol\":{\"keccak256\":\"0x5dcb9e6bbd529df0925cb737b2a7be6d03678a36ee3852457fdd338d21e0fbae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e76849b907c19159c71e926d34622add1c07c5bbd0c3c06ab5a98651f86773cc\",\"dweb:/ipfs/QmYuQfWu1mS1d1MUX3h3vMqFq9SpA7pEK3cgW1PiLZh42H\"]},\"contracts/components/interfaces/get/INovaModules.sol\":{\"keccak256\":\"0xba9715453187dbb3e504ad054774e307c5b9e8794ffc49004b1375bc08962940\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acfeda4dfe9173e87ae80cb2ef88634607babdff03937a84311615ab922abd5\",\"dweb:/ipfs/QmavSqPMN56jHaUE6ZamowNCAjCBqGp6x3it9PDgRNRoWt\"]},\"contracts/components/interfaces/get/INovaUrls.sol\":{\"keccak256\":\"0xeefc294a7c63b0f793e59dfc627402a4fbc4da0e5b20665ae65d2d05786a21c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47a608c35b3ff2650a2e95d4670793070c44298c6777ad99ba5d63d6257dc392\",\"dweb:/ipfs/QmZGmxHQEbavXa6hXRmDo8fqc5afpAV17WZdXzyRGq4rd6\"]},\"contracts/components/interfaces/set/INovaAdminSet.sol\":{\"keccak256\":\"0x08947e59f21cf7322fec366747cb590560f5c7406ee2f203cf589921346514c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29ba537d39a1318744c75e371469d4e05cb899019835d4a9d63265a11e280346\",\"dweb:/ipfs/QmW8tKQLLkrpYhJ1PZump8WsgRximqth3xyqt1fiGUXArE\"]},\"contracts/components/interfaces/set/INovaMembershipSet.sol\":{\"keccak256\":\"0x71b80aa99b9f1dd143475db12973e1c93ddc6b8b952c84db6e36054a578437d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2466f40242a352bc71cc1e5a26fc2cc8245403b5875bffdcb3f05fc8f9cead1\",\"dweb:/ipfs/QmQa6LXDRSSbYd8YMBUqwy26Aq1EmauJnKhgp25LqEqxPK\"]},\"contracts/membershipCheckers/IMembershipChecker.sol\":{\"keccak256\":\"0x0db016237de654ad5c83738028d7a79515fb7afc629a3cfa068838a50efa6b13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc2313c05722a2e5a671bbb0f8ff9e6b012a72912e80c289bdb43a193e9ca82\",\"dweb:/ipfs/QmaPeuBMoAyeyp4fNxZxo9JWLaWCb93s279PdqXfYRY5fa\"]},\"contracts/modules/IModule.sol\":{\"keccak256\":\"0xa66f8f41a45bd68eddec5d3d047b6f91aebe01fa531d556d048638a4b54a5aef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c441222b7f4adb6ef505ee990417a842c9abb74bbc80213e85ce96ffbccb8bd\",\"dweb:/ipfs/QmdEtMxpfvvFGH7F8QQK17eR5GPkGVodiJa1NLXHZP1UtX\"]},\"contracts/modules/onboarding/OnboardingModule.sol\":{\"keccak256\":\"0x7f7644a379e6ec4441ad3e1f77b1c5a31ca33c81bf08a45ad783e5b970d7868c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d26895f83acd7ca1619cfbde8ec1f97e508134ca5962d0ea2e74675447e29a9c\",\"dweb:/ipfs/QmacM4ryLMbv471UmrpYgyonNfWAmswa5Vgqg3hw33ypW4\"]},\"contracts/modules/registry/IModuleRegistry.sol\":{\"keccak256\":\"0x02c6afa6f8bf0e47871119e9037267f11099baa70001713cc7fa7c78593fccf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09f4d8a606f7bcbf027766c062d0f9478c6719e8d2660bfdbb038ac74247d25b\",\"dweb:/ipfs/QmTPdzZi1PtfDJFWnmd7xK1VB7yMiJamEkd3RwRP1RTsYK\"]},\"contracts/modules/registry/ModuleRegistry.sol\":{\"keccak256\":\"0xef2472430049cb75e2c897e05d4f4411a1c38c0fbb90b3b8a824b408b2717efd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://171e6c4dab46fe75b13ab01b67145ede124d19e903fecc78d77584352cd26fbf\",\"dweb:/ipfs/QmSfsriLR1HJsrPaULMNafg227MXRrKkmunsUxSpEZ5iVA\"]},\"contracts/modules/tasks/TasksModule.sol\":{\"keccak256\":\"0x34573dcd9a9f49bab55d2ce948d281acaf8aad56bd2d41186d10b71b22f1cf79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d5b085333a8bff525f0c1e028e1faf6b47639761cd6d05d5bbb483af4e305\",\"dweb:/ipfs/QmRo5wGrBZQDhGPngCD4EXhWmzGifLTxDFDtsBdXnYR5Sd\"]},\"contracts/nova/Nova.sol\":{\"keccak256\":\"0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d\",\"dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX\"]},\"contracts/nova/NovaRegistry.sol\":{\"keccak256\":\"0xd583a106db9d9ebabb0495dab1dfced89e07cf93615afcc740531bf0c752e12e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4b7654736009ba08542c05ba516a4a13403196c303aecb37ef1521df6544a496\",\"dweb:/ipfs/QmZbLTgjmBom6wKmJxXT973CLqrWSL2GiqbJk39bCBKkBu\"]},\"contracts/nova/NovaUpgradeable.sol\":{\"keccak256\":\"0xe6e15b892e1d09edafd116d444de5d1620c15155aa4fbef4ee5b432b53973165\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://26ae0b2bb8a9b9d2cb364f3c11b90c1f98120520d91cbec3d5b7678574083193\",\"dweb:/ipfs/Qmd93rDue98S6aiQ4nsMB9k9TiiYq4F4iLtCvuw1cnNNpP\"]},\"contracts/nova/interfaces/INova.sol\":{\"keccak256\":\"0x1163d86aae9bda1d2e15d094382d5f9ae1cfd61006a1de799a156eb2abb1035d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbd6e2ada13ddcd7f3da761c992b278db9112d32cf3b0489a411f6e02c299424\",\"dweb:/ipfs/QmPVGUwarWiQioz7vwGqjvqbFFofRGZhbnPeKfVRTaD5Ng\"]},\"contracts/nova/interfaces/INovaRegistry.sol\":{\"keccak256\":\"0x16ffee55aede6ff282e4df56fda63adcc6bc41cf45fafa559823b276133dea47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256299b9f8fa90333637c1eda330350e2730a108cb5b4903a6ca4ba110c146a5\",\"dweb:/ipfs/QmcrahcDyY5hwBdZMYb1aYhwpK67p8jWqogJJaap8KHsfA\"]},\"contracts/plugins/IPlugin.sol\":{\"keccak256\":\"0x937a1d89b4d398fc23d347075213640df49b55cf3124cf2b0fda56ba3c123a8c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0db202a148a3c3d3eb4becca03d516d8fabee5e7666511d4ad3f5848e1418c14\",\"dweb:/ipfs/QmS58yeroa6GunYqRpahC5zfAD8LGtiqoA5mfJssXPZaiY\"]},\"contracts/plugins/PluginRegistry.sol\":{\"keccak256\":\"0xdce476662ba8a2abd0673bf07e72f571e839b7e089975ab5053a341ae3f49e23\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://488fecb371fec8e53cf4504ef907e71bca32602a4b9db3f5b443e1c628b515a4\",\"dweb:/ipfs/Qme89AswuvvdNEMr79QHREBzJSJTVv5eYkjaSQYKiJsPLy\"]},\"contracts/plugins/SimplePlugin.sol\":{\"keccak256\":\"0xf50285d44951a32971793778a9a0e08b5e3622a22e5d286ca67b930c2d270aee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ddb0923310a4f8e8e744326f3ed68b8c243aaea73b0d16dc5deb23b694c6050\",\"dweb:/ipfs/Qme9kzeqLgaCPzJ4WLFQ5gxNptNg84VMrmzybubbZRi8Nn\"]},\"contracts/plugins/interactions/InteractionModifier.sol\":{\"keccak256\":\"0x3967af159b0e4cc8ddeedadc7ff31e1ae4b5839a1c3b79e39acaba17285f37d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://90e98a1266c847e1ae5d6d20e2add63f18b58fdefe3265612e19e1a706102d14\",\"dweb:/ipfs/QmdzcXSrF9eJBWRyvKr5ZHPfZet3ud8x86yffdU7HDoqZ4\"]},\"contracts/plugins/interactions/OpenTaskWithRep.sol\":{\"keccak256\":\"0x202a7bde84758a6ca25f79e6f480a32b094e56bd969fc853c28d051b94f4bc1b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://388a2ac731290db796faa718c95dd5f45d8ff4fa8ff363c4eb735e745cc46522\",\"dweb:/ipfs/QmYgiDoBFa1goDvVUJY1KsPnkMnWXqnzoP6CYfP3x2Bzan\"]},\"contracts/plugins/interactions/SocialBotPlugin.sol\":{\"keccak256\":\"0x6c10b1ef0482889d10cafafe8cc19b47a672597c75d013b3a435413053e7fa3b\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://6c31c529c96292194062f8cf2c78b91deb38352ae76e3a9bd999aa2528a644be\",\"dweb:/ipfs/QmXDuS6Be4YxVuyfeevzYM5Cg8VXwEdsJR5oC7eeCJ7FHc\"]},\"contracts/plugins/interactions/SocialQuizPlugin.sol\":{\"keccak256\":\"0x03980c11cf1126ecff28756735c093b6a0512cf3ffc1ae456025b1308260853c\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://2c345fb3ab8f7941c764ebc80f632b79ddc49cc7f6ca9c33bda007ed6b399506\",\"dweb:/ipfs/QmV6Jw78Q1kKvV84P9DZRPTR94jBxYHMcQeBZvWXZf67Yw\"]},\"contracts/plugins/registry/IPluginRegistry.sol\":{\"keccak256\":\"0xff5b893ce647becae6630557caccd170661e91aeeceddafb4028824838ed999e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://92e23734937eebb585633017374b30613a672a15e73f6cc97391f66190e7f636\",\"dweb:/ipfs/QmWPbAoLaXsuTGSw7T5tGvkCSpAQLk8TZWZLoSkqKY8kx9\"]},\"contracts/plugins/tasks/OpenTaskPlugin.sol\":{\"keccak256\":\"0xd215215ab0ecc5dac6fb2ac9f8b4b9d2ffdbce053461ef9a6720c50098a2ad6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://228fdf34502528d92c0a7aaeebcd9d6a3a6a3b3b14625b7de4c554c2d3e149f7\",\"dweb:/ipfs/QmeCdkrTEJHWc6CtZkPBEWg6E1LxWWyHtfhtsSDYXRs2KS\"]},\"contracts/utils/IAllowlist.sol\":{\"keccak256\":\"0x038520880996ce7e634a4fbb71565f9a51fb985200e45429d30a1f443e7ca3a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://53804b595fb9a8a7c6cce45e836d660b74c2c76bd418ca9c985c289f7924dc7e\",\"dweb:/ipfs/QmQ2ZM4GDJLRBBed3T8YUhXp1EsUorZHTsvKZrGr57UA46\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xdbb593a36db1fde25c398f38312cfedc5b39c4bad1c65c2f58b7515c4dd76be8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc49471af92a1fd12686e2757ad0cbeb5bfe3cc95b8b6b5a5a91af83a8bcfd1\",\"dweb:/ipfs/QmcAQ5WesfLBUChNGuRMGQsDYf44q35Ln7Xb3jmyQgdESU\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xa0bac08b3d12d561fadf74c83c69f3ee54fe40e0c7766611766f6db70c202373\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292f1e61a3a60f9f4075d0b567f5123d159b0541b7787e4523597ab57331eb08\",\"dweb:/ipfs/QmatxDNPiYVtLap2nn4Hp3AxzkSzkdAQDirbc5QKCDfde5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xae16bc69f791ce957604e0e82ee719ffb807f9949a090d98ba6e51efa1412a0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826d95d5f2374c678927260e85245bc3abf5affacb4b95214fb8bf67c214b85\",\"dweb:/ipfs/QmaSqPxNNvgd34HZFgnsmMimWzyVwnBeDWaBiUTnMf4Z5S\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x597ec6514703c8554e1d3d2952e0abdd6020cc133ec9844250ded37dcbb3a1a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b5c70198450103012fd6953d9572a43bae324aaa7c7d028a83693ae1f65a4f9\",\"dweb:/ipfs/QmdLfoAdh3fKiDFt7cT4jD5aQDuYJ95vC8VoiaFn5aTBJG\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"node_modules/@opengsn/contracts/src/ERC2771Recipient.sol\":{\"keccak256\":\"0x77b3307c570c582969ea5466f296898ab9fea1f8b61b30f1c73345fe047a89a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2a2f0642c775f89615b1717ee3db50cf3732f59bc66032b06fee6c9018e308b\",\"dweb:/ipfs/QmRtsTQeTYk6muGrU7Qurjw6FeUVUBBXXhcUQNWvCoJysT\"]},\"node_modules/@opengsn/contracts/src/interfaces/IERC2771Recipient.sol\":{\"keccak256\":\"0xc762358681e3494519a5fff2f7e3f0f74f9c9f395f23b00cdfb45e0fb9ef8170\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68680e24b98e554eb64e724a6ddab30827d5091ae36812e2a4e1b1914481ca4c\",\"dweb:/ipfs/QmR9TVoucNzaeiAgSu1miqoQ4SZAcMCB2yRd32YuEXVWLB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x5331c8909221d9f9f3851cfadd5959d0873413a2c27e30e0f2fa234158c1c6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31c7d52f47a9174e236c0402654f42c16516c58c6851862f3bcb1b440b873498\",\"dweb:/ipfs/QmZQqiofa8jPJCCAfWyjNnBuoGXrR56Ct4HyW4ugRWfvCb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x016298e66a5810253c6c905e61966bb31c8775c3f3517bf946ff56ee31d6c005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1723de5ae414f210db039b19e6487c19c2d643483c9be7c445cf481a80c199d2\",\"dweb:/ipfs/QmcBLbmPdZsNngYhA1KDadNUqQZoGACytFWuUH74RC4AXC\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0xbd5c6f8268a1d477f6a746ebedaf7fbcf412186f0c1c54ee104547cfb5e18edd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2723993f3fca4c29408c8a3084ab15ecf54930b58d4888a51b99a020ffe4c897\",\"dweb:/ipfs/QmdTvxnqkMyhZNFXLeHNNbuRPZcY1N4iJhm7YkQdUWVk4r\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xea5339a7fff0ed42b45be56a88efdd0b2ddde9fa480dc99fef9a6a4c5b776863\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841619682637df5579b4c396d281d6c55b26f1b1acce1d0ab67bead5e39cf60c\",\"dweb:/ipfs/QmNRtuKp43ZHJwswdyT3GivY4fDMvz3cxBe1FfDthG1JGj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x85439e74ab467b6a23d45d32bdc9506cbc3760320289afd605f11638c4138e95\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e18633c182e445895e5a70f9e79f2558d0f6eac86767fd1d90552177df2955c\",\"dweb:/ipfs/QmagUFUJbiNGRGGajg9CF5LPuopc44XSCtcCaYvQasBuX9\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x6ec71aef5659f3f74011169948d2fcda8c6599be5bb38f986380a8737f96cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://362f12aebd1022d643235e6a7fa6ccfb38c13f3a0d1b006d5d1aea51af4bb852\",\"dweb:/ipfs/QmSUQ7pM4UnBawMfP2Di8EqawxaoU195DgsSLxHejvSpPz\"]},\"node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x5c3501c1b70fcfc64417e9da5cc6a3597191baa354781e508e1e14cc0e50a038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899c87a849a94c848818d0afede6961d2c87665af1dd23a5c983e78981a65691\",\"dweb:/ipfs/QmUeFDffQRDmX87FX3MRxN3bmpUxDTWpWLwPJzeAJ3yF6H\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"node_modules/@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"script/DeploymentAddresses.sol\":{\"keccak256\":\"0xae35d63628778df04c361545a8038f397c6173eab523dd32abd991d05e33e014\",\"license\":\"UNLICENCED\",\"urls\":[\"bzz-raw://8cc7bddfa72110b8d54c41b592ea99a41fc6fbf1460d0aa36e5a2425ea3d2e37\",\"dweb:/ipfs/QmTfeGXJQ2Cy9sKfvz7AyEtx5wX6ox3yEkFMF8FCwVnnKs\"]},\"script/TestnetPopulate.s.sol\":{\"keccak256\":\"0xdd74d170bc3f19496489c0da78f6b944f1d7850559f27a76be5b274d7c9dd2ea\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d9bb7e960b58dd5e044252a9fac8412fdb51a6c25845ce58b04981e10a184b59\",\"dweb:/ipfs/QmR9zKsM6F68tGAeULdyN4JAvpxWRPrskkooqmjA941eV4\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -150,6 +150,14 @@ ], "license": "MIT" }, + "contracts/components/abstracts/NovaArchetype.sol": { + "keccak256": "0xc7e6fa9211fda9590f8d3680e33850435e3d8d6bcb910cc6b46276b592b42d09", + "urls": [ + "bzz-raw://ad3ac7d76fe8b553a03b622c51f8ad7fbc29b9272236cbf2ee044c3634be5509", + "dweb:/ipfs/QmQr8JHPrSHPtoW5DBBjgs6hwzQ7ZhHT2tBouqSstCkvhb" + ], + "license": "UNLICENSED" + }, "contracts/components/abstracts/NovaCommitment.sol": { "keccak256": "0xb286340120f654a99d2db09a63e5a71df9d445b74435e5022aee84df8ec3e538", "urls": [ @@ -214,6 +222,14 @@ ], "license": "MIT" }, + "contracts/components/interfaces/get/INovaArchetype.sol": { + "keccak256": "0xa0066eb8f158380068a1b341cd425d96b20271f0331e0a4dd667d1fc8243ecd9", + "urls": [ + "bzz-raw://b47259ce11b788e213faec8d2eeb2c01535f698a2da000672d4a1062ab8bc0c1", + "dweb:/ipfs/QmNMbhAbM4xxEAKHRQdsnDTpbApCqt1GGbhzfyZUCTNSQN" + ], + "license": "UNLICENSED" + }, "contracts/components/interfaces/get/INovaCommitment.sol": { "keccak256": "0xdbd90eae4e7d04cbc27bfce353b93e5b4ce4440e62347a634f76533ce01ab45c", "urls": [ @@ -327,10 +343,10 @@ "license": "MIT" }, "contracts/nova/Nova.sol": { - "keccak256": "0x026db98d9525ccdc75329a169d39f24907c1eca4adc65550edabd5bc5551ad2c", + "keccak256": "0x9a86f2a15eb908f9ec8843913367a2256b3d570c71881375f558f1e80add29c1", "urls": [ - "bzz-raw://e753a9e5f978696f4dca5860fe38745b389485f03a3614d2040b41dfeed6b960", - "dweb:/ipfs/QmZjpGhZ9MM31qGVUHjARvY7S8QaGzjE3Ayzkmxrt6aNAp" + "bzz-raw://68bfafdab4be9510788a4e42ad6d2f32b7f2dc1e0204a25db2ecc701a2cd084d", + "dweb:/ipfs/QmUWvz3AmiqzuU7CFAJpc1y6cyg1gemVkqykjicoBpxVDX" ], "license": "MIT" }, @@ -843,106 +859,106 @@ }, "ast": { "absolutePath": "script/TestnetPopulate.s.sol", - "id": 68938, + "id": 69724, "exportedSymbols": { "AutID": [ 1016 ], "DeploymentAddresses": [ - 68382 + 69168 ], "IAutID": [ 1194 ], "IModuleRegistry": [ - 4295 + 5018 ], "INova": [ - 5673 + 6424 ], "INovaRegistry": [ - 5711 + 6462 ], "IPluginRegistry": [ - 8823 + 9574 ], "LocalReputation": [ 2915 ], "ModuleRegistry": [ - 4488 + 5211 ], "Nova": [ - 4940 + 5691 ], "NovaRegistry": [ - 5370 + 6121 ], "OpenTaskWithRep": [ - 7056 + 7807 ], "PluginRegistry": [ - 6344 + 7095 ], "Populate": [ - 68937 + 69723 ], "Script": [ - 12845 + 13596 ], "ScriptBase": [ - 12806 + 13557 ], "SocialBotPlugin": [ - 7390 + 8141 ], "SocialQuizPlugin": [ - 7405 + 8156 ], "StdChains": [ - 15001 + 15752 ], "StdCheatsSafe": [ - 17061 + 17812 ], "StdStorage": [ - 18929 + 19680 ], "StdStyle": [ - 21779 + 22530 ], "StdUtils": [ - 22627 + 23378 ], "VmSafe": [ - 23899 + 24650 ], "console": [ - 32435 + 33186 ], "console2": [ - 40560 + 41311 ], "safeconsole": [ - 53798 + 54549 ], "stdJson": [ - 18755 + 19506 ], "stdMath": [ - 18897 + 19648 ], "stdStorageSafe": [ - 19977 + 20728 ] }, "nodeType": "SourceUnit", - "src": "39:5453:111", + "src": "39:5453:124", "nodes": [ { - "id": 68384, + "id": 69170, "nodeType": "PragmaDirective", - "src": "39:23:111", + "src": "39:23:124", "nodes": [], "literals": [ "solidity", @@ -951,24 +967,24 @@ ] }, { - "id": 68386, + "id": 69172, "nodeType": "ImportDirective", - "src": "64:48:111", + "src": "64:48:124", "nodes": [], "absolutePath": "contracts/nova/Nova.sol", "file": "../contracts/nova/Nova.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 4941, + "scope": 69724, + "sourceUnit": 5692, "symbolAliases": [ { "foreign": { - "id": 68385, + "id": 69171, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4940, - "src": "72:4:111", + "referencedDeclaration": 5691, + "src": "72:4:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -977,36 +993,36 @@ "unitAlias": "" }, { - "id": 68389, + "id": 69175, "nodeType": "ImportDirective", - "src": "113:79:111", + "src": "113:79:124", "nodes": [], "absolutePath": "contracts/nova/NovaRegistry.sol", "file": "../contracts/nova/NovaRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 5371, + "scope": 69724, + "sourceUnit": 6122, "symbolAliases": [ { "foreign": { - "id": 68387, + "id": 69173, "name": "NovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5370, - "src": "121:12:111", + "referencedDeclaration": 6121, + "src": "121:12:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 68388, + "id": 69174, "name": "INovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5711, - "src": "135:13:111", + "referencedDeclaration": 6462, + "src": "135:13:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1015,36 +1031,36 @@ "unitAlias": "" }, { - "id": 68392, + "id": 69178, "nodeType": "ImportDirective", - "src": "193:97:111", + "src": "193:97:124", "nodes": [], "absolutePath": "contracts/modules/registry/ModuleRegistry.sol", "file": "../contracts/modules/registry/ModuleRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 4489, + "scope": 69724, + "sourceUnit": 5212, "symbolAliases": [ { "foreign": { - "id": 68390, + "id": 69176, "name": "ModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4488, - "src": "201:14:111", + "referencedDeclaration": 5211, + "src": "201:14:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 68391, + "id": 69177, "name": "IModuleRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4295, - "src": "217:15:111", + "referencedDeclaration": 5018, + "src": "217:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1053,36 +1069,36 @@ "unitAlias": "" }, { - "id": 68395, + "id": 69181, "nodeType": "ImportDirective", - "src": "291:88:111", + "src": "291:88:124", "nodes": [], "absolutePath": "contracts/plugins/PluginRegistry.sol", "file": "../contracts/plugins/PluginRegistry.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 6345, + "scope": 69724, + "sourceUnit": 7096, "symbolAliases": [ { "foreign": { - "id": 68393, + "id": 69179, "name": "PluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6344, - "src": "299:14:111", + "referencedDeclaration": 7095, + "src": "299:14:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 68394, + "id": 69180, "name": "IPluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8823, - "src": "315:15:111", + "referencedDeclaration": 9574, + "src": "315:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1091,36 +1107,36 @@ "unitAlias": "" }, { - "id": 68398, + "id": 69184, "nodeType": "ImportDirective", - "src": "380:53:111", + "src": "380:53:124", "nodes": [], "absolutePath": "contracts/AutID.sol", "file": "../contracts/AutID.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, + "scope": 69724, "sourceUnit": 1017, "symbolAliases": [ { "foreign": { - "id": 68396, + "id": 69182, "name": "AutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, - "src": "388:5:111", + "src": "388:5:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 68397, + "id": 69183, "name": "IAutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, - "src": "395:6:111", + "src": "395:6:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1129,24 +1145,24 @@ "unitAlias": "" }, { - "id": 68400, + "id": 69186, "nodeType": "ImportDirective", - "src": "434:61:111", + "src": "434:61:124", "nodes": [], "absolutePath": "contracts/nova/interfaces/INova.sol", "file": "../contracts/nova/interfaces/INova.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 5674, + "scope": 69724, + "sourceUnit": 6425, "symbolAliases": [ { "foreign": { - "id": 68399, + "id": 69185, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "442:5:111", + "referencedDeclaration": 6424, + "src": "442:5:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1155,24 +1171,24 @@ "unitAlias": "" }, { - "id": 68402, + "id": 69188, "nodeType": "ImportDirective", - "src": "496:65:111", + "src": "496:65:124", "nodes": [], "absolutePath": "contracts/LocalReputation.sol", "file": "../contracts/LocalReputation.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, + "scope": 69724, "sourceUnit": 2916, "symbolAliases": [ { "foreign": { - "id": 68401, + "id": 69187, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "504:15:111", + "src": "504:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1181,24 +1197,24 @@ "unitAlias": "" }, { - "id": 68404, + "id": 69190, "nodeType": "ImportDirective", - "src": "563:86:111", + "src": "563:86:124", "nodes": [], "absolutePath": "contracts/plugins/interactions/OpenTaskWithRep.sol", "file": "../contracts/plugins/interactions/OpenTaskWithRep.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 7057, + "scope": 69724, + "sourceUnit": 7808, "symbolAliases": [ { "foreign": { - "id": 68403, + "id": 69189, "name": "OpenTaskWithRep", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7056, - "src": "571:15:111", + "referencedDeclaration": 7807, + "src": "571:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1207,24 +1223,24 @@ "unitAlias": "" }, { - "id": 68406, + "id": 69192, "nodeType": "ImportDirective", - "src": "650:86:111", + "src": "650:86:124", "nodes": [], "absolutePath": "contracts/plugins/interactions/SocialBotPlugin.sol", "file": "../contracts/plugins/interactions/SocialBotPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 7391, + "scope": 69724, + "sourceUnit": 8142, "symbolAliases": [ { "foreign": { - "id": 68405, + "id": 69191, "name": "SocialBotPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7390, - "src": "658:15:111", + "referencedDeclaration": 8141, + "src": "658:15:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1233,24 +1249,24 @@ "unitAlias": "" }, { - "id": 68408, + "id": 69194, "nodeType": "ImportDirective", - "src": "737:88:111", + "src": "737:88:124", "nodes": [], "absolutePath": "contracts/plugins/interactions/SocialQuizPlugin.sol", "file": "../contracts/plugins/interactions/SocialQuizPlugin.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 7406, + "scope": 69724, + "sourceUnit": 8157, "symbolAliases": [ { "foreign": { - "id": 68407, + "id": 69193, "name": "SocialQuizPlugin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7405, - "src": "745:16:111", + "referencedDeclaration": 8156, + "src": "745:16:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1259,24 +1275,24 @@ "unitAlias": "" }, { - "id": 68410, + "id": 69196, "nodeType": "ImportDirective", - "src": "827:62:111", + "src": "827:62:124", "nodes": [], "absolutePath": "script/DeploymentAddresses.sol", "file": "./DeploymentAddresses.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 68383, + "scope": 69724, + "sourceUnit": 69169, "symbolAliases": [ { "foreign": { - "id": 68409, + "id": 69195, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "835:19:111", + "referencedDeclaration": 69168, + "src": "835:19:124", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1285,147 +1301,147 @@ "unitAlias": "" }, { - "id": 68411, + "id": 69197, "nodeType": "ImportDirective", - "src": "891:30:111", + "src": "891:30:124", "nodes": [], "absolutePath": "lib/forge-std/src/Script.sol", "file": "forge-std/Script.sol", "nameLocation": "-1:-1:-1", - "scope": 68938, - "sourceUnit": 12846, + "scope": 69724, + "sourceUnit": 13597, "symbolAliases": [], "unitAlias": "" }, { - "id": 68937, + "id": 69723, "nodeType": "ContractDefinition", - "src": "923:4568:111", + "src": "923:4568:124", "nodes": [ { - "id": 68416, + "id": 69202, "nodeType": "VariableDeclaration", - "src": "957:10:111", + "src": "957:10:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "NovaL", - "nameLocation": "962:5:111", - "scope": 68937, + "nameLocation": "962:5:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" }, "typeName": { - "id": 68415, + "id": 69201, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68414, + "id": 69200, "name": "Nova", "nameLocations": [ - "957:4:111" + "957:4:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4940, - "src": "957:4:111" + "referencedDeclaration": 5691, + "src": "957:4:124" }, - "referencedDeclaration": 4940, - "src": "957:4:111", + "referencedDeclaration": 5691, + "src": "957:4:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } }, "visibility": "internal" }, { - "id": 68419, + "id": 69205, "nodeType": "VariableDeclaration", - "src": "973:18:111", + "src": "973:18:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "NovaR", - "nameLocation": "986:5:111", - "scope": 68937, + "nameLocation": "986:5:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" }, "typeName": { - "id": 68418, + "id": 69204, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68417, + "id": 69203, "name": "NovaRegistry", "nameLocations": [ - "973:12:111" + "973:12:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5370, - "src": "973:12:111" + "referencedDeclaration": 6121, + "src": "973:12:124" }, - "referencedDeclaration": 5370, - "src": "973:12:111", + "referencedDeclaration": 6121, + "src": "973:12:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } }, "visibility": "internal" }, { - "id": 68422, + "id": 69208, "nodeType": "VariableDeclaration", - "src": "997:22:111", + "src": "997:22:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "PlugReg", - "nameLocation": "1012:7:111", - "scope": 68937, + "nameLocation": "1012:7:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" }, "typeName": { - "id": 68421, + "id": 69207, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68420, + "id": 69206, "name": "PluginRegistry", "nameLocations": [ - "997:14:111" + "997:14:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6344, - "src": "997:14:111" + "referencedDeclaration": 7095, + "src": "997:14:124" }, - "referencedDeclaration": 6344, - "src": "997:14:111", + "referencedDeclaration": 7095, + "src": "997:14:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, "visibility": "internal" }, { - "id": 68425, + "id": 69211, "nodeType": "VariableDeclaration", - "src": "1025:9:111", + "src": "1025:9:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "aID", - "nameLocation": "1031:3:111", - "scope": 68937, + "nameLocation": "1031:3:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1433,20 +1449,20 @@ "typeString": "contract AutID" }, "typeName": { - "id": 68424, + "id": 69210, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68423, + "id": 69209, "name": "AutID", "nameLocations": [ - "1025:5:111" + "1025:5:124" ], "nodeType": "IdentifierPath", "referencedDeclaration": 1016, - "src": "1025:5:111" + "src": "1025:5:124" }, "referencedDeclaration": 1016, - "src": "1025:5:111", + "src": "1025:5:124", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" @@ -1455,15 +1471,15 @@ "visibility": "internal" }, { - "id": 68428, + "id": 69214, "nodeType": "VariableDeclaration", - "src": "1040:18:111", + "src": "1040:18:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "LR", - "nameLocation": "1056:2:111", - "scope": 68937, + "nameLocation": "1056:2:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1471,20 +1487,20 @@ "typeString": "contract LocalReputation" }, "typeName": { - "id": 68427, + "id": 69213, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68426, + "id": 69212, "name": "LocalReputation", "nameLocations": [ - "1040:15:111" + "1040:15:124" ], "nodeType": "IdentifierPath", "referencedDeclaration": 2915, - "src": "1040:15:111" + "src": "1040:15:124" }, "referencedDeclaration": 2915, - "src": "1040:15:111", + "src": "1040:15:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -1493,167 +1509,167 @@ "visibility": "internal" }, { - "id": 68431, + "id": 69217, "nodeType": "VariableDeclaration", - "src": "1064:26:111", + "src": "1064:26:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "OpenTaskWR", - "nameLocation": "1080:10:111", - "scope": 68937, + "nameLocation": "1080:10:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" }, "typeName": { - "id": 68430, + "id": 69216, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68429, + "id": 69215, "name": "OpenTaskWithRep", "nameLocations": [ - "1064:15:111" + "1064:15:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7056, - "src": "1064:15:111" + "referencedDeclaration": 7807, + "src": "1064:15:124" }, - "referencedDeclaration": 7056, - "src": "1064:15:111", + "referencedDeclaration": 7807, + "src": "1064:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } }, "visibility": "internal" }, { - "id": 68434, + "id": 69220, "nodeType": "VariableDeclaration", - "src": "1096:24:111", + "src": "1096:24:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "SBPlugin", - "nameLocation": "1112:8:111", - "scope": 68937, + "nameLocation": "1112:8:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" }, "typeName": { - "id": 68433, + "id": 69219, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68432, + "id": 69218, "name": "SocialBotPlugin", "nameLocations": [ - "1096:15:111" + "1096:15:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "1096:15:111" + "referencedDeclaration": 8141, + "src": "1096:15:124" }, - "referencedDeclaration": 7390, - "src": "1096:15:111", + "referencedDeclaration": 8141, + "src": "1096:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } }, "visibility": "internal" }, { - "id": 68437, + "id": 69223, "nodeType": "VariableDeclaration", - "src": "1126:25:111", + "src": "1126:25:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "SQPlugin", - "nameLocation": "1143:8:111", - "scope": 68937, + "nameLocation": "1143:8:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialQuizPlugin_$7405", + "typeIdentifier": "t_contract$_SocialQuizPlugin_$8156", "typeString": "contract SocialQuizPlugin" }, "typeName": { - "id": 68436, + "id": 69222, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68435, + "id": 69221, "name": "SocialQuizPlugin", "nameLocations": [ - "1126:16:111" + "1126:16:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7405, - "src": "1126:16:111" + "referencedDeclaration": 8156, + "src": "1126:16:124" }, - "referencedDeclaration": 7405, - "src": "1126:16:111", + "referencedDeclaration": 8156, + "src": "1126:16:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialQuizPlugin_$7405", + "typeIdentifier": "t_contract$_SocialQuizPlugin_$8156", "typeString": "contract SocialQuizPlugin" } }, "visibility": "internal" }, { - "id": 68440, + "id": 69226, "nodeType": "VariableDeclaration", - "src": "1158:11:111", + "src": "1158:11:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "Nova1", - "nameLocation": "1164:5:111", - "scope": 68937, + "nameLocation": "1164:5:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" }, "typeName": { - "id": 68439, + "id": 69225, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68438, + "id": 69224, "name": "INova", "nameLocations": [ - "1158:5:111" + "1158:5:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5673, - "src": "1158:5:111" + "referencedDeclaration": 6424, + "src": "1158:5:124" }, - "referencedDeclaration": 5673, - "src": "1158:5:111", + "referencedDeclaration": 6424, + "src": "1158:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, "visibility": "internal" }, { - "id": 68449, + "id": 69235, "nodeType": "VariableDeclaration", - "src": "1176:55:111", + "src": "1176:55:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "deployer", - "nameLocation": "1184:8:111", - "scope": 68937, + "nameLocation": "1184:8:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1661,10 +1677,10 @@ "typeString": "address" }, "typeName": { - "id": 68441, + "id": 69227, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1176:7:111", + "src": "1176:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1677,14 +1693,14 @@ "arguments": [ { "hexValue": "50564b5f4131", - "id": 68446, + "id": 69232, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1221:8:111", + "src": "1221:8:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c90e4c31eb3f5711ec52480a807196fe521a97d0d7706bb93b0b3ad8489d3d37", "typeString": "literal_string \"PVK_A1\"" @@ -1700,33 +1716,33 @@ } ], "expression": { - "id": 68444, + "id": 69230, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1210:2:111", + "referencedDeclaration": 13541, + "src": "1210:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68445, + "id": 69231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1213:7:111", + "memberLocation": "1213:7:124", "memberName": "envUint", "nodeType": "MemberAccess", - "referencedDeclaration": 22864, - "src": "1210:10:111", + "referencedDeclaration": 23615, + "src": "1210:10:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) view external returns (uint256)" } }, - "id": 68447, + "id": 69233, "isConstant": false, "isLValue": false, "isPure": false, @@ -1735,7 +1751,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1210:20:111", + "src": "1210:20:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1751,33 +1767,33 @@ } ], "expression": { - "id": 68442, + "id": 69228, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1195:2:111", + "referencedDeclaration": 13541, + "src": "1195:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68443, + "id": 69229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1198:11:111", + "memberLocation": "1198:11:124", "memberName": "rememberKey", "nodeType": "MemberAccess", - "referencedDeclaration": 23464, - "src": "1195:14:111", + "referencedDeclaration": 24215, + "src": "1195:14:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) external returns (address)" } }, - "id": 68448, + "id": 69234, "isConstant": false, "isLValue": false, "isPure": false, @@ -1786,7 +1802,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1195:36:111", + "src": "1195:36:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -1796,15 +1812,15 @@ "visibility": "internal" }, { - "id": 68451, + "id": 69237, "nodeType": "VariableDeclaration", - "src": "1238:15:111", + "src": "1238:15:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "chainID", - "nameLocation": "1246:7:111", - "scope": 68937, + "nameLocation": "1246:7:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1812,10 +1828,10 @@ "typeString": "uint256" }, "typeName": { - "id": 68450, + "id": 69236, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1238:7:111", + "src": "1238:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1824,15 +1840,15 @@ "visibility": "internal" }, { - "id": 68453, + "id": 69239, "nodeType": "VariableDeclaration", - "src": "1259:30:111", + "src": "1259:30:124", "nodes": [], "constant": false, "mutability": "mutable", "name": "biconomyTrustedForward", - "nameLocation": "1267:22:111", - "scope": 68937, + "nameLocation": "1267:22:124", + "scope": 69723, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1840,10 +1856,10 @@ "typeString": "address" }, "typeName": { - "id": 68452, + "id": 69238, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1259:7:111", + "src": "1259:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1853,30 +1869,30 @@ "visibility": "internal" }, { - "id": 68584, + "id": 69370, "nodeType": "FunctionDefinition", - "src": "1296:954:111", + "src": "1296:954:124", "nodes": [], "body": { - "id": 68583, + "id": 69369, "nodeType": "Block", - "src": "1320:930:111", + "src": "1320:930:124", "nodes": [], "statements": [ { "expression": { - "id": 68459, + "id": 69245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68456, + "id": 69242, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1330:7:111", + "referencedDeclaration": 69237, + "src": "1330:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1886,40 +1902,40 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 68457, + "id": 69243, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "1340:5:111", + "src": "1340:5:124", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 68458, + "id": 69244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1346:7:111", + "memberLocation": "1346:7:124", "memberName": "chainid", "nodeType": "MemberAccess", - "src": "1340:13:111", + "src": "1340:13:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1330:23:111", + "src": "1330:23:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68460, + "id": 69246, "nodeType": "ExpressionStatement", - "src": "1330:23:111" + "src": "1330:23:124" }, { "condition": { @@ -1927,18 +1943,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68463, + "id": 69249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68461, + "id": 69247, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1367:7:111", + "referencedDeclaration": 69237, + "src": "1367:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1948,43 +1964,43 @@ "operator": "==", "rightExpression": { "hexValue": "3830303031", - "id": 68462, + "id": 69248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1378:5:111", + "src": "1378:5:124", "typeDescriptions": { "typeIdentifier": "t_rational_80001_by_1", "typeString": "int_const 80001" }, "value": "80001" }, - "src": "1367:16:111", + "src": "1367:16:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 68468, + "id": 69254, "nodeType": "IfStatement", - "src": "1363:89:111", + "src": "1363:89:124", "trueBody": { "expression": { - "id": 68466, + "id": 69252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68464, + "id": 69250, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68453, - "src": "1385:22:111", + "referencedDeclaration": 69239, + "src": "1385:22:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1994,29 +2010,29 @@ "operator": "=", "rightHandSide": { "hexValue": "307836393031353931324141333337323062383432644344366143303539456436323346323864396637", - "id": 68465, + "id": 69251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:42:111", + "src": "1410:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x69015912AA33720b842dCD6aC059Ed623F28d9f7" }, - "src": "1385:67:111", + "src": "1385:67:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68467, + "id": 69253, "nodeType": "ExpressionStatement", - "src": "1385:67:111" + "src": "1385:67:124" } }, { @@ -2025,18 +2041,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68471, + "id": 69257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68469, + "id": 69255, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1466:7:111", + "referencedDeclaration": 69237, + "src": "1466:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2046,43 +2062,43 @@ "operator": "==", "rightExpression": { "hexValue": "35", - "id": 68470, + "id": 69256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1477:1:111", + "src": "1477:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, - "src": "1466:12:111", + "src": "1466:12:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 68476, + "id": 69262, "nodeType": "IfStatement", - "src": "1462:85:111", + "src": "1462:85:124", "trueBody": { "expression": { - "id": 68474, + "id": 69260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68472, + "id": 69258, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68453, - "src": "1480:22:111", + "referencedDeclaration": 69239, + "src": "1480:22:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2092,29 +2108,29 @@ "operator": "=", "rightHandSide": { "hexValue": "307845303431363038393232643036613446323643306434633237643862434430316461663166373932", - "id": 68473, + "id": 69259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1505:42:111", + "src": "1505:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0xE041608922d06a4F26C0d4c27d8bCD01daf1f792" }, - "src": "1480:67:111", + "src": "1480:67:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68475, + "id": 69261, "nodeType": "ExpressionStatement", - "src": "1480:67:111" + "src": "1480:67:124" } }, { @@ -2123,18 +2139,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 68482, + "id": 69268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68477, + "id": 69263, "name": "biconomyTrustedForward", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68453, - "src": "1562:22:111", + "referencedDeclaration": 69239, + "src": "1562:22:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2146,14 +2162,14 @@ "arguments": [ { "hexValue": "30", - "id": 68480, + "id": 69266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1596:1:111", + "src": "1596:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -2168,26 +2184,26 @@ "typeString": "int_const 0" } ], - "id": 68479, + "id": 69265, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1588:7:111", + "src": "1588:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68478, + "id": 69264, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1588:7:111", + "src": "1588:7:124", "typeDescriptions": {} } }, - "id": 68481, + "id": 69267, "isConstant": false, "isLValue": false, "isPure": true, @@ -2196,35 +2212,35 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1588:10:111", + "src": "1588:10:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1562:36:111", + "src": "1562:36:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 68487, + "id": 69273, "nodeType": "IfStatement", - "src": "1558:71:111", + "src": "1558:71:124", "trueBody": { "expression": { "arguments": [ { "hexValue": "556e737570706f7274656420546573746e6574", - "id": 68484, + "id": 69270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1607:21:111", + "src": "1607:21:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1605b9e85f769f64b09f91e96ef4d8fe25e13143dd05020177cb41dbd1e160b4", "typeString": "literal_string \"Unsupported Testnet\"" @@ -2239,7 +2255,7 @@ "typeString": "literal_string \"Unsupported Testnet\"" } ], - "id": 68483, + "id": 69269, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -2247,13 +2263,13 @@ -19 ], "referencedDeclaration": -19, - "src": "1600:6:111", + "src": "1600:6:124", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 68485, + "id": 69271, "isConstant": false, "isLValue": false, "isPure": false, @@ -2262,32 +2278,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1600:29:111", + "src": "1600:29:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68486, + "id": 69272, "nodeType": "ExpressionStatement", - "src": "1600:29:111" + "src": "1600:29:124" } }, { "expression": { - "id": 68495, + "id": 69281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68488, + "id": 69274, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68425, - "src": "1640:3:111", + "referencedDeclaration": 69211, + "src": "1640:3:124", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" @@ -2300,12 +2316,12 @@ { "arguments": [ { - "id": 68492, + "id": 69278, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1682:7:111", + "referencedDeclaration": 69237, + "src": "1682:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2320,33 +2336,33 @@ } ], "expression": { - "id": 68490, + "id": 69276, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "1652:19:111", + "referencedDeclaration": 69168, + "src": "1652:19:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$68382_$", + "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$69168_$", "typeString": "type(library DeploymentAddresses)" } }, - "id": 68491, + "id": 69277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1672:9:111", + "memberLocation": "1672:9:124", "memberName": "autIDAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 68183, - "src": "1652:29:111", + "referencedDeclaration": 68969, + "src": "1652:29:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure returns (address)" } }, - "id": 68493, + "id": 69279, "isConstant": false, "isLValue": false, "isPure": false, @@ -2355,7 +2371,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1652:38:111", + "src": "1652:38:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2370,18 +2386,18 @@ "typeString": "address" } ], - "id": 68489, + "id": 69275, "name": "AutID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, - "src": "1646:5:111", + "src": "1646:5:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AutID_$1016_$", "typeString": "type(contract AutID)" } }, - "id": 68494, + "id": 69280, "isConstant": false, "isLValue": false, "isPure": false, @@ -2390,22 +2406,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1646:45:111", + "src": "1646:45:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" } }, - "src": "1640:51:111", + "src": "1640:51:124", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" } }, - "id": 68496, + "id": 69282, "nodeType": "ExpressionStatement", - "src": "1640:51:111" + "src": "1640:51:124" }, { "expression": { @@ -2413,12 +2429,12 @@ { "arguments": [ { - "id": 68502, + "id": 69288, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68425, - "src": "1718:3:111", + "referencedDeclaration": 69211, + "src": "1718:3:124", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" @@ -2432,26 +2448,26 @@ "typeString": "contract AutID" } ], - "id": 68501, + "id": 69287, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1710:7:111", + "src": "1710:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68500, + "id": 69286, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1710:7:111", + "src": "1710:7:124", "typeDescriptions": {} } }, - "id": 68503, + "id": 69289, "isConstant": false, "isLValue": false, "isPure": false, @@ -2460,7 +2476,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1710:12:111", + "src": "1710:12:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2469,14 +2485,14 @@ }, { "hexValue": "4175744944", - "id": 68504, + "id": 69290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1724:7:111", + "src": "1724:7:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b94690e4ab943ae91d639dd26425c05a4712375001c89110ad5c8634401bf162", "typeString": "literal_string \"AutID\"" @@ -2496,33 +2512,33 @@ } ], "expression": { - "id": 68497, + "id": 69283, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1701:2:111", + "referencedDeclaration": 13541, + "src": "1701:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68499, + "id": 69285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1704:5:111", + "memberLocation": "1704:5:124", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1701:8:111", + "referencedDeclaration": 23909, + "src": "1701:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68505, + "id": 69291, "isConstant": false, "isLValue": false, "isPure": false, @@ -2531,33 +2547,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1701:31:111", + "src": "1701:31:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68506, + "id": 69292, "nodeType": "ExpressionStatement", - "src": "1701:31:111" + "src": "1701:31:124" }, { "expression": { - "id": 68514, + "id": 69300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68507, + "id": 69293, "name": "NovaL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68416, - "src": "1742:5:111", + "referencedDeclaration": 69202, + "src": "1742:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } }, @@ -2568,12 +2584,12 @@ { "arguments": [ { - "id": 68511, + "id": 69297, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1789:7:111", + "referencedDeclaration": 69237, + "src": "1789:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2588,33 +2604,33 @@ } ], "expression": { - "id": 68509, + "id": 69295, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "1755:19:111", + "referencedDeclaration": 69168, + "src": "1755:19:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$68382_$", + "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$69168_$", "typeString": "type(library DeploymentAddresses)" } }, - "id": 68510, + "id": 69296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1775:13:111", + "memberLocation": "1775:13:124", "memberName": "novaLogicAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 68282, - "src": "1755:33:111", + "referencedDeclaration": 69068, + "src": "1755:33:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure returns (address)" } }, - "id": 68512, + "id": 69298, "isConstant": false, "isLValue": false, "isPure": false, @@ -2623,7 +2639,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1755:42:111", + "src": "1755:42:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2638,18 +2654,18 @@ "typeString": "address" } ], - "id": 68508, + "id": 69294, "name": "Nova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4940, - "src": "1750:4:111", + "referencedDeclaration": 5691, + "src": "1750:4:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Nova_$4940_$", + "typeIdentifier": "t_type$_t_contract$_Nova_$5691_$", "typeString": "type(contract Nova)" } }, - "id": 68513, + "id": 69299, "isConstant": false, "isLValue": false, "isPure": false, @@ -2658,22 +2674,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1750:48:111", + "src": "1750:48:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } }, - "src": "1742:56:111", + "src": "1742:56:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } }, - "id": 68515, + "id": 69301, "nodeType": "ExpressionStatement", - "src": "1742:56:111" + "src": "1742:56:124" }, { "expression": { @@ -2681,14 +2697,14 @@ { "arguments": [ { - "id": 68521, + "id": 69307, "name": "NovaL", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68416, - "src": "1825:5:111", + "referencedDeclaration": 69202, + "src": "1825:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } } @@ -2696,30 +2712,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Nova_$4940", + "typeIdentifier": "t_contract$_Nova_$5691", "typeString": "contract Nova" } ], - "id": 68520, + "id": 69306, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1817:7:111", + "src": "1817:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68519, + "id": 69305, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1817:7:111", + "src": "1817:7:124", "typeDescriptions": {} } }, - "id": 68522, + "id": 69308, "isConstant": false, "isLValue": false, "isPure": false, @@ -2728,7 +2744,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1817:14:111", + "src": "1817:14:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2737,14 +2753,14 @@ }, { "hexValue": "4e6f7661204c6f676963", - "id": 68523, + "id": 69309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1833:12:111", + "src": "1833:12:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a5d4eb7e4e3e8f6f4786e9e53827a06da6f77af796ebe78ea88664b1baacd63a", "typeString": "literal_string \"Nova Logic\"" @@ -2764,33 +2780,33 @@ } ], "expression": { - "id": 68516, + "id": 69302, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1808:2:111", + "referencedDeclaration": 13541, + "src": "1808:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68518, + "id": 69304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1811:5:111", + "memberLocation": "1811:5:124", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1808:8:111", + "referencedDeclaration": 23909, + "src": "1808:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68524, + "id": 69310, "isConstant": false, "isLValue": false, "isPure": false, @@ -2799,33 +2815,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1808:38:111", + "src": "1808:38:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68525, + "id": 69311, "nodeType": "ExpressionStatement", - "src": "1808:38:111" + "src": "1808:38:124" }, { "expression": { - "id": 68533, + "id": 69319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68526, + "id": 69312, "name": "NovaR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68419, - "src": "1857:5:111", + "referencedDeclaration": 69205, + "src": "1857:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } }, @@ -2836,12 +2852,12 @@ { "arguments": [ { - "id": 68530, + "id": 69316, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "1915:7:111", + "referencedDeclaration": 69237, + "src": "1915:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2856,33 +2872,33 @@ } ], "expression": { - "id": 68528, + "id": 69314, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "1878:19:111", + "referencedDeclaration": 69168, + "src": "1878:19:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$68382_$", + "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$69168_$", "typeString": "type(library DeploymentAddresses)" } }, - "id": 68529, + "id": 69315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1898:16:111", + "memberLocation": "1898:16:124", "memberName": "novaRegistryAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 68315, - "src": "1878:36:111", + "referencedDeclaration": 69101, + "src": "1878:36:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure returns (address)" } }, - "id": 68531, + "id": 69317, "isConstant": false, "isLValue": false, "isPure": false, @@ -2891,7 +2907,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1878:45:111", + "src": "1878:45:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2906,18 +2922,18 @@ "typeString": "address" } ], - "id": 68527, + "id": 69313, "name": "NovaRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5370, - "src": "1865:12:111", + "referencedDeclaration": 6121, + "src": "1865:12:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_NovaRegistry_$5370_$", + "typeIdentifier": "t_type$_t_contract$_NovaRegistry_$6121_$", "typeString": "type(contract NovaRegistry)" } }, - "id": 68532, + "id": 69318, "isConstant": false, "isLValue": false, "isPure": false, @@ -2926,22 +2942,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1865:59:111", + "src": "1865:59:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } }, - "src": "1857:67:111", + "src": "1857:67:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } }, - "id": 68534, + "id": 69320, "nodeType": "ExpressionStatement", - "src": "1857:67:111" + "src": "1857:67:124" }, { "expression": { @@ -2949,14 +2965,14 @@ { "arguments": [ { - "id": 68540, + "id": 69326, "name": "NovaR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68419, - "src": "1951:5:111", + "referencedDeclaration": 69205, + "src": "1951:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } } @@ -2964,30 +2980,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } ], - "id": 68539, + "id": 69325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1943:7:111", + "src": "1943:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68538, + "id": 69324, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1943:7:111", + "src": "1943:7:124", "typeDescriptions": {} } }, - "id": 68541, + "id": 69327, "isConstant": false, "isLValue": false, "isPure": false, @@ -2996,7 +3012,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1943:14:111", + "src": "1943:14:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3005,14 +3021,14 @@ }, { "hexValue": "4e6f766152", - "id": 68542, + "id": 69328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1959:7:111", + "src": "1959:7:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a7eab292294fda9829296761a63bf9d9cb25b74b7e342206310caa0cdcb0bb39", "typeString": "literal_string \"NovaR\"" @@ -3032,33 +3048,33 @@ } ], "expression": { - "id": 68535, + "id": 69321, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "1934:2:111", + "referencedDeclaration": 13541, + "src": "1934:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68537, + "id": 69323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1937:5:111", + "memberLocation": "1937:5:124", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "1934:8:111", + "referencedDeclaration": 23909, + "src": "1934:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68543, + "id": 69329, "isConstant": false, "isLValue": false, "isPure": false, @@ -3067,33 +3083,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1934:33:111", + "src": "1934:33:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68544, + "id": 69330, "nodeType": "ExpressionStatement", - "src": "1934:33:111" + "src": "1934:33:124" }, { "expression": { - "id": 68552, + "id": 69338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68545, + "id": 69331, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "1978:7:111", + "referencedDeclaration": 69208, + "src": "1978:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, @@ -3104,12 +3120,12 @@ { "arguments": [ { - "id": 68549, + "id": 69335, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "2042:7:111", + "referencedDeclaration": 69237, + "src": "2042:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3124,33 +3140,33 @@ } ], "expression": { - "id": 68547, + "id": 69333, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "2003:19:111", + "referencedDeclaration": 69168, + "src": "2003:19:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$68382_$", + "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$69168_$", "typeString": "type(library DeploymentAddresses)" } }, - "id": 68548, + "id": 69334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2023:18:111", + "memberLocation": "2023:18:124", "memberName": "pluginRegistryAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 68348, - "src": "2003:38:111", + "referencedDeclaration": 69134, + "src": "2003:38:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure returns (address)" } }, - "id": 68550, + "id": 69336, "isConstant": false, "isLValue": false, "isPure": false, @@ -3159,7 +3175,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2003:47:111", + "src": "2003:47:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3174,18 +3190,18 @@ "typeString": "address" } ], - "id": 68546, + "id": 69332, "name": "PluginRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6344, - "src": "1988:14:111", + "referencedDeclaration": 7095, + "src": "1988:14:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_PluginRegistry_$6344_$", + "typeIdentifier": "t_type$_t_contract$_PluginRegistry_$7095_$", "typeString": "type(contract PluginRegistry)" } }, - "id": 68551, + "id": 69337, "isConstant": false, "isLValue": false, "isPure": false, @@ -3194,22 +3210,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1988:63:111", + "src": "1988:63:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "src": "1978:73:111", + "src": "1978:73:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68553, + "id": 69339, "nodeType": "ExpressionStatement", - "src": "1978:73:111" + "src": "1978:73:124" }, { "expression": { @@ -3217,14 +3233,14 @@ { "arguments": [ { - "id": 68559, + "id": 69345, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "2078:7:111", + "referencedDeclaration": 69208, + "src": "2078:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } } @@ -3232,30 +3248,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } ], - "id": 68558, + "id": 69344, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:111", + "src": "2070:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68557, + "id": 69343, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2070:7:111", + "src": "2070:7:124", "typeDescriptions": {} } }, - "id": 68560, + "id": 69346, "isConstant": false, "isLValue": false, "isPure": false, @@ -3264,7 +3280,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2070:16:111", + "src": "2070:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3273,14 +3289,14 @@ }, { "hexValue": "506c7567696e5265676973747279", - "id": 68561, + "id": 69347, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2088:16:111", + "src": "2088:16:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b0538d9f9f135bdbb62a6d6344647c2558a824faa86e4aa4bf997d5ed25b743d", "typeString": "literal_string \"PluginRegistry\"" @@ -3300,33 +3316,33 @@ } ], "expression": { - "id": 68554, + "id": 69340, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2061:2:111", + "referencedDeclaration": 13541, + "src": "2061:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68556, + "id": 69342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2064:5:111", + "memberLocation": "2064:5:124", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2061:8:111", + "referencedDeclaration": 23909, + "src": "2061:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68562, + "id": 69348, "isConstant": false, "isLValue": false, "isPure": false, @@ -3335,31 +3351,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2061:44:111", + "src": "2061:44:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68563, + "id": 69349, "nodeType": "ExpressionStatement", - "src": "2061:44:111" + "src": "2061:44:124" }, { "expression": { - "id": 68571, + "id": 69357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 68564, + "id": 69350, "name": "LR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68428, - "src": "2116:2:111", + "referencedDeclaration": 69214, + "src": "2116:2:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -3372,12 +3388,12 @@ { "arguments": [ { - "id": 68568, + "id": 69354, "name": "chainID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68451, - "src": "2184:7:111", + "referencedDeclaration": 69237, + "src": "2184:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3392,33 +3408,33 @@ } ], "expression": { - "id": 68566, + "id": 69352, "name": "DeploymentAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68382, - "src": "2137:19:111", + "referencedDeclaration": 69168, + "src": "2137:19:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$68382_$", + "typeIdentifier": "t_type$_t_contract$_DeploymentAddresses_$69168_$", "typeString": "type(library DeploymentAddresses)" } }, - "id": 68567, + "id": 69353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2157:26:111", + "memberLocation": "2157:26:124", "memberName": "LocalReputationutationAddr", "nodeType": "MemberAccess", - "referencedDeclaration": 68381, - "src": "2137:46:111", + "referencedDeclaration": 69167, + "src": "2137:46:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure returns (address)" } }, - "id": 68569, + "id": 69355, "isConstant": false, "isLValue": false, "isPure": false, @@ -3427,7 +3443,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2137:55:111", + "src": "2137:55:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3442,18 +3458,18 @@ "typeString": "address" } ], - "id": 68565, + "id": 69351, "name": "LocalReputation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2915, - "src": "2121:15:111", + "src": "2121:15:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_LocalReputation_$2915_$", "typeString": "type(contract LocalReputation)" } }, - "id": 68570, + "id": 69356, "isConstant": false, "isLValue": false, "isPure": false, @@ -3462,22 +3478,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2121:72:111", + "src": "2121:72:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "src": "2116:77:111", + "src": "2116:77:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 68572, + "id": 69358, "nodeType": "ExpressionStatement", - "src": "2116:77:111" + "src": "2116:77:124" }, { "expression": { @@ -3485,12 +3501,12 @@ { "arguments": [ { - "id": 68578, + "id": 69364, "name": "LR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68428, - "src": "2220:2:111", + "referencedDeclaration": 69214, + "src": "2220:2:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" @@ -3504,26 +3520,26 @@ "typeString": "contract LocalReputation" } ], - "id": 68577, + "id": 69363, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2212:7:111", + "src": "2212:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68576, + "id": 69362, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2212:7:111", + "src": "2212:7:124", "typeDescriptions": {} } }, - "id": 68579, + "id": 69365, "isConstant": false, "isLValue": false, "isPure": false, @@ -3532,7 +3548,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2212:11:111", + "src": "2212:11:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3541,14 +3557,14 @@ }, { "hexValue": "4c6f63616c52657075746174696f6e", - "id": 68580, + "id": 69366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2225:17:111", + "src": "2225:17:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_98f272edd236549249fc84a1d550d0c5afc01963fb5bd2d449ba3987ce342e91", "typeString": "literal_string \"LocalReputation\"" @@ -3568,33 +3584,33 @@ } ], "expression": { - "id": 68573, + "id": 69359, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2203:2:111", + "referencedDeclaration": 13541, + "src": "2203:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68575, + "id": 69361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2206:5:111", + "memberLocation": "2206:5:124", "memberName": "label", "nodeType": "MemberAccess", - "referencedDeclaration": 23158, - "src": "2203:8:111", + "referencedDeclaration": 23909, + "src": "2203:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory) external" } }, - "id": 68581, + "id": 69367, "isConstant": false, "isLValue": false, "isPure": false, @@ -3603,16 +3619,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2203:40:111", + "src": "2203:40:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68582, + "id": 69368, "nodeType": "ExpressionStatement", - "src": "2203:40:111" + "src": "2203:40:124" } ] }, @@ -3621,49 +3637,49 @@ "kind": "function", "modifiers": [], "name": "setUp", - "nameLocation": "1305:5:111", + "nameLocation": "1305:5:124", "parameters": { - "id": 68454, + "id": 69240, "nodeType": "ParameterList", "parameters": [], - "src": "1310:2:111" + "src": "1310:2:124" }, "returnParameters": { - "id": 68455, + "id": 69241, "nodeType": "ParameterList", "parameters": [], - "src": "1320:0:111" + "src": "1320:0:124" }, - "scope": 68937, + "scope": 69723, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 68936, + "id": 69722, "nodeType": "FunctionDefinition", - "src": "2256:3233:111", + "src": "2256:3233:124", "nodes": [], "body": { - "id": 68935, + "id": 69721, "nodeType": "Block", - "src": "2278:3211:111", + "src": "2278:3211:124", "nodes": [], "statements": [ { "assignments": [ - 68591 + 69377 ], "declarations": [ { "constant": false, - "id": 68591, + "id": 69377, "mutability": "mutable", "name": "privateKeys", - "nameLocation": "2305:11:111", + "nameLocation": "2305:11:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "2288:28:111", + "scope": 69721, + "src": "2288:28:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3672,18 +3688,18 @@ }, "typeName": { "baseType": { - "id": 68589, + "id": 69375, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2288:7:111", + "src": "2288:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68590, + "id": 69376, "nodeType": "ArrayTypeName", - "src": "2288:9:111", + "src": "2288:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -3692,19 +3708,19 @@ "visibility": "internal" } ], - "id": 68597, + "id": 69383, "initialValue": { "arguments": [ { "hexValue": "33", - "id": 68595, + "id": 69381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2333:1:111", + "src": "2333:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -3719,38 +3735,38 @@ "typeString": "int_const 3" } ], - "id": 68594, + "id": 69380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2319:13:111", + "src": "2319:13:124", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (uint256[] memory)" }, "typeName": { "baseType": { - "id": 68592, + "id": 69378, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2323:7:111", + "src": "2323:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68593, + "id": 69379, "nodeType": "ArrayTypeName", - "src": "2323:9:111", + "src": "2323:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } } }, - "id": 68596, + "id": 69382, "isConstant": false, "isLValue": false, "isPure": true, @@ -3759,7 +3775,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2319:16:111", + "src": "2319:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", @@ -3767,39 +3783,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2288:47:111" + "src": "2288:47:124" }, { "expression": { - "id": 68605, + "id": 69391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68598, + "id": 69384, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "2345:11:111", + "referencedDeclaration": 69377, + "src": "2345:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68600, + "id": 69386, "indexExpression": { "hexValue": "30", - "id": 68599, + "id": 69385, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2357:1:111", + "src": "2357:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -3811,7 +3827,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2345:14:111", + "src": "2345:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3823,14 +3839,14 @@ "arguments": [ { "hexValue": "50564b5f4131", - "id": 68603, + "id": 69389, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2373:8:111", + "src": "2373:8:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c90e4c31eb3f5711ec52480a807196fe521a97d0d7706bb93b0b3ad8489d3d37", "typeString": "literal_string \"PVK_A1\"" @@ -3846,33 +3862,33 @@ } ], "expression": { - "id": 68601, + "id": 69387, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2362:2:111", + "referencedDeclaration": 13541, + "src": "2362:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68602, + "id": 69388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2365:7:111", + "memberLocation": "2365:7:124", "memberName": "envUint", "nodeType": "MemberAccess", - "referencedDeclaration": 22864, - "src": "2362:10:111", + "referencedDeclaration": 23615, + "src": "2362:10:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) view external returns (uint256)" } }, - "id": 68604, + "id": 69390, "isConstant": false, "isLValue": false, "isPure": false, @@ -3881,55 +3897,55 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2362:20:111", + "src": "2362:20:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2345:37:111", + "src": "2345:37:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68606, + "id": 69392, "nodeType": "ExpressionStatement", - "src": "2345:37:111" + "src": "2345:37:124" }, { "documentation": "deployer", "expression": { - "id": 68614, + "id": 69400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68607, + "id": 69393, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "2413:11:111", + "referencedDeclaration": 69377, + "src": "2413:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68609, + "id": 69395, "indexExpression": { "hexValue": "31", - "id": 68608, + "id": 69394, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2425:1:111", + "src": "2425:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -3941,7 +3957,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2413:14:111", + "src": "2413:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3953,14 +3969,14 @@ "arguments": [ { "hexValue": "50564b5f4132", - "id": 68612, + "id": 69398, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2441:8:111", + "src": "2441:8:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5a481f0ed982dc1fb5ae9fda9b7a50a26ac6780f0f49d7049bba202af0e2c3c0", "typeString": "literal_string \"PVK_A2\"" @@ -3976,33 +3992,33 @@ } ], "expression": { - "id": 68610, + "id": 69396, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2430:2:111", + "referencedDeclaration": 13541, + "src": "2430:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68611, + "id": 69397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2433:7:111", + "memberLocation": "2433:7:124", "memberName": "envUint", "nodeType": "MemberAccess", - "referencedDeclaration": 22864, - "src": "2430:10:111", + "referencedDeclaration": 23615, + "src": "2430:10:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) view external returns (uint256)" } }, - "id": 68613, + "id": 69399, "isConstant": false, "isLValue": false, "isPure": false, @@ -4011,54 +4027,54 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2430:20:111", + "src": "2430:20:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2413:37:111", + "src": "2413:37:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68615, + "id": 69401, "nodeType": "ExpressionStatement", - "src": "2413:37:111" + "src": "2413:37:124" }, { "expression": { - "id": 68623, + "id": 69409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68616, + "id": 69402, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "2460:11:111", + "referencedDeclaration": 69377, + "src": "2460:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68618, + "id": 69404, "indexExpression": { "hexValue": "32", - "id": 68617, + "id": 69403, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2472:1:111", + "src": "2472:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -4070,7 +4086,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2460:14:111", + "src": "2460:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4082,14 +4098,14 @@ "arguments": [ { "hexValue": "50564b5f4133", - "id": 68621, + "id": 69407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2488:8:111", + "src": "2488:8:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cee4fc37cd9eac85bc768913421fb5090d7c4493c7a06eccadf8d5383d7d390d", "typeString": "literal_string \"PVK_A3\"" @@ -4105,33 +4121,33 @@ } ], "expression": { - "id": 68619, + "id": 69405, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2477:2:111", + "referencedDeclaration": 13541, + "src": "2477:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68620, + "id": 69406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2480:7:111", + "memberLocation": "2480:7:124", "memberName": "envUint", "nodeType": "MemberAccess", - "referencedDeclaration": 22864, - "src": "2477:10:111", + "referencedDeclaration": 23615, + "src": "2477:10:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (string memory) view external returns (uint256)" } }, - "id": 68622, + "id": 69408, "isConstant": false, "isLValue": false, "isPure": false, @@ -4140,33 +4156,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2477:20:111", + "src": "2477:20:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2460:37:111", + "src": "2460:37:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68624, + "id": 69410, "nodeType": "ExpressionStatement", - "src": "2460:37:111" + "src": "2460:37:124" }, { "expression": { "arguments": [ { - "id": 68628, + "id": 69414, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68449, - "src": "2526:8:111", + "referencedDeclaration": 69235, + "src": "2526:8:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4181,33 +4197,33 @@ } ], "expression": { - "id": 68625, + "id": 69411, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "2508:2:111", + "referencedDeclaration": 13541, + "src": "2508:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68627, + "id": 69413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2511:14:111", + "memberLocation": "2511:14:124", "memberName": "startBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23186, - "src": "2508:17:111", + "referencedDeclaration": 23937, + "src": "2508:17:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, - "id": 68629, + "id": 69415, "isConstant": false, "isLValue": false, "isPure": false, @@ -4216,31 +4232,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2508:27:111", + "src": "2508:27:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68630, + "id": 69416, "nodeType": "ExpressionStatement", - "src": "2508:27:111" + "src": "2508:27:124" }, { "assignments": [ - 68635 + 69421 ], "declarations": [ { "constant": false, - "id": 68635, + "id": 69421, "mutability": "mutable", "name": "deps", - "nameLocation": "2598:4:111", + "nameLocation": "2598:4:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "2581:21:111", + "scope": 69721, + "src": "2581:21:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4249,18 +4265,18 @@ }, "typeName": { "baseType": { - "id": 68633, + "id": 69419, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2581:7:111", + "src": "2581:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68634, + "id": 69420, "nodeType": "ArrayTypeName", - "src": "2581:9:111", + "src": "2581:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -4269,24 +4285,24 @@ "visibility": "internal" } ], - "id": 68636, + "id": 69422, "nodeType": "VariableDeclarationStatement", - "src": "2581:21:111" + "src": "2581:21:124" }, { "assignments": [ - 68638 + 69424 ], "declarations": [ { "constant": false, - "id": 68638, + "id": 69424, "mutability": "mutable", "name": "pluginDefBot1", - "nameLocation": "2621:13:111", + "nameLocation": "2621:13:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "2613:21:111", + "scope": 69721, + "src": "2613:21:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4294,10 +4310,10 @@ "typeString": "uint256" }, "typeName": { - "id": 68637, + "id": 69423, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2613:7:111", + "src": "2613:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4306,7 +4322,7 @@ "visibility": "internal" } ], - "id": 68653, + "id": 69439, "initialValue": { "arguments": [ { @@ -4314,12 +4330,12 @@ { "arguments": [ { - "id": 68645, + "id": 69431, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68449, - "src": "2694:8:111", + "referencedDeclaration": 69235, + "src": "2694:8:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4333,26 +4349,26 @@ "typeString": "address" } ], - "id": 68644, + "id": 69430, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2686:7:111", + "src": "2686:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68643, + "id": 69429, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2686:7:111", + "src": "2686:7:124", "typeDescriptions": {} } }, - "id": 68646, + "id": 69432, "isConstant": false, "isLValue": false, "isPure": false, @@ -4361,7 +4377,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2686:17:111", + "src": "2686:17:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4376,27 +4392,27 @@ "typeString": "address" } ], - "id": 68642, + "id": 69428, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2678:8:111", + "src": "2678:8:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 68641, + "id": 69427, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2678:8:111", + "src": "2678:8:124", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 68647, + "id": 69433, "isConstant": false, "isLValue": false, "isPure": false, @@ -4405,7 +4421,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2678:26:111", + "src": "2678:26:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4414,14 +4430,14 @@ }, { "hexValue": "697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b766a6a617561786b756d64337872656a707671627437767a64656b7734767a67767179", - "id": 68648, + "id": 69434, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2718:68:111", + "src": "2718:68:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f871abe1e6d5527866099706a6dd32093fc53e5593c506731663816f303aeee8", "typeString": "literal_string \"ipfs://bafkreidz4ik2na4wj54ha3kvjjauaxkumd3xrejpvqbt7vzdekw4vzgvqy\"" @@ -4430,14 +4446,14 @@ }, { "hexValue": "30", - "id": 68649, + "id": 69435, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2800:1:111", + "src": "2800:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4446,14 +4462,14 @@ }, { "hexValue": "74727565", - "id": 68650, + "id": 69436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2815:4:111", + "src": "2815:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4461,12 +4477,12 @@ "value": "true" }, { - "id": 68651, + "id": 69437, "name": "deps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68635, - "src": "2833:4:111", + "referencedDeclaration": 69421, + "src": "2833:4:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4497,33 +4513,33 @@ } ], "expression": { - "id": 68639, + "id": 69425, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "2637:7:111", + "referencedDeclaration": 69208, + "src": "2637:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68640, + "id": 69426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2645:19:111", + "memberLocation": "2645:19:124", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 6179, - "src": "2637:27:111", + "referencedDeclaration": 6930, + "src": "2637:27:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 68652, + "id": 69438, "isConstant": false, "isLValue": false, "isPure": false, @@ -4532,7 +4548,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2637:210:111", + "src": "2637:210:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4540,22 +4556,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2613:234:111" + "src": "2613:234:124" }, { "assignments": [ - 68655 + 69441 ], "declarations": [ { "constant": false, - "id": 68655, + "id": 69441, "mutability": "mutable", "name": "pluginDefOpenTask", - "nameLocation": "2865:17:111", + "nameLocation": "2865:17:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "2857:25:111", + "scope": 69721, + "src": "2857:25:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4563,10 +4579,10 @@ "typeString": "uint256" }, "typeName": { - "id": 68654, + "id": 69440, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2857:7:111", + "src": "2857:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4575,7 +4591,7 @@ "visibility": "internal" } ], - "id": 68670, + "id": 69456, "initialValue": { "arguments": [ { @@ -4583,12 +4599,12 @@ { "arguments": [ { - "id": 68662, + "id": 69448, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68449, - "src": "2942:8:111", + "referencedDeclaration": 69235, + "src": "2942:8:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4602,26 +4618,26 @@ "typeString": "address" } ], - "id": 68661, + "id": 69447, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2934:7:111", + "src": "2934:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68660, + "id": 69446, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2934:7:111", + "src": "2934:7:124", "typeDescriptions": {} } }, - "id": 68663, + "id": 69449, "isConstant": false, "isLValue": false, "isPure": false, @@ -4630,7 +4646,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2934:17:111", + "src": "2934:17:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4645,27 +4661,27 @@ "typeString": "address" } ], - "id": 68659, + "id": 69445, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2926:8:111", + "src": "2926:8:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 68658, + "id": 69444, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2926:8:111", + "src": "2926:8:124", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 68664, + "id": 69450, "isConstant": false, "isLValue": false, "isPure": false, @@ -4674,7 +4690,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2926:26:111", + "src": "2926:26:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4683,14 +4699,14 @@ }, { "hexValue": "697066733a2f2f6261666b7265696534356e747778367472686c34617a6169786a367374363472636768726e736366326d6e6c6168696863747269366f7370677465", - "id": 68665, + "id": 69451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2966:68:111", + "src": "2966:68:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_84696ab29462bef9185cda348d843622965caef91aef40f060a5e1533fdf942f", "typeString": "literal_string \"ipfs://bafkreie45ntwx6trhl4azaixj6st64rcghrnscf2mnlahihctri6ospgte\"" @@ -4699,14 +4715,14 @@ }, { "hexValue": "30", - "id": 68666, + "id": 69452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3048:1:111", + "src": "3048:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4715,14 +4731,14 @@ }, { "hexValue": "74727565", - "id": 68667, + "id": 69453, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3063:4:111", + "src": "3063:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4730,12 +4746,12 @@ "value": "true" }, { - "id": 68668, + "id": 69454, "name": "deps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68635, - "src": "3081:4:111", + "referencedDeclaration": 69421, + "src": "3081:4:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -4766,33 +4782,33 @@ } ], "expression": { - "id": 68656, + "id": 69442, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "2885:7:111", + "referencedDeclaration": 69208, + "src": "2885:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68657, + "id": 69443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2893:19:111", + "memberLocation": "2893:19:124", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 6179, - "src": "2885:27:111", + "referencedDeclaration": 6930, + "src": "2885:27:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 68669, + "id": 69455, "isConstant": false, "isLValue": false, "isPure": false, @@ -4801,7 +4817,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2885:210:111", + "src": "2885:210:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4809,22 +4825,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2857:238:111" + "src": "2857:238:124" }, { "assignments": [ - 68672 + 69458 ], "declarations": [ { "constant": false, - "id": 68672, + "id": 69458, "mutability": "mutable", "name": "pluginQuizBot2", - "nameLocation": "3113:14:111", + "nameLocation": "3113:14:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3105:22:111", + "scope": 69721, + "src": "3105:22:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4832,10 +4848,10 @@ "typeString": "uint256" }, "typeName": { - "id": 68671, + "id": 69457, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3105:7:111", + "src": "3105:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4844,7 +4860,7 @@ "visibility": "internal" } ], - "id": 68687, + "id": 69473, "initialValue": { "arguments": [ { @@ -4852,12 +4868,12 @@ { "arguments": [ { - "id": 68679, + "id": 69465, "name": "deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68449, - "src": "3187:8:111", + "referencedDeclaration": 69235, + "src": "3187:8:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4871,26 +4887,26 @@ "typeString": "address" } ], - "id": 68678, + "id": 69464, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3179:7:111", + "src": "3179:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68677, + "id": 69463, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3179:7:111", + "src": "3179:7:124", "typeDescriptions": {} } }, - "id": 68680, + "id": 69466, "isConstant": false, "isLValue": false, "isPure": false, @@ -4899,7 +4915,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3179:17:111", + "src": "3179:17:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4914,27 +4930,27 @@ "typeString": "address" } ], - "id": 68676, + "id": 69462, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3171:8:111", + "src": "3171:8:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { - "id": 68675, + "id": 69461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3171:8:111", + "src": "3171:8:124", "stateMutability": "payable", "typeDescriptions": {} } }, - "id": 68681, + "id": 69467, "isConstant": false, "isLValue": false, "isPure": false, @@ -4943,7 +4959,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3171:26:111", + "src": "3171:26:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4952,14 +4968,14 @@ }, { "hexValue": "697066733a2f2f6261666b726569647a34696b326e6134776a35346861336b766a6a617561786b756d64337872656a707671627437767a64656b7734767a67767179", - "id": 68682, + "id": 69468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3211:68:111", + "src": "3211:68:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f871abe1e6d5527866099706a6dd32093fc53e5593c506731663816f303aeee8", "typeString": "literal_string \"ipfs://bafkreidz4ik2na4wj54ha3kvjjauaxkumd3xrejpvqbt7vzdekw4vzgvqy\"" @@ -4968,14 +4984,14 @@ }, { "hexValue": "30", - "id": 68683, + "id": 69469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3293:1:111", + "src": "3293:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -4984,14 +5000,14 @@ }, { "hexValue": "74727565", - "id": 68684, + "id": 69470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3308:4:111", + "src": "3308:4:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4999,12 +5015,12 @@ "value": "true" }, { - "id": 68685, + "id": 69471, "name": "deps", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68635, - "src": "3326:4:111", + "referencedDeclaration": 69421, + "src": "3326:4:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" @@ -5035,33 +5051,33 @@ } ], "expression": { - "id": 68673, + "id": 69459, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "3130:7:111", + "referencedDeclaration": 69208, + "src": "3130:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68674, + "id": 69460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3138:19:111", + "memberLocation": "3138:19:124", "memberName": "addPluginDefinition", "nodeType": "MemberAccess", - "referencedDeclaration": 6179, - "src": "3130:27:111", + "referencedDeclaration": 6930, + "src": "3130:27:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$_t_string_memory_ptr_$_t_uint256_$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$", "typeString": "function (address payable,string memory,uint256,bool,uint256[] memory) external returns (uint256)" } }, - "id": 68686, + "id": 69472, "isConstant": false, "isLValue": false, "isPure": false, @@ -5070,7 +5086,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3130:210:111", + "src": "3130:210:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5078,66 +5094,66 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3105:235:111" + "src": "3105:235:124" }, { "assignments": [ - 68690 + 69476 ], "declarations": [ { "constant": false, - "id": 68690, + "id": 69476, "mutability": "mutable", "name": "OurNova", - "nameLocation": "3357:7:111", + "nameLocation": "3357:7:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3351:13:111", + "scope": 69721, + "src": "3351:13:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" }, "typeName": { - "id": 68689, + "id": 69475, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68688, + "id": 69474, "name": "INova", "nameLocations": [ - "3351:5:111" + "3351:5:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5673, - "src": "3351:5:111" + "referencedDeclaration": 6424, + "src": "3351:5:124" }, - "referencedDeclaration": 5673, - "src": "3351:5:111", + "referencedDeclaration": 6424, + "src": "3351:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, "visibility": "internal" } ], - "id": 68699, + "id": 69485, "initialValue": { "arguments": [ { "arguments": [ { "hexValue": "31", - "id": 68694, + "id": 69480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3390:1:111", + "src": "3390:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -5146,14 +5162,14 @@ }, { "hexValue": "746869732069732061206d6574616461746120737472696e67", - "id": 68695, + "id": 69481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3393:27:111", + "src": "3393:27:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fabe40f2fb76cfeef830ddb7b185c24315fec5610e90b097c24c2dc71eb06d1c", "typeString": "literal_string \"this is a metadata string\"" @@ -5162,14 +5178,14 @@ }, { "hexValue": "31", - "id": 68696, + "id": 69482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3422:1:111", + "src": "3422:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -5193,33 +5209,33 @@ } ], "expression": { - "id": 68692, + "id": 69478, "name": "NovaR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68419, - "src": "3373:5:111", + "referencedDeclaration": 69205, + "src": "3373:5:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_NovaRegistry_$5370", + "typeIdentifier": "t_contract$_NovaRegistry_$6121", "typeString": "contract NovaRegistry" } }, - "id": 68693, + "id": 69479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3379:10:111", + "memberLocation": "3379:10:124", "memberName": "deployNova", "nodeType": "MemberAccess", - "referencedDeclaration": 5178, - "src": "3373:16:111", + "referencedDeclaration": 5929, + "src": "3373:16:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256,string memory,uint256) external returns (address)" } }, - "id": 68697, + "id": 69483, "isConstant": false, "isLValue": false, "isPure": false, @@ -5228,7 +5244,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3373:51:111", + "src": "3373:51:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5243,18 +5259,18 @@ "typeString": "address" } ], - "id": 68691, + "id": 69477, "name": "INova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5673, - "src": "3367:5:111", + "referencedDeclaration": 6424, + "src": "3367:5:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_INova_$5673_$", + "typeIdentifier": "t_type$_t_contract$_INova_$6424_$", "typeString": "type(contract INova)" } }, - "id": 68698, + "id": 69484, "isConstant": false, "isLValue": false, "isPure": false, @@ -5263,30 +5279,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3367:58:111", + "src": "3367:58:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, "nodeType": "VariableDeclarationStatement", - "src": "3351:74:111" + "src": "3351:74:124" }, { "assignments": [ - 68701 + 69487 ], "declarations": [ { "constant": false, - "id": 68701, + "id": 69487, "mutability": "mutable", "name": "botPluginAddr", - "nameLocation": "3444:13:111", + "nameLocation": "3444:13:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3436:21:111", + "scope": 69721, + "src": "3436:21:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5294,10 +5310,10 @@ "typeString": "address" }, "typeName": { - "id": 68700, + "id": 69486, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3436:7:111", + "src": "3436:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5307,7 +5323,7 @@ "visibility": "internal" } ], - "id": 68713, + "id": 69499, "initialValue": { "arguments": [ { @@ -5315,14 +5331,14 @@ { "arguments": [ { - "id": 68709, + "id": 69495, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "3496:7:111", + "referencedDeclaration": 69476, + "src": "3496:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5330,30 +5346,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 68708, + "id": 69494, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3488:7:111", + "src": "3488:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68707, + "id": 69493, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3488:7:111", + "src": "3488:7:124", "typeDescriptions": {} } }, - "id": 68710, + "id": 69496, "isConstant": false, "isLValue": false, "isPure": false, @@ -5362,7 +5378,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3488:16:111", + "src": "3488:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5377,39 +5393,39 @@ "typeString": "address" } ], - "id": 68706, + "id": 69492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3468:19:111", + "src": "3468:19:124", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$7390_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialBotPlugin_$8141_$", "typeString": "function (address) returns (contract SocialBotPlugin)" }, "typeName": { - "id": 68705, + "id": 69491, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68704, + "id": 69490, "name": "SocialBotPlugin", "nameLocations": [ - "3472:15:111" + "3472:15:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7390, - "src": "3472:15:111" + "referencedDeclaration": 8141, + "src": "3472:15:124" }, - "referencedDeclaration": 7390, - "src": "3472:15:111", + "referencedDeclaration": 8141, + "src": "3472:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } }, - "id": 68711, + "id": 69497, "isConstant": false, "isLValue": false, "isPure": false, @@ -5418,10 +5434,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3468:37:111", + "src": "3468:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } } @@ -5429,30 +5445,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialBotPlugin_$7390", + "typeIdentifier": "t_contract$_SocialBotPlugin_$8141", "typeString": "contract SocialBotPlugin" } ], - "id": 68703, + "id": 69489, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3460:7:111", + "src": "3460:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68702, + "id": 69488, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3460:7:111", + "src": "3460:7:124", "typeDescriptions": {} } }, - "id": 68712, + "id": 69498, "isConstant": false, "isLValue": false, "isPure": false, @@ -5461,7 +5477,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3460:46:111", + "src": "3460:46:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5469,22 +5485,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3436:70:111" + "src": "3436:70:124" }, { "assignments": [ - 68715 + 69501 ], "declarations": [ { "constant": false, - "id": 68715, + "id": 69501, "mutability": "mutable", "name": "botQuizAddr", - "nameLocation": "3524:11:111", + "nameLocation": "3524:11:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3516:19:111", + "scope": 69721, + "src": "3516:19:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5492,10 +5508,10 @@ "typeString": "address" }, "typeName": { - "id": 68714, + "id": 69500, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3516:7:111", + "src": "3516:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5505,7 +5521,7 @@ "visibility": "internal" } ], - "id": 68727, + "id": 69513, "initialValue": { "arguments": [ { @@ -5513,14 +5529,14 @@ { "arguments": [ { - "id": 68723, + "id": 69509, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "3575:7:111", + "referencedDeclaration": 69476, + "src": "3575:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5528,30 +5544,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 68722, + "id": 69508, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3567:7:111", + "src": "3567:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68721, + "id": 69507, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3567:7:111", + "src": "3567:7:124", "typeDescriptions": {} } }, - "id": 68724, + "id": 69510, "isConstant": false, "isLValue": false, "isPure": false, @@ -5560,7 +5576,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3567:16:111", + "src": "3567:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5575,39 +5591,39 @@ "typeString": "address" } ], - "id": 68720, + "id": 69506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3546:20:111", + "src": "3546:20:124", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialQuizPlugin_$7405_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_SocialQuizPlugin_$8156_$", "typeString": "function (address) returns (contract SocialQuizPlugin)" }, "typeName": { - "id": 68719, + "id": 69505, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68718, + "id": 69504, "name": "SocialQuizPlugin", "nameLocations": [ - "3550:16:111" + "3550:16:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7405, - "src": "3550:16:111" + "referencedDeclaration": 8156, + "src": "3550:16:124" }, - "referencedDeclaration": 7405, - "src": "3550:16:111", + "referencedDeclaration": 8156, + "src": "3550:16:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialQuizPlugin_$7405", + "typeIdentifier": "t_contract$_SocialQuizPlugin_$8156", "typeString": "contract SocialQuizPlugin" } } }, - "id": 68725, + "id": 69511, "isConstant": false, "isLValue": false, "isPure": false, @@ -5616,10 +5632,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3546:38:111", + "src": "3546:38:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialQuizPlugin_$7405", + "typeIdentifier": "t_contract$_SocialQuizPlugin_$8156", "typeString": "contract SocialQuizPlugin" } } @@ -5627,30 +5643,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SocialQuizPlugin_$7405", + "typeIdentifier": "t_contract$_SocialQuizPlugin_$8156", "typeString": "contract SocialQuizPlugin" } ], - "id": 68717, + "id": 69503, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3538:7:111", + "src": "3538:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68716, + "id": 69502, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3538:7:111", + "src": "3538:7:124", "typeDescriptions": {} } }, - "id": 68726, + "id": 69512, "isConstant": false, "isLValue": false, "isPure": false, @@ -5659,7 +5675,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3538:47:111", + "src": "3538:47:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5667,22 +5683,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3516:69:111" + "src": "3516:69:124" }, { "assignments": [ - 68729 + 69515 ], "declarations": [ { "constant": false, - "id": 68729, + "id": 69515, "mutability": "mutable", "name": "openTask", - "nameLocation": "3603:8:111", + "nameLocation": "3603:8:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3595:16:111", + "scope": 69721, + "src": "3595:16:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5690,10 +5706,10 @@ "typeString": "address" }, "typeName": { - "id": 68728, + "id": 69514, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3595:7:111", + "src": "3595:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5703,7 +5719,7 @@ "visibility": "internal" } ], - "id": 68741, + "id": 69527, "initialValue": { "arguments": [ { @@ -5711,14 +5727,14 @@ { "arguments": [ { - "id": 68737, + "id": 69523, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "3650:7:111", + "referencedDeclaration": 69476, + "src": "3650:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -5726,30 +5742,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 68736, + "id": 69522, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3642:7:111", + "src": "3642:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68735, + "id": 69521, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3642:7:111", + "src": "3642:7:124", "typeDescriptions": {} } }, - "id": 68738, + "id": 69524, "isConstant": false, "isLValue": false, "isPure": false, @@ -5758,7 +5774,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3642:16:111", + "src": "3642:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5773,39 +5789,39 @@ "typeString": "address" } ], - "id": 68734, + "id": 69520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3622:19:111", + "src": "3622:19:124", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OpenTaskWithRep_$7056_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_OpenTaskWithRep_$7807_$", "typeString": "function (address) returns (contract OpenTaskWithRep)" }, "typeName": { - "id": 68733, + "id": 69519, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 68732, + "id": 69518, "name": "OpenTaskWithRep", "nameLocations": [ - "3626:15:111" + "3626:15:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7056, - "src": "3626:15:111" + "referencedDeclaration": 7807, + "src": "3626:15:124" }, - "referencedDeclaration": 7056, - "src": "3626:15:111", + "referencedDeclaration": 7807, + "src": "3626:15:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } } }, - "id": 68739, + "id": 69525, "isConstant": false, "isLValue": false, "isPure": false, @@ -5814,10 +5830,10 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3622:37:111", + "src": "3622:37:124", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } } @@ -5825,30 +5841,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_OpenTaskWithRep_$7056", + "typeIdentifier": "t_contract$_OpenTaskWithRep_$7807", "typeString": "contract OpenTaskWithRep" } ], - "id": 68731, + "id": 69517, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3614:7:111", + "src": "3614:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68730, + "id": 69516, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3614:7:111", + "src": "3614:7:124", "typeDescriptions": {} } }, - "id": 68740, + "id": 69526, "isConstant": false, "isLValue": false, "isPure": false, @@ -5857,7 +5873,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3614:46:111", + "src": "3614:46:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -5865,30 +5881,30 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3595:65:111" + "src": "3595:65:124" }, { "expression": { "arguments": [ { - "id": 68745, + "id": 69531, "name": "botPluginAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68701, - "src": "3694:13:111", + "referencedDeclaration": 69487, + "src": "3694:13:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 68746, + "id": 69532, "name": "pluginDefBot1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68638, - "src": "3709:13:111", + "referencedDeclaration": 69424, + "src": "3709:13:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5907,33 +5923,33 @@ } ], "expression": { - "id": 68742, + "id": 69528, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "3671:7:111", + "referencedDeclaration": 69208, + "src": "3671:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68744, + "id": 69530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3679:14:111", + "memberLocation": "3679:14:124", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 6022, - "src": "3671:22:111", + "referencedDeclaration": 6773, + "src": "3671:22:124", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 68747, + "id": 69533, "isConstant": false, "isLValue": false, "isPure": false, @@ -5942,39 +5958,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3671:52:111", + "src": "3671:52:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68748, + "id": 69534, "nodeType": "ExpressionStatement", - "src": "3671:52:111" + "src": "3671:52:124" }, { "expression": { "arguments": [ { - "id": 68752, + "id": 69538, "name": "botQuizAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68715, - "src": "3756:11:111", + "referencedDeclaration": 69501, + "src": "3756:11:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 68753, + "id": 69539, "name": "pluginQuizBot2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68672, - "src": "3769:14:111", + "referencedDeclaration": 69458, + "src": "3769:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5993,33 +6009,33 @@ } ], "expression": { - "id": 68749, + "id": 69535, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "3733:7:111", + "referencedDeclaration": 69208, + "src": "3733:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68751, + "id": 69537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3741:14:111", + "memberLocation": "3741:14:124", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 6022, - "src": "3733:22:111", + "referencedDeclaration": 6773, + "src": "3733:22:124", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 68754, + "id": 69540, "isConstant": false, "isLValue": false, "isPure": false, @@ -6028,39 +6044,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3733:51:111", + "src": "3733:51:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68755, + "id": 69541, "nodeType": "ExpressionStatement", - "src": "3733:51:111" + "src": "3733:51:124" }, { "expression": { "arguments": [ { - "id": 68759, + "id": 69545, "name": "openTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68729, - "src": "3817:8:111", + "referencedDeclaration": 69515, + "src": "3817:8:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 68760, + "id": 69546, "name": "pluginDefOpenTask", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68655, - "src": "3827:17:111", + "referencedDeclaration": 69441, + "src": "3827:17:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6079,33 +6095,33 @@ } ], "expression": { - "id": 68756, + "id": 69542, "name": "PlugReg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68422, - "src": "3794:7:111", + "referencedDeclaration": 69208, + "src": "3794:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_PluginRegistry_$6344", + "typeIdentifier": "t_contract$_PluginRegistry_$7095", "typeString": "contract PluginRegistry" } }, - "id": 68758, + "id": 69544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3802:14:111", + "memberLocation": "3802:14:124", "memberName": "addPluginToDAO", "nodeType": "MemberAccess", - "referencedDeclaration": 6022, - "src": "3794:22:111", + "referencedDeclaration": 6773, + "src": "3794:22:124", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) payable external" } }, - "id": 68761, + "id": 69547, "isConstant": false, "isLValue": false, "isPure": false, @@ -6114,16 +6130,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3794:51:111", + "src": "3794:51:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68762, + "id": 69548, "nodeType": "ExpressionStatement", - "src": "3794:51:111" + "src": "3794:51:124" }, { "expression": { @@ -6133,33 +6149,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68766, + "id": 69552, "name": "LR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68428, - "src": "3865:2:111", + "referencedDeclaration": 69214, + "src": "3865:2:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 68767, + "id": 69553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3868:9:111", + "memberLocation": "3868:9:124", "memberName": "DEFAULT_K", "nodeType": "MemberAccess", "referencedDeclaration": 1460, - "src": "3865:12:111", + "src": "3865:12:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$", "typeString": "function () view external returns (uint16)" } }, - "id": 68768, + "id": 69554, "isConstant": false, "isLValue": false, "isPure": false, @@ -6168,7 +6184,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3865:14:111", + "src": "3865:14:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint16", @@ -6177,14 +6193,14 @@ }, { "hexValue": "3930", - "id": 68769, + "id": 69555, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3881:2:111", + "src": "3881:2:124", "typeDescriptions": { "typeIdentifier": "t_rational_90_by_1", "typeString": "int_const 90" @@ -6196,33 +6212,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68770, + "id": 69556, "name": "LR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68428, - "src": "3885:2:111", + "referencedDeclaration": 69214, + "src": "3885:2:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 68771, + "id": 69557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3888:15:111", + "memberLocation": "3888:15:124", "memberName": "DEFAULT_PENALTY", "nodeType": "MemberAccess", "referencedDeclaration": 1463, - "src": "3885:18:111", + "src": "3885:18:124", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 68772, + "id": 69558, "isConstant": false, "isLValue": false, "isPure": false, @@ -6231,7 +6247,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3885:20:111", + "src": "3885:20:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -6241,14 +6257,14 @@ { "arguments": [ { - "id": 68775, + "id": 69561, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "3915:7:111", + "referencedDeclaration": 69476, + "src": "3915:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -6256,30 +6272,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 68774, + "id": 69560, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3907:7:111", + "src": "3907:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68773, + "id": 69559, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3907:7:111", + "src": "3907:7:124", "typeDescriptions": {} } }, - "id": 68776, + "id": 69562, "isConstant": false, "isLValue": false, "isPure": false, @@ -6288,7 +6304,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3907:16:111", + "src": "3907:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6316,33 +6332,33 @@ } ], "expression": { - "id": 68763, + "id": 69549, "name": "LR", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68428, - "src": "3856:2:111", + "referencedDeclaration": 69214, + "src": "3856:2:124", "typeDescriptions": { "typeIdentifier": "t_contract$_LocalReputation_$2915", "typeString": "contract LocalReputation" } }, - "id": 68765, + "id": 69551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3859:5:111", + "memberLocation": "3859:5:124", "memberName": "setKP", "nodeType": "MemberAccess", "referencedDeclaration": 2658, - "src": "3856:8:111", + "src": "3856:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_uint32_$_t_uint8_$_t_address_$returns$__$", "typeString": "function (uint16,uint32,uint8,address) external" } }, - "id": 68777, + "id": 69563, "isConstant": false, "isLValue": false, "isPure": false, @@ -6351,31 +6367,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3856:68:111", + "src": "3856:68:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68778, + "id": 69564, "nodeType": "ExpressionStatement", - "src": "3856:68:111" + "src": "3856:68:124" }, { "assignments": [ - 68783 + 69569 ], "declarations": [ { "constant": false, - "id": 68783, + "id": 69569, "mutability": "mutable", "name": "adminAddresses", - "nameLocation": "3951:14:111", + "nameLocation": "3951:14:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "3934:31:111", + "scope": 69721, + "src": "3934:31:124", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6384,18 +6400,18 @@ }, "typeName": { "baseType": { - "id": 68781, + "id": 69567, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3934:7:111", + "src": "3934:7:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68782, + "id": 69568, "nodeType": "ArrayTypeName", - "src": "3934:9:111", + "src": "3934:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -6404,19 +6420,19 @@ "visibility": "internal" } ], - "id": 68789, + "id": 69575, "initialValue": { "arguments": [ { "hexValue": "35", - "id": 68787, + "id": 69573, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3982:1:111", + "src": "3982:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" @@ -6431,39 +6447,39 @@ "typeString": "int_const 5" } ], - "id": 68786, + "id": 69572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "3968:13:111", + "src": "3968:13:124", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 68784, + "id": 69570, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3972:7:111", + "src": "3972:7:124", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68785, + "id": 69571, "nodeType": "ArrayTypeName", - "src": "3972:9:111", + "src": "3972:9:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 68788, + "id": 69574, "isConstant": false, "isLValue": false, "isPure": true, @@ -6472,7 +6488,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3968:16:111", + "src": "3968:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -6480,39 +6496,39 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3934:50:111" + "src": "3934:50:124" }, { "expression": { - "id": 68794, + "id": 69580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68790, + "id": 69576, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "3994:14:111", + "referencedDeclaration": 69569, + "src": "3994:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68792, + "id": 69578, "indexExpression": { "hexValue": "30", - "id": 68791, + "id": 69577, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4009:1:111", + "src": "4009:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -6524,7 +6540,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3994:17:111", + "src": "3994:17:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6534,61 +6550,61 @@ "operator": "=", "rightHandSide": { "hexValue": "307831623430336666364542333744323564434362413035343036333744363535353066383461434233", - "id": 68793, + "id": 69579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4014:42:111", + "src": "4014:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x1b403ff6EB37D25dCCbA0540637D65550f84aCB3" }, - "src": "3994:62:111", + "src": "3994:62:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68795, + "id": 69581, "nodeType": "ExpressionStatement", - "src": "3994:62:111" + "src": "3994:62:124" }, { "expression": { - "id": 68800, + "id": 69586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68796, + "id": 69582, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "4066:14:111", + "referencedDeclaration": 69569, + "src": "4066:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68798, + "id": 69584, "indexExpression": { "hexValue": "31", - "id": 68797, + "id": 69583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4081:1:111", + "src": "4081:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -6600,7 +6616,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4066:17:111", + "src": "4066:17:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6610,61 +6626,61 @@ "operator": "=", "rightHandSide": { "hexValue": "307833303362323464386242354145443745353535353861454639364232383261383445436661383261", - "id": 68799, + "id": 69585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4086:42:111", + "src": "4086:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x303b24d8bB5AED7E55558aEF96B282a84ECfa82a" }, - "src": "4066:62:111", + "src": "4066:62:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68801, + "id": 69587, "nodeType": "ExpressionStatement", - "src": "4066:62:111" + "src": "4066:62:124" }, { "expression": { - "id": 68806, + "id": 69592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68802, + "id": 69588, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "4138:14:111", + "referencedDeclaration": 69569, + "src": "4138:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68804, + "id": 69590, "indexExpression": { "hexValue": "32", - "id": 68803, + "id": 69589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4153:1:111", + "src": "4153:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" @@ -6676,7 +6692,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4138:17:111", + "src": "4138:17:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6686,61 +6702,61 @@ "operator": "=", "rightHandSide": { "hexValue": "307830394564323342423646394363633346643962334243344338353944303439626634414234443433", - "id": 68805, + "id": 69591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4158:42:111", + "src": "4158:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x09Ed23BB6F9Ccc3Fd9b3BC4C859D049bf4AB4D43" }, - "src": "4138:62:111", + "src": "4138:62:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68807, + "id": 69593, "nodeType": "ExpressionStatement", - "src": "4138:62:111" + "src": "4138:62:124" }, { "expression": { - "id": 68812, + "id": 69598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68808, + "id": 69594, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "4210:14:111", + "referencedDeclaration": 69569, + "src": "4210:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68810, + "id": 69596, "indexExpression": { "hexValue": "33", - "id": 68809, + "id": 69595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4225:1:111", + "src": "4225:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" @@ -6752,7 +6768,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4210:17:111", + "src": "4210:17:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6762,61 +6778,61 @@ "operator": "=", "rightHandSide": { "hexValue": "307833354339324464313146343736383639316530423636643542373335653964644538616245356164", - "id": 68811, + "id": 69597, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4230:42:111", + "src": "4230:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x35C92Dd11F4768691e0B66d5B735e9ddE8abE5ad" }, - "src": "4210:62:111", + "src": "4210:62:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68813, + "id": 69599, "nodeType": "ExpressionStatement", - "src": "4210:62:111" + "src": "4210:62:124" }, { "expression": { - "id": 68818, + "id": 69604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 68814, + "id": 69600, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "4282:14:111", + "referencedDeclaration": 69569, + "src": "4282:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68816, + "id": 69602, "indexExpression": { "hexValue": "34", - "id": 68815, + "id": 69601, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4297:1:111", + "src": "4297:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" @@ -6828,7 +6844,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4282:17:111", + "src": "4282:17:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6838,40 +6854,40 @@ "operator": "=", "rightHandSide": { "hexValue": "307843613061363130413735454131343664346565393438323445383538423336324566343643633239", - "id": 68817, + "id": 69603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4302:42:111", + "src": "4302:42:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0xCa0a610A75EA146d4ee94824E858B362Ef46Cc29" }, - "src": "4282:62:111", + "src": "4282:62:124", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 68819, + "id": 69605, "nodeType": "ExpressionStatement", - "src": "4282:62:111" + "src": "4282:62:124" }, { "expression": { "arguments": [ { - "id": 68823, + "id": 69609, "name": "adminAddresses", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68783, - "src": "4373:14:111", + "referencedDeclaration": 69569, + "src": "4373:14:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -6886,33 +6902,33 @@ } ], "expression": { - "id": 68820, + "id": 69606, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "4355:7:111", + "referencedDeclaration": 69476, + "src": "4355:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } }, - "id": 68822, + "id": 69608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4363:9:111", + "memberLocation": "4363:9:124", "memberName": "addAdmins", "nodeType": "MemberAccess", - "referencedDeclaration": 5508, - "src": "4355:17:111", + "referencedDeclaration": 6259, + "src": "4355:17:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (address[] memory) external returns (address[] memory)" } }, - "id": 68824, + "id": 69610, "isConstant": false, "isLValue": false, "isPure": false, @@ -6921,16 +6937,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4355:33:111", + "src": "4355:33:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 68825, + "id": 69611, "nodeType": "ExpressionStatement", - "src": "4355:33:111" + "src": "4355:33:124" }, { "expression": { @@ -6938,33 +6954,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68826, + "id": 69612, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4398:2:111", + "referencedDeclaration": 13541, + "src": "4398:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68828, + "id": 69614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4401:13:111", + "memberLocation": "4401:13:124", "memberName": "stopBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23194, - "src": "4398:16:111", + "referencedDeclaration": 23945, + "src": "4398:16:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 68829, + "id": 69615, "isConstant": false, "isLValue": false, "isPure": false, @@ -6973,31 +6989,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4398:18:111", + "src": "4398:18:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68830, + "id": 69616, "nodeType": "ExpressionStatement", - "src": "4398:18:111" + "src": "4398:18:124" }, { "assignments": [ - 68832 + 69618 ], "declarations": [ { "constant": false, - "id": 68832, + "id": 69618, "mutability": "mutable", "name": "i", - "nameLocation": "4469:1:111", + "nameLocation": "4469:1:124", "nodeType": "VariableDeclaration", - "scope": 68935, - "src": "4461:9:111", + "scope": 69721, + "src": "4461:9:124", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7005,10 +7021,10 @@ "typeString": "uint256" }, "typeName": { - "id": 68831, + "id": 69617, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4461:7:111", + "src": "4461:7:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7017,17 +7033,17 @@ "visibility": "internal" } ], - "id": 68834, + "id": 69620, "initialValue": { "hexValue": "31", - "id": 68833, + "id": 69619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4473:1:111", + "src": "4473:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7035,27 +7051,27 @@ "value": "1" }, "nodeType": "VariableDeclarationStatement", - "src": "4461:13:111" + "src": "4461:13:124" }, { "body": { - "id": 68933, + "id": 69719, "nodeType": "Block", - "src": "4518:965:111", + "src": "4518:965:124", "statements": [ { "expression": { "arguments": [ { "hexValue": "23232323232323232323232323232323232323232323232323232323232323232323232323232323232323", - "id": 68844, + "id": 69630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4544:45:111", + "src": "4544:45:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_175ba41a75cb8061b0b47576049176e29ea623e7a9753f84a6d27afa699b4675", "typeString": "literal_string \"###########################################\"" @@ -7071,33 +7087,33 @@ } ], "expression": { - "id": 68841, + "id": 69627, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "4532:7:111", + "referencedDeclaration": 33186, + "src": "4532:7:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68843, + "id": 69629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4540:3:111", + "memberLocation": "4540:3:124", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "4532:11:111", + "referencedDeclaration": 25717, + "src": "4532:11:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 68845, + "id": 69631, "isConstant": false, "isLValue": false, "isPure": false, @@ -7106,16 +7122,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4532:58:111", + "src": "4532:58:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68846, + "id": 69632, "nodeType": "ExpressionStatement", - "src": "4532:58:111" + "src": "4532:58:124" }, { "expression": { @@ -7124,14 +7140,14 @@ "arguments": [ { "hexValue": "6f5f6f204163636f756e7420", - "id": 68853, + "id": 69639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4630:14:111", + "src": "4630:14:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9143cf848170f1b327fea944b35785ace3e098a26427574252c023684ee1b97a", "typeString": "literal_string \"o_o Account \"" @@ -7141,12 +7157,12 @@ { "arguments": [ { - "id": 68856, + "id": 69642, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4658:1:111", + "referencedDeclaration": 69618, + "src": "4658:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7161,33 +7177,33 @@ } ], "expression": { - "id": 68854, + "id": 69640, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4646:2:111", + "referencedDeclaration": 13541, + "src": "4646:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68855, + "id": 69641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4649:8:111", + "memberLocation": "4649:8:124", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "4646:11:111", + "referencedDeclaration": 24129, + "src": "4646:11:124", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68857, + "id": 69643, "isConstant": false, "isLValue": false, "isPure": false, @@ -7196,7 +7212,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4646:14:111", + "src": "4646:14:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7216,40 +7232,40 @@ } ], "expression": { - "id": 68851, + "id": 69637, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4616:6:111", + "src": "4616:6:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 68850, + "id": 69636, "name": "string", "nodeType": "ElementaryTypeName", - "src": "4616:6:111", + "src": "4616:6:124", "typeDescriptions": {} } }, - "id": 68852, + "id": 69638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4623:6:111", + "memberLocation": "4623:6:124", "memberName": "concat", "nodeType": "MemberAccess", - "src": "4616:13:111", + "src": "4616:13:124", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 68858, + "id": 69644, "isConstant": false, "isLValue": false, "isPure": false, @@ -7258,7 +7274,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4616:45:111", + "src": "4616:45:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7269,25 +7285,25 @@ "arguments": [ { "baseExpression": { - "id": 68861, + "id": 69647, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "4671:11:111", + "referencedDeclaration": 69377, + "src": "4671:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68863, + "id": 69649, "indexExpression": { - "id": 68862, + "id": 69648, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4683:1:111", + "referencedDeclaration": 69618, + "src": "4683:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7298,7 +7314,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4671:14:111", + "src": "4671:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7313,33 +7329,33 @@ } ], "expression": { - "id": 68859, + "id": 69645, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4663:2:111", + "referencedDeclaration": 13541, + "src": "4663:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68860, + "id": 69646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4666:4:111", + "memberLocation": "4666:4:124", "memberName": "addr", "nodeType": "MemberAccess", - "referencedDeclaration": 22819, - "src": "4663:7:111", + "referencedDeclaration": 23570, + "src": "4663:7:124", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) pure external returns (address)" } }, - "id": 68864, + "id": 69650, "isConstant": false, "isLValue": false, "isPure": false, @@ -7348,7 +7364,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4663:23:111", + "src": "4663:23:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7368,33 +7384,33 @@ } ], "expression": { - "id": 68847, + "id": 69633, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "4604:7:111", + "referencedDeclaration": 33186, + "src": "4604:7:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68849, + "id": 69635, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4612:3:111", + "memberLocation": "4612:3:124", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 25130, - "src": "4604:11:111", + "referencedDeclaration": 25881, + "src": "4604:11:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) view" } }, - "id": 68865, + "id": 69651, "isConstant": false, "isLValue": false, "isPure": false, @@ -7403,30 +7419,30 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4604:83:111", + "src": "4604:83:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68866, + "id": 69652, "nodeType": "ExpressionStatement", - "src": "4604:83:111" + "src": "4604:83:124" }, { "expression": { "arguments": [ { "hexValue": "23232323232323232323232323232323232323232323232323232323232323232323232323232323232323", - "id": 68870, + "id": 69656, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4713:45:111", + "src": "4713:45:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_175ba41a75cb8061b0b47576049176e29ea623e7a9753f84a6d27afa699b4675", "typeString": "literal_string \"###########################################\"" @@ -7442,33 +7458,33 @@ } ], "expression": { - "id": 68867, + "id": 69653, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "4701:7:111", + "referencedDeclaration": 33186, + "src": "4701:7:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68869, + "id": 69655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4709:3:111", + "memberLocation": "4709:3:124", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "4701:11:111", + "referencedDeclaration": 25717, + "src": "4701:11:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 68871, + "id": 69657, "isConstant": false, "isLValue": false, "isPure": false, @@ -7477,41 +7493,41 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4701:58:111", + "src": "4701:58:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68872, + "id": 69658, "nodeType": "ExpressionStatement", - "src": "4701:58:111" + "src": "4701:58:124" }, { "expression": { "arguments": [ { "baseExpression": { - "id": 68876, + "id": 69662, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "4792:11:111", + "referencedDeclaration": 69377, + "src": "4792:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68878, + "id": 69664, "indexExpression": { - "id": 68877, + "id": 69663, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4804:1:111", + "referencedDeclaration": 69618, + "src": "4804:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7522,7 +7538,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4792:14:111", + "src": "4792:14:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7537,33 +7553,33 @@ } ], "expression": { - "id": 68873, + "id": 69659, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4774:2:111", + "referencedDeclaration": 13541, + "src": "4774:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68875, + "id": 69661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4777:14:111", + "memberLocation": "4777:14:124", "memberName": "startBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23191, - "src": "4774:17:111", + "referencedDeclaration": 23942, + "src": "4774:17:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 68879, + "id": 69665, "isConstant": false, "isLValue": false, "isPure": false, @@ -7572,16 +7588,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4774:33:111", + "src": "4774:33:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68880, + "id": 69666, "nodeType": "ExpressionStatement", - "src": "4774:33:111" + "src": "4774:33:124" }, { "expression": { @@ -7590,14 +7606,14 @@ "arguments": [ { "hexValue": "4d6f6a6f4a6f4a6f5f2d20", - "id": 68887, + "id": 69673, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4936:13:111", + "src": "4936:13:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f0a2e8bcb7190a96462063c51eadfe9f586aa3c75d32c48a0e209524486f27d9", "typeString": "literal_string \"MojoJoJo_- \"" @@ -7607,12 +7623,12 @@ { "arguments": [ { - "id": 68890, + "id": 69676, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4963:1:111", + "referencedDeclaration": 69618, + "src": "4963:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7627,33 +7643,33 @@ } ], "expression": { - "id": 68888, + "id": 69674, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "4951:2:111", + "referencedDeclaration": 13541, + "src": "4951:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68889, + "id": 69675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4954:8:111", + "memberLocation": "4954:8:124", "memberName": "toString", "nodeType": "MemberAccess", - "referencedDeclaration": 23378, - "src": "4951:11:111", + "referencedDeclaration": 24129, + "src": "4951:11:124", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure external returns (string memory)" } }, - "id": 68891, + "id": 69677, "isConstant": false, "isLValue": false, "isPure": false, @@ -7662,7 +7678,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4951:14:111", + "src": "4951:14:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7682,40 +7698,40 @@ } ], "expression": { - "id": 68885, + "id": 69671, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4922:6:111", + "src": "4922:6:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { - "id": 68884, + "id": 69670, "name": "string", "nodeType": "ElementaryTypeName", - "src": "4922:6:111", + "src": "4922:6:124", "typeDescriptions": {} } }, - "id": 68886, + "id": 69672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4929:6:111", + "memberLocation": "4929:6:124", "memberName": "concat", "nodeType": "MemberAccess", - "src": "4922:13:111", + "src": "4922:13:124", "typeDescriptions": { "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)" } }, - "id": 68892, + "id": 69678, "isConstant": false, "isLValue": false, "isPure": false, @@ -7724,7 +7740,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4922:44:111", + "src": "4922:44:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -7733,14 +7749,14 @@ }, { "hexValue": "687474703a2f2f49616d616e55524c2e78797a2e6162632e636f6d", - "id": 68893, + "id": 69679, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4984:29:111", + "src": "4984:29:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_05d91e67b153d5fda85d96e572897466d8e3150e6f8a4e33bcb53efa9f25c2eb", "typeString": "literal_string \"http://IamanURL.xyz.abc.com\"" @@ -7753,7 +7769,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68898, + "id": 69684, "isConstant": false, "isLValue": false, "isPure": false, @@ -7763,18 +7779,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68896, + "id": 69682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68894, + "id": 69680, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "5031:1:111", + "referencedDeclaration": 69618, + "src": "5031:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7784,21 +7800,21 @@ "operator": "%", "rightExpression": { "hexValue": "32", - "id": 68895, + "id": 69681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5035:1:111", + "src": "5035:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, - "src": "5031:5:111", + "src": "5031:5:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7808,21 +7824,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 68897, + "id": 69683, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5040:1:111", + "src": "5040:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5031:10:111", + "src": "5031:10:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7830,37 +7846,37 @@ }, "falseExpression": { "hexValue": "33", - "id": 68900, + "id": 69686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5048:1:111", + "src": "5048:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, - "id": 68901, + "id": 69687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "5031:18:111", + "src": "5031:18:124", "trueExpression": { "hexValue": "31", - "id": 68899, + "id": 69685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5044:1:111", + "src": "5044:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -7878,7 +7894,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68906, + "id": 69692, "isConstant": false, "isLValue": false, "isPure": false, @@ -7888,18 +7904,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68904, + "id": 69690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68902, + "id": 69688, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "5067:1:111", + "referencedDeclaration": 69618, + "src": "5067:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7909,21 +7925,21 @@ "operator": "+", "rightExpression": { "hexValue": "33", - "id": 68903, + "id": 69689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5071:1:111", + "src": "5071:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, - "src": "5067:5:111", + "src": "5067:5:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7933,21 +7949,21 @@ "operator": ">", "rightExpression": { "hexValue": "3130", - "id": 68905, + "id": 69691, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5075:2:111", + "src": "5075:2:124", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, - "src": "5067:10:111", + "src": "5067:10:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7958,18 +7974,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68910, + "id": 69696, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68908, + "id": 69694, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "5084:1:111", + "referencedDeclaration": 69618, + "src": "5084:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7979,40 +7995,40 @@ "operator": "+", "rightExpression": { "hexValue": "33", - "id": 68909, + "id": 69695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5088:1:111", + "src": "5088:1:124", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, - "src": "5084:5:111", + "src": "5084:5:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68911, + "id": 69697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", - "src": "5067:22:111", + "src": "5067:22:124", "trueExpression": { - "id": 68907, + "id": 69693, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "5080:1:111", + "referencedDeclaration": 69618, + "src": "5080:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8026,14 +8042,14 @@ { "arguments": [ { - "id": 68914, + "id": 69700, "name": "OurNova", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68690, - "src": "5115:7:111", + "referencedDeclaration": 69476, + "src": "5115:7:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } } @@ -8041,30 +8057,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_INova_$5673", + "typeIdentifier": "t_contract$_INova_$6424", "typeString": "contract INova" } ], - "id": 68913, + "id": 69699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5107:7:111", + "src": "5107:7:124", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 68912, + "id": 69698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5107:7:111", + "src": "5107:7:124", "typeDescriptions": {} } }, - "id": 68915, + "id": 69701, "isConstant": false, "isLValue": false, "isPure": false, @@ -8073,7 +8089,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5107:16:111", + "src": "5107:16:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -8105,33 +8121,33 @@ } ], "expression": { - "id": 68881, + "id": 69667, "name": "aID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68425, - "src": "4896:3:111", + "referencedDeclaration": 69211, + "src": "4896:3:124", "typeDescriptions": { "typeIdentifier": "t_contract$_AutID_$1016", "typeString": "contract AutID" } }, - "id": 68883, + "id": 69669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4900:4:111", + "memberLocation": "4900:4:124", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 282, - "src": "4896:8:111", + "src": "4896:8:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (string memory,string memory,uint256,uint256,address) external" } }, - "id": 68916, + "id": 69702, "isConstant": false, "isLValue": false, "isPure": false, @@ -8140,16 +8156,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4896:241:111", + "src": "4896:241:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68917, + "id": 69703, "nodeType": "ExpressionStatement", - "src": "4896:241:111" + "src": "4896:241:124" }, { "documentation": "Agent does reputation bearing task 2", @@ -8157,14 +8173,14 @@ "arguments": [ { "hexValue": "23232323232323232323232323232323232323232323232323232323232323232323232323232323232323", - "id": 68921, + "id": 69707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5334:45:111", + "src": "5334:45:124", "typeDescriptions": { "typeIdentifier": "t_stringliteral_175ba41a75cb8061b0b47576049176e29ea623e7a9753f84a6d27afa699b4675", "typeString": "literal_string \"###########################################\"" @@ -8180,33 +8196,33 @@ } ], "expression": { - "id": 68918, + "id": 69704, "name": "console", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 32435, - "src": "5322:7:111", + "referencedDeclaration": 33186, + "src": "5322:7:124", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$32435_$", + "typeIdentifier": "t_type$_t_contract$_console_$33186_$", "typeString": "type(library console)" } }, - "id": 68920, + "id": 69706, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5330:3:111", + "memberLocation": "5330:3:124", "memberName": "log", "nodeType": "MemberAccess", - "referencedDeclaration": 24966, - "src": "5322:11:111", + "referencedDeclaration": 25717, + "src": "5322:11:124", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) view" } }, - "id": 68922, + "id": 69708, "isConstant": false, "isLValue": false, "isPure": false, @@ -8215,16 +8231,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5322:58:111", + "src": "5322:58:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68923, + "id": 69709, "nodeType": "ExpressionStatement", - "src": "5322:58:111" + "src": "5322:58:124" }, { "expression": { @@ -8232,33 +8248,33 @@ "expression": { "argumentTypes": [], "expression": { - "id": 68924, + "id": 69710, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12790, - "src": "5395:2:111", + "referencedDeclaration": 13541, + "src": "5395:2:124", "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$24371", + "typeIdentifier": "t_contract$_Vm_$25122", "typeString": "contract Vm" } }, - "id": 68926, + "id": 69712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5398:13:111", + "memberLocation": "5398:13:124", "memberName": "stopBroadcast", "nodeType": "MemberAccess", - "referencedDeclaration": 23194, - "src": "5395:16:111", + "referencedDeclaration": 23945, + "src": "5395:16:124", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external" } }, - "id": 68927, + "id": 69713, "isConstant": false, "isLValue": false, "isPure": false, @@ -8267,25 +8283,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5395:18:111", + "src": "5395:18:124", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 68928, + "id": 69714, "nodeType": "ExpressionStatement", - "src": "5395:18:111" + "src": "5395:18:124" }, { - "id": 68932, + "id": 69718, "nodeType": "UncheckedBlock", - "src": "5427:46:111", + "src": "5427:46:124", "statements": [ { "expression": { - "id": 68930, + "id": 69716, "isConstant": false, "isLValue": false, "isPure": false, @@ -8293,14 +8309,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "5455:3:111", + "src": "5455:3:124", "subExpression": { - "id": 68929, + "id": 69715, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "5457:1:111", + "referencedDeclaration": 69618, + "src": "5457:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8311,9 +8327,9 @@ "typeString": "uint256" } }, - "id": 68931, + "id": 69717, "nodeType": "ExpressionStatement", - "src": "5455:3:111" + "src": "5455:3:124" } ] } @@ -8324,18 +8340,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 68840, + "id": 69626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 68837, + "id": 69623, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4493:1:111", + "referencedDeclaration": 69618, + "src": "4493:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8345,57 +8361,57 @@ "operator": "<", "rightExpression": { "expression": { - "id": 68838, + "id": 69624, "name": "privateKeys", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "4497:11:111", + "referencedDeclaration": 69377, + "src": "4497:11:124", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 68839, + "id": 69625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4509:6:111", + "memberLocation": "4509:6:124", "memberName": "length", "nodeType": "MemberAccess", - "src": "4497:18:111", + "src": "4497:18:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4493:22:111", + "src": "4493:22:124", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 68934, + "id": 69720, "initializationExpression": { "expression": { - "id": 68835, + "id": 69621, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68832, - "src": "4490:1:111", + "referencedDeclaration": 69618, + "src": "4490:1:124", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 68836, + "id": 69622, "nodeType": "ExpressionStatement", - "src": "4490:1:111" + "src": "4490:1:124" }, "nodeType": "ForStatement", - "src": "4485:998:111" + "src": "4485:998:124" } ] }, @@ -8404,20 +8420,20 @@ "kind": "function", "modifiers": [], "name": "run", - "nameLocation": "2265:3:111", + "nameLocation": "2265:3:124", "parameters": { - "id": 68585, + "id": 69371, "nodeType": "ParameterList", "parameters": [], - "src": "2268:2:111" + "src": "2268:2:124" }, "returnParameters": { - "id": 68586, + "id": 69372, "nodeType": "ParameterList", "parameters": [], - "src": "2278:0:111" + "src": "2278:0:124" }, - "scope": 68937, + "scope": 69723, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -8427,44 +8443,44 @@ "baseContracts": [ { "baseName": { - "id": 68412, + "id": 69198, "name": "Script", "nameLocations": [ - "944:6:111" + "944:6:124" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 12845, - "src": "944:6:111" + "referencedDeclaration": 13596, + "src": "944:6:124" }, - "id": 68413, + "id": 69199, "nodeType": "InheritanceSpecifier", - "src": "944:6:111" + "src": "944:6:124" } ], "canonicalName": "Populate", "contractDependencies": [ - 7056, - 7390, - 7405 + 7807, + 8141, + 8156 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 68937, - 12845, - 22627, - 17061, - 15001, - 12806, - 12794 + 69723, + 13596, + 23378, + 17812, + 15752, + 13557, + 13545 ], "name": "Populate", - "nameLocation": "932:8:111", - "scope": 68938, + "nameLocation": "932:8:124", + "scope": 69724, "usedErrors": [] } ], "license": "UNLICENSED" }, - "id": 111 + "id": 124 } \ No newline at end of file